CQRS Split

명령은 상태를 바꾸고, 조회는 화면에 맞춘 모델을 읽는다

CQRS의 핵심은 파일 이름을 나누는 것이 아니라 쓰기 규칙과 읽기 최적화가 서로 다른 속도로 변하도록 분리하는 데 있다.

Command side

검증과 트랜잭션을 가진 쓰기 모델

Command사용자의 변경 의도
Handler권한, 검증, 트랜잭션
Aggregate불변식과 상태 전이
Query side

화면 응답에 맞춘 읽기 모델

Query필터와 정렬 조건
Read model목록/통계 전용 구조
Cache조회 성능 최적화
질문 Command 쪽 신호 Query 쪽 신호 결정
상태 전이가 복잡한가규칙과 실패 케이스가 많은가 도메인 규칙, 트랜잭션, 이벤트 필요 단순 조회에는 과한 구조 쓰기 모델 분리
읽기 요구가 다른가목록/통계/검색이 많은가 원본 모델 유지 projection, search index, cache 사용 읽기 모델 분리
지연을 허용하는가쓰기 직후 조회가 늦어도 되는가 변경 성공을 먼저 확정 eventual consistency 표시 필요 UX 기준 명시

판정 기준: Command와 Query의 변경 이유가 다르고, 조회 최적화가 쓰기 규칙을 오염시키기 시작할 때 CQRS가 값을 한다.