CQRS
▶아키텍처 다이어그램
점선 애니메이션은 데이터 또는 요청의 흐름 방향을 나타냅니다
쓰기 규칙은 엄격한 정합성을 요구하는데, 읽기 화면은 빠르고 다양한 조합을 원할 때가 많습니다. 하나의 모델로 이 둘을 동시에 만족시키려 하면 도메인 규칙과 조회 최적화가 서로 잡아당깁니다. 캐시를 더하는 정도로는 해결되지 않는 순간이 오면 읽기와 쓰기를 같은 모양으로 유지하는 전제가 부담이 됩니다. CQRS는 이 충돌을 모델 분리로 풀어냅니다.
복잡한 도메인 시스템에서는 쓰기 규칙이 엄격해질수록 조회 요구와 한 모델 안에서 충돌하는 경우가 많았습니다. 동시에 이벤트 스트림과 프로젝션 기반 설계가 현실적인 선택지가 되면서, 읽기와 쓰기를 분리하는 접근이 더 실무적이 되었습니다. CQRS는 단순한 성능 튜닝이 아니라, 서로 다른 질문에 서로 다른 모델로 답하겠다는 설계 선택입니다.
명령 경로는 상태 변경과 검증에 집중하고, 조회 경로는 사용자나 시스템이 읽기 쉬운 형태로 별도 모델을 갖습니다. 둘 사이의 동기화는 이벤트나 비동기 프로젝션을 통해 이뤄지는 경우가 많습니다. 핵심은 같은 데이터를 다루더라도 읽기와 쓰기가 답해야 하는 질문이 다르면 모델도 달라질 수 있다는 점입니다.
CQRS와 Caching은 모두 읽기 성능을 개선할 수 있지만 접근이 다릅니다. Caching은 기존 읽기 모델을 유지한 채 반복 접근을 빠르게 만드는 기법이고, CQRS는 읽기 모델 자체를 조회 패턴에 맞게 다시 설계합니다. 즉 캐시가 가깝게 복사하는 전략이라면, CQRS는 읽기용 표현을 따로 만드는 전략입니다.
읽기 화면이 매우 다양하고 빠른 응답이 필요하지만, 쓰기 쪽은 복잡한 검증과 일관성이 중요한 시스템에서 CQRS는 효과적입니다. 특히 이벤트 기반 갱신과 결합하면 읽기 모델을 유연하게 늘릴 수 있습니다. 다만 운영 복잡도도 커지므로, 단순 조회 개선만 원할 때 무조건 도입할 패턴은 아닙니다.
더 읽어보기
현재 페이지의 개념 설명을 본 뒤 배경 설명과 참고 문서를 이어서 볼 수 있습니다.