Chapter 11. CQRS

beanii·2023년 5월 8일
0

DDD Study

목록 보기
11/11
post-thumbnail

11.1 단일 모델의 단점


  • 식별자를 이용해서 애그리거트를 참조하거나 직접 참조하는 방식으로는 성능 문제가 생김

  • 상태 변경을 위한 모델과 조회를 위한 모델을 분리함으로써 구현 복잡도 낮춤


11.2 CQRS


  • 상태를 변경하는 범위와 상태를 조회하는 범위가 저확하게 일치하지 않기 때문에 단일 모델로 두 종류의 기능을 구현하면 모델이 불필요하게 복잡해짐

  • 단일 모델 사용ㅇ 시에 발생하는 복잡도를 해결하기 위해 사용하는 방법이 CQRS

  • CQRS(Command Query Responsibility Segregation)

    • 상태를 변경하는 명령을 위한 모델과 상태를 제공하는 제회를 위한 모델을 분리하는 패턴
    • 복잡한 도메인에 적절함
    • 각 모델에 맞는 구현 기술 선택 가능(ex. 명령 모델은 JPA사용해서 구현, 조회 모델은 마이바티스 사용해서 구현)

11.2.1 웹과 CQRS

  • 일반적인 웹 서비스: 상태 변경 <<< 상태 조회
    • 조회 성능 높이기 위해 다양한 기법 사용 -> CQRS 적용하는 것과 같은 효과
      • 쿼리 최적화 -> 쿼리 실행 속도 높임
      • 메모리에 조회 데이터 캐싱 해서 응답 속도 높임
      • 조회 전용 저장소 따로 사용
    • 알게 모르게 CQRS 적용, 명시적으로 구분하지 않을 뿐

11.2.2 CQRS 장단점

  • 장점
    • 명령 모델을 구현할 때 도메인 자체에 집중할 수 있음
    • 조회 성능 향상시키는 데 유리함

  • 단점
    • 구현해야 할 코드가 더 많음
    • 더 많은 구현 기술이 필요함

0개의 댓글

관련 채용 정보