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

ParkIsComing·2023년 5월 1일
0

CQRS란?

  • Command Query Responsibility Segregation
  • 상태를 변경하는 명령(Command)을 위한 모델과 상태를 조회(Query)하는 모델을 분리하는 패턴
  • 복잡한 도메인에 적합하다.
  • 각 모델에 맞는 구현기술을 선택할 수 있다.
  • 명령 모델은 상태를 변경하는 도메인 로직을 수행하는 데 초점을 맞춰 설계한다.
  • 조회 모델은 화면에 보여줄 데이터를 조회하는 데 초점을 맞춰 설계한다.
  • 명령 모델과 조회 모델이 서로 다른 데이터 저장소를 사용할 경우 데이터 동기화 시점에 따라 구현 방식이 달라지 수 있다.
    • 명령 모델 데이터가 바뀌자마자 조회 모델에 반영해야 함 -> 동기 이벤트 & 글로벌 트랜잭션을 이용한 실시간 동기화
    • 특정 시간 안에만 동기화하면 된다 -> 비동기로 데이터 전송

배달의 민족도 서비스 전체를 CQRS 시스템으로 변경하였다.

CQRS의 장단점

장점

  • 명령 모델을 구현할 때 도메인 자체에 집중할 수 있다.
  • 명령 모델에서 조회 관련 로직이 사라져 복잡도가 낮아진다.
  • 조회 성능을 향상시키는 데에 유리하다.

단점

  • 구현해야할 코드 증가
  • 더 많은 구현 기술이 필요

책 <도메인 주도 개발 시작하기>에 대한 포스팅 시리즈가 끝났다.🥰 MSA가 각광받는 시점에서 DDD는가장 주목받는 아키텍쳐인 것 같다. 코드를 개선하기 위해 적용해보고 싶은 내용들이 많았다. 다음에는 책에서 배운 개념을 실제 개발해 적용해보려 한다.

0개의 댓글