도메인 주도 개발 시작하기 CQRS ch11

김종완·2023년 11월 9일
1

CQRS

CQRS는 Command Query Responsibility Segregation의 약자로, 명령과 쿼리의 책임을 분리하는 패턴을 의미한다. 명령은 시스템의 상태를 변경하는 작업을 의미하며, 쿼리는 시스템의 상태를 조회하는 작업을 의미한다. 단일 모델로 상태 변경과 조회를 사용하면 모델의 복잡성과 성능에 문제가 발생할 수 있기 때문에 대규모 트래픽이 발생하는 경우 CQRS를 사용하는 것을 생각해볼 수 있다. CQRS는 복잡한 도메인에 적합하다. 도메인이 복잡할수록 명령 기능과 조회 기능이 다루는 데이터 범위에 차이가 난다.

구현 방법

  • 데이터 모델 분리: 읽기와 쓰기 작업에 대해 서로 다른 데이터 모델을 사용한다.
  • 쿼리 캐시: 자주 사용되는 쿼리의 결과를 캐시하여 성능을 향상시킨다.

명령 모델

명령 모델은 CQRS 패턴에서 명령을 처리하는 모델을 의미한다. 명령 모델은 시스템의 상태를 변경하는 작업을 수행한다.

  • 명령 처리 : 명령을 수신하고, 유효성을 검사하고, 처리한다.
  • 상태 변경 : 명령을 처리하여 시스템의 상태를 변경한다.

조회 모델

조회 모델은 CQRS 패턴에서 쿼리를 처리하는 모델을 의미한다. 조회 모델은 시스템의 상태를 조회하는 작업을 수행한다.
조회 모델은 다음 두 가지 역할을 수행한다.

  • 쿼리 처리 : 쿼리를 수신하고, 처리한다.
  • 상태 조회 : 쿼리를 처리하여 시스템의 상태를 조회한다.

CQR 장단점

  • 장점
    • 읽기와 쓰기 작업의 요구 사항이 서로 다른 경우에 유용하다.
    • 명령 모델을 구현할 때 도메인 자체에 집중할 수 있다.
    • 조회 성능을 향상시키는 데 유리하다.
  • 단점
    • 구현해야 할 코드가 더 많아진다.
    • 더 많은 구현 기술이 필요하다.
    • 개발 비용이 증가할 수 있다.
profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글