ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 11장 - CQRS
    📕 book/도메인 주도 개발 시작하기 2023. 1. 16. 11:05

    📌 단일 모델의 장점


    조회를 하는 과정에 여러 애그리거트의 데이터가 필요한 경우 조회 속도를 빠르게 하기 위해서 구현 방법을 고민해야 한다.

     

    식별자를 이용해 애그리거트를 참조하는 방식

    • 즉시 로딩방식과 같은 JPA의 쿼리 관련 최적화 기능을 사용할 수 없다.

     

    애그리거트 간 연관을 직접 참조하는 방식

    • 조회 화면의 특성에 따라 즉시 로딩, 지연 로딩으로 처리해야 한다.

     

    이런 고민이 발생하는 이유

    • 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하기 때문

     

    ORM 기법은 도메인 상태 변경 기능을 구현하는데 적합하다

    하지만, 여러 애그리거트에서 데이터를 가져오는 기능을 구현하기에는 고려할 것이 많아 복잡하게 만든다.

     

    복잡도를 낮추기 위해 상태 변경을 위한 모델과 조회를 위한 모델을 분리하는 것이 좋다.

    ⭐ CQRS


    💡 CQRS (Command Query Responsibility Segregation)
         상태를 변경하는 명령(command)을 위한 모델과
          상태를 제공하는 조회(query)를 위한 모델을 분리하는 패턴

    상태를 변경하는 범위와 상태를 조회하는 범위가 정확하게 일치하지 않는다.

    따라서, 단일 모델로 두 종류의 기능을 구현하면 모델이 불필요하게 복잡해진다.

     

    일 모델을 사용할 때 발생하는 복잡도를 해결하기 위해 CQRS를 사용한다.

     

    CQRS는 복잡한 도메인에 적합하다.

    • 도메인이 복잡할 수록 명령 기능과 조회 기능이 다루는 데이터 범위의 차이가 난다.

     

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

    • 명령 모델 : JPA
    • 조회 모델 : DB 테이블에서 SQL로 데이터 조회를 할 때 좋은 마이바티스

     

    CQRS 장점

    1. 명령 모델을 구현할 때 도메인 자체에 집중할 수 있다.
    2. 조회 성능을 향상시키는데 유리하다.

     

    단점

    1. 구현해야 할 코드가 더 많다.
    2. 더 많은 구현 기술이 필요하다.

     

    장단점을 고려해 CQRS 패턴을 도입할지 여부를 결정해야 한다.

     

    참고자료

    http://www.yes24.com/Product/Goods/108431347

    https://youtu.be/xf0kXMTFJm8

    댓글

Designed by Tistory.