[DDD] 11장. CQRS

매빈·2023년 5월 8일
0

11.1 단일 모델의 단점

  • 여러 애그리거트에서 데이터를 가져와야 할 경우, 애그리거트를 참조하는 방식을 사용하면 즉시 로딩과 같은 JPA의 쿼리 관련 최적화 기능을 사용할 수 없음
  • 애그리거트 간의 연관을 ID가 아니라 직접 참조하는 방식으로 연결해도 고민거리가 생김
    ➡️ 시스템의 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하기 때문
  • 구현 복잡도를 낮추기 위해, 상태 변결을 위한 모델과 조회를 위한 모델을 분리할 수 있음

11.2 CQRS

  • CQRS
    • Command Query Responsibility Segregation의 약자
    • 상태를 변경하는 명령(Command)을 위한 모델과 상태를 제공하는 조회(Query)를 위한 모델을 분리하는 패턴
    • CQRS는 복잡한 도메인에 적합함. 이런 도메인에 CQRS를 적용하면 통계를 위한 조회 모델을 별도로 만들기 때문에 조회 때문에 도메인 모델이 복잡해지는것을 막을 수 있음.
    • CQRS를 사용하면 각 모델에 맞는 구현 기술을 선택할 수 있음.

    CQRS의 장단점

  1. 장점
  • 명령 모델을 구현할 때 도메인 자체에 집중할 수 있음
  • 조회 성능을 향상시키는데 유리함
    • 조회단위로 캐시 기술 적용
    • 조회에 특화된 쿼리를 마음대로 사용
  1. 단점
  • 구현해야 할 코드가 많아짐
  • 더 많은 구현 기술이 필요함

0개의 댓글