Command는 command handler를 실행하기 위한 모든 데이터를 포함
Command Bus는 command를 받아 Command Handler로 라우팅 해줌
Command Handler에서 유형에 관계 없이 logging, validation, authorization을 함
Command Handler는 도메인 오브젝트(Aggregates)를 리파지토리에서 검색하고 상태를 변경 시킵니다.
Aggregates는 비즈니스 로직을 포함하고 있습니다.
Aggregates의 상태 변경으로 도메인 이벤트가 발생합니다.
리파지토리는 Aggregates에 접근할수 있도록 제공합니다.
고유 식별자(Unique identifier)를 사용하여 Aggregates를 조회할수 있도록 되어 있습니다.
Event들에 대한 상태 변경사항을 저장 할 수 있습니다.
Event Bus는 관심있는 Event Listener에게 이벤트를 전달합니다. (동기/비동기)
Event Listener에서는 이벤트를 받고 다룹니다.
몇몇의 핸들러는 쿼리에 사용되는 데이터 소스를 업데이트 하거나 외부 시스템에 메시지를 보냅니다.
이런 식으로 Event Listener를 추가하는 방식으로 컴포넌트 간 느슨하게 결합할 수 있으며 확장할 수 있습니다.
사용자 인터페이스와 data source 사이에 Thin data layer는 쿼리 구현에 대한 인터페이스를 제공합니다.
이 데이터 계층은 쿼리 결과가 포함된 읽기 전용 DTO를 반환합니다.
UI에 따라 DTO가 결정되며 Thin data layer는 UI와 data source 사이에서 쿼리 구현에 대한 인터페이스를 제공합니다.
이 계층에서는 쿼리 결과가 포함된 읽기 전용 DTO를 반환합니다.
Benefits
Command Bus는 command를 받아 Command Handler로 라우팅 해줌
Command Handler에서 유형에 관계 없이 logging, validation, authorization을 함
Command Handler는 도메인 오브젝트(Aggregates)를 리파지토리에서 검색하고 상태를 변경 시킵니다.
Aggregates는 비즈니스 로직을 포함하고 있습니다.
Aggregates의 상태 변경으로 도메인 이벤트가 발생합니다.
리파지토리는 Aggregates에 접근할수 있도록 제공합니다.
고유 식별자(Unique identifier)를 사용하여 Aggregates를 조회할수 있도록 되어 있습니다.
Event들에 대한 상태 변경사항을 저장 할 수 있습니다.
Event Bus는 관심있는 Event Listener에게 이벤트를 전달합니다. (동기/비동기)
Event Listener에서는 이벤트를 받고 다룹니다.
몇몇의 핸들러는 쿼리에 사용되는 데이터 소스를 업데이트 하거나 외부 시스템에 메시지를 보냅니다.
이런 식으로 Event Listener를 추가하는 방식으로 컴포넌트 간 느슨하게 결합할 수 있으며 확장할 수 있습니다.
사용자 인터페이스와 data source 사이에 Thin data layer는 쿼리 구현에 대한 인터페이스를 제공합니다.
이 데이터 계층은 쿼리 결과가 포함된 읽기 전용 DTO를 반환합니다.
UI에 따라 DTO가 결정되며 Thin data layer는 UI와 data source 사이에서 쿼리 구현에 대한 인터페이스를 제공합니다.
이 계층에서는 쿼리 결과가 포함된 읽기 전용 DTO를 반환합니다.
Benefits
- Simplify CQRS based applications
- It has been built and tested against Java8
- Support for Spring Boot AutoConfiguration
- Provide a testing (BDD) infrastructure
Drawbacks
- Still Not Support Cassandra, Kafka
댓글
댓글 쓰기