Command side
검증과 트랜잭션을 가진 쓰기 모델
Command
사용자의 변경 의도
Handler
권한, 검증, 트랜잭션
Aggregate
불변식과 상태 변경
같은 데이터를 쓰더라도 변경 규칙과 조회 최적화는 서로 다른 속도로 변한다.
Command side
Command
사용자의 변경 의도
Handler
권한, 검증, 트랜잭션
Aggregate
불변식과 상태 변경
Query side
Query
입력과 필터 조건
Read model
목록/상세/검색 구조
Cache
조회 성능 최적화
| 질문 | Command 쪽 힌트 | Query 쪽 힌트 | 결정 |
|---|---|---|---|
| 상태 변경이 복잡한가? | 도메인 규칙, 트랜잭션, 이벤트 필요 | 단순 조회에는 과한 구조 | 쓰기 모델 분리 |
| 읽기 요구가 다른가? | 원본 모델 유지 | projection, search index, cache 사용 | 읽기 모델 분리 |
| 지연을 허용하는가? | 변경 성공을 먼저 확정 | eventual consistency 표시 필요 | UX 기준 명시 |
판단 기준 Command와 Query의 변경 이유가 다르고 조회 최적화가 쓰기 규칙을 오염시키기 시작하면 CQRS가 값을 한다.