CQRS 이벤트는 쓰기 성공을 읽기 모델에 늦게 반영한다

CommandHandler는 트랜잭션을 끝낸 뒤 이벤트를 발행하고, EventHandler는 화면 조회에 맞는 projection을 갱신한다.

Aggregate / Write Model

규칙을 통과한 상태

사용자 생성처럼 검증을 통과한 변경만 저장하고 이벤트를 남긴다.

CreateUserCommand 처리

EventBus / EventHandler

변경 사실을 전달

UserCreatedEvent를 받아 검색 색인, 통계, 캐시처럼 읽기 모델을 갱신한다.

Projection / Read Model

조회 화면에 맞춘 모델

목록, 상세, 검색 화면에서 바로 읽을 수 있는 형태로 저장한다.

생성한 기록쓰기 직후 조회가 늦게 보일 수 있음을 UX 문구와 재시도 정책에 둔다.

재계산 기준이벤트 핸들러는 중복 실행되어도 같은 결과가 나오도록 설계한다.

결과 기준이벤트 발행, 처리 시간, projection 갱신 실패를 추적한다.