엄범

 

 

martinfowler.com/bliki/CQRS.html  (번역)

 

CRUD를 모두 같은 모델을 사용해 처리했었다면,

CQRS는 CUD를 Command로, R을 Query로 분리하여 설계하는 방법

 

하지만 문서 전체에서 CQRS는 잘 들어맞는 부분에만 일부 사용할 것을 권장하고 있다.

 

문서에서 발췌

CQRS는 시스템의 특정한 부분(DDD 표현으로는 Bounded Context)에서만 사용돼야 하고, 시스템 전체에서 사용해서는 안 된다.

이러한 사고방식은 각 Bounded Context는 개별적으로 모델링을 해야 한다는 의미다.

(Bounded Context: https://www.martinfowler.com/bliki/BoundedContext.html)

 

많은 정보 시스템들은 정보를 기반으로 한가지 방식으로 읽기와 쓰기를 하는 것에 잘 맞는데, 여기에 CQRS를 더하는 건 불필요한 복잡성을 늘릴 뿐이다.

 

취해야 할 것

  • 하지만 하나의 요청에서 Command와 Query를 분리한다는 컨셉 자체는 언제든 차용할만 함.
  • 이건 기존에도 분리해서 설계하는게 좋은 설계이긴 했음.
  • Query면 Query이고 Command면 Command인 편이 명확하지.
  • Query + Command라는, Query인 줄 알았는데 side-effect를 만드는 작업은 보통 이렇게 묶지 않는 것이 좋다.