Command
변경 의도와 불변식
권한, 유효성, 트랜잭션을 한 트랜잭션 안에서 다룬다.
CQRS는 Command와 Query를 물리적으로 나누는 문법이 아니라 변경 규칙, 이벤트, Projection의 책임 경계를 설계하는 방식이다.
Command
권한, 유효성, 트랜잭션을 한 트랜잭션 안에서 다룬다.
Event
outbox나 domain event로 projection과 외부 작업을 깨운다.
Query
목록, 검색, 통계, 캐시처럼 화면/API 요구에 맞춘다.
| 구분 | 책임 | 삶이 변하는 쪽 | NestJS 위치 |
|---|---|---|---|
| Command 변경 요청 | 도메인 규칙과 트랜잭션 | 조회 최적화 코드가 쓰기 규칙을 오염 | CommandBus, Handler |
| Event 변경 결과 | Projection 갱신과 외부 작업 | 복구 기준 없는 느린 반영 위험 | EventBus, outbox worker |
| Query 조회 모델 | 조회 모델과 캐시 최적화 | 읽기 요구 때문에 쓰기 모델이 복잡 | QueryBus, Handler |
도입 기준 쓰기와 조회의 자연스러운 변경 이유가 달라질 때 CQRS 분리 비용이 의미를 가진다.