[ ddd start! ] 11. CQRS

박병찬·2022년 2월 27일
0

ddd start

목록 보기
11/11

CHAPTER 11. CQRS

1. 단일 모델의 단점

  • 여러 애그리거트에서 데이터를 가져와야 할 경우, 애그리거트를 참조하는 방식을 사용하면 즉시 로딩과 같은 JPA의 쿼리 관련 최적화 기능을 사용할 수 없다.
  • 애그리거트 간의 연관을 ID가 아니라 직접 참조하는 방식으로 연결해도 고민거리가 생긴다.

이런 고민이 발생하는 이유는 시스템의 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하기 때문이다.

구현 복잡도를 낮추기 위해, 상태 변결을 위한 모델과 조회르 위한 모델을 분리할 수 있다.

2. CQRS

CQRS는 Command Query Responsibility Segregation의 약자로 아래 이미지와 같이 상태를 변경하는 명령(Command)을 위한 모델과 상태를 제공하는 조회(Query)를 위한 모델을 분리하는 패턴이다.

  • CQRS는 복잡한 도메인에 적합하다. 이런 도메인에 CQRS를 적용하면 통계를 위한 조회 모델을 별도로 만들기 때문에 조회 때문에 도메인 모델이 복잡해지는것을 막을 수 있다.

  • CQRS를 사용하면 각 모델에 맞는 구현 기술을 선택할 수 있다.

CQRS 장단점

CQRS패턴의 장점중 하나는 명령 모델을 구현할 때 도메인 자체에 집중할 수 있다는 점이다. 또한 조회단위로 캐시 기술을 적용할 수 있고, 조회에 특화된 쿼리를 마음대로 사용할 수 있는 등 조회성능을 향상시키는데 유리하다.

구현해야 할 코드가 많아지며, 더 많은 구현 기술이 필요하다는 것이 단점이다.

profile
안녕하세요

0개의 댓글