도메인 주도 개발 시작하기 : 11장 CQRS

일단 해볼게·2025년 9월 7일
0

book

목록 보기
27/31
post-thumbnail

11.1 단일 모델의 단점

  • 여러 애그리거트의 데이터가 필요하면 구현 방법 고민해야한다.
    • 방법
      • JPA
      • 네이티브 쿼리
    • 이유
      • ORM은 도메인 상태 변경 기능을 구현하는데 적합하지만 여러 애그리거트에서 데이터를 가져와 출력하는 기능을 구현하기에는 고려할게 많아 구현이 복잡해진다.
    • 대응방안
      • 상태 변경을 위한 모델과 조회를 위한 모델을 분리

11.2 CQRS

  • 시스템이 제공하는 기능

    • 상태 변경 기능
      • 새로운 주문 생성, 배송지 정보 변경 등
    • 상태 정보 조회 기능
      • 주문 내역 상세 보기, 게시글 목록 보기 등
  • 조회 기능에서 단일 모델일 때 발생하는 복잡도를 해결하기 위한 방법

    • CQRS

      • 명령을 위한 모델과 상태를 제공하는 조회를 위한 모델 분리 패턴
        - 온라인 쇼핑에서 주문/판매 통계를 조회한다고 해보자.
        - 단일 모델이라면 통계값을 빠르게 적용하기 위해 다양한 성능 관련 기능을 모델에 적용해야 한다.
        - → CQRS를 적용하면 통계를 위한 조회 모델을 별도로 만들기 때문에 도메인이 복잡해지는 것을 막을 수 있다.
        - 명령 모델 : JPA / 조회 모델 : 마이바티스, 하이버네이트의 @Subselect

    • 명령 모델 : RDBMS / 조회모델 : NoSQL

    • 데이터 동기화는 이벤트 기반으로 한다.

      • 실시간 : 동기 이벤트, 글로벌 트랜잭션
      • 특정 시간 안에만 동기화 : 비동기로 데이터 전송
  • CQRS 장점

    • 명령 모델을 구현할 때 도메인 자체에 집중 가능
    • 명령 모델에서 조회 관련 로직이 사라져 복잡도가 낮아진다.
    • 조회 단위로 캐싱 가능
    • 조회 전용 저장소 사용하여 처리량 대폭 상승 가능
  • CQRS 단점

    • 구현해야할 코드가 더 많다.
    • 도메인이 단순하거나 트래픽이 적으면 이점이 없다.
    • 더 많은 구현 기술이 필요하다.
      • 동기화를 위한 메세징 시스템
profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글