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

같은 데이터를 쓰더라도 변경 규칙과 조회 최적화는 서로 다른 속도로 변한다.

Command side

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

Command

사용자의 변경 의도

Handler

권한, 검증, 트랜잭션

Aggregate

불변식과 상태 변경

Query side

화면 응답에 맞춘 읽기 모델

Query

입력과 필터 조건

Read model

목록/상세/검색 구조

Cache

조회 성능 최적화

질문Command 쪽 힌트Query 쪽 힌트결정
상태 변경이 복잡한가?도메인 규칙, 트랜잭션, 이벤트 필요단순 조회에는 과한 구조쓰기 모델 분리
읽기 요구가 다른가?원본 모델 유지projection, search index, cache 사용읽기 모델 분리
지연을 허용하는가?변경 성공을 먼저 확정eventual consistency 표시 필요UX 기준 명시

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