정의

CQRS(Command and Query Responsibility Segregation)는 조회(Query)와 변경(Command)의 책임을 분리하는 설계 패턴이다.

CQRS는 데이터를 읽는 모델데이터를 변경하는 모델을 분리해서, 각각의 목적에 맞게 최적화하는 방식이다.
읽기와 쓰기의 요구사항이 다르거나, 조회와 변경의 규모가 크게 다른 시스템에서 자주 사용한다.

🧱 왜 사용하는가

  • 조회와 변경의 요구사항이 서로 다를 때 각각을 최적화할 수 있다.
  • 조회는 단순하고 빠르게, 변경은 안정적으로 처리할 수 있다.
  • 복잡한 도메인에서 책임을 분리하기 쉬워진다.

🧩 장점

  • 읽기와 쓰기를 독립적으로 설계할 수 있다.
  • 조회 모델을 성능 중심으로 바꾸기 쉽다.
  • 변경 로직과 조회 로직이 섞이지 않아 구조가 명확해진다.

⚠️ 단점

  • 구현이 복잡해질 수 있다.
  • 읽기와 쓰기 모델 간 데이터 동기화가 필요하다.
  • 단순한 서비스에는 오히려 과한 설계가 될 수 있다.

🔄 ORM과의 관계

ORM은 주로 DB 테이블과 객체를 매핑하는 데 집중한다.
반면 CQRS는 쓰기와 읽기 책임을 분리하는 설계에 집중한다.
둘은 경쟁 관계라기보다, 필요에 따라 함께 사용할 수 있다.

🧪 적용 시 주의사항

  • 조회 모델과 변경 모델이 너무 멀어지지 않도록 주의한다.
  • 쓰기 후 읽기 반영 지연이 생길 수 있다.
  • 시스템 복잡도와 운영 비용을 함께 고려해야 한다.

연결문서

댓글남기기