CQRS consistency

CQRS 반영 지연

명령은 쓰기 모델을 변경하고 이벤트를 발행하며, 이벤트 핸들러가 읽기 모델을 갱신한 뒤 조회가 최적화된 저장소에서 값을 가져온다.

command

CommandBus.execute()

컨트롤러는 CreateUserCommand처럼 상태 변경 의도를 명령 객체로 만들어 핸들러에 보낸다.

쓰기 시작
handler

쓰기 모델과 비즈니스 규칙

CreateUserHandler는 리포지토리에 저장하고, 성공 후 UserCreatedEvent를 발행한다.

상태 변경
event

EventBus.publish()

읽기 모델 갱신, 알림, 로그 적재 같은 후속 처리를 이벤트 핸들러로 분산한다.

비동기 전파
read

읽기 모델 재구성

Redis, Elasticsearch, Read Replica처럼 조회에 맞춘 저장소에 필요한 필드만 평탄화해 둔다.

조회 최적화
trace

지연과 실패 추적

메시지 큐, 재시도, 분산 로깅으로 이벤트가 읽기 모델까지 도달했는지 추적해야 한다.

운영 관찰