CQRS(Command Query Responsibility Segregation)
Domain Entity Read의 한계
초기 시스템에서는 도메인 엔티티에 대한 CRUD만으로 대부분의 비즈니스 로직이 해결될 수 있지만 시스템이 성장하면 복잡한 쿼리 로직이 증가할 확률이 높아집니다.
복잡한 쿼리 로직이 처음 등장할 때, 유지보수를 위해 성능을 포기하고 JOIN 같은 쿼리문 없이 각 리포지토리에서 필요한 엔티티를 찾아와 조합하는 방식으로 구현하는 선택을 할 수 있습니다. 처음엔 괜찮지만 이런 쿼리가 늘어날 수록 유지보수의 편리함을 넘어선 성능 저하가 생기고, 이를 최적화 하려는 시도나 주장이 팀 내에서 충돌을 일으킬 수 있습니다.
이런 상황에서 조직의 규모가 크다면 또는 서비스 트래픽이 크다면 애플리케이션을 나누는 CQRS를 도입해볼 수 있겠지만, 아직 성장 중인 조직이라면 우선 CQS(Command Query Separation)부터 도입해보는 것이 좋습니다.