
CQRS는 Command Query Responsibility Segregation의 약자로, 명령(Command)과 조회(Query)를 위한 책임을 분리하는 패턴입니다. 이 패턴은 소프트웨어 시스템의 구조를 단순화하고 유연성을 높이는 데 도움이 됩니다.
CQRS 패턴에서는 데이터를 조회하는 것과 데이터를 변경하는 것을 별도의 모델로 다룹니다. 간단히 말해, 읽기 모델(Query 모델)과 쓰기 모델(Command 모델)을 분리하여 관리합니다.
CQRS 패턴은 복잡한 도메인 모델과 대규모 시스템에서 특히 유용합니다. 그러나 이 패턴을 도입할 때에는 추가적인 복잡성과 오버헤드를 고려해야 합니다. 따라서 각 프로젝트나 상황에 맞게 적절히 판단하여 도입하는 것이 중요합니다.
- 명령(Command) 모델: 데이터 변경을 처리하는 모델로, 시스템의 상태를 변경하는 작업을 수행합니다. 보통 이 모델은 상태 변경에 대한 도메인 로직을 포함하고, 데이터 저장소에 쓰기 작업을 수행합니다.
- 조회(Query) 모델: 데이터를 조회하는 모델로, 시스템의 상태를 읽는 작업을 수행합니다. 이 모델은 쓰기 모델과 분리되어 있으며, 보통 읽기 최적화를 위해 데이터를 다양한 방식으로 구조화합니다.
- 분리된 저장소: CQRS 패턴에서는 명령 모델과 조회 모델을 위한 별도의 데이터 저장소를 사용하는 것이 일반적입니다. 이를 통해 쓰기 작업과 읽기 작업의 성능 및 확장성을 개선할 수 있습니다.
- 비동기 통신: 명령 모델과 조회 모델 간의 통신은 일반적으로 동기적이 아니라 비동기적으로 이루어집니다. 이를 통해 시스템의 응답 시간을 최적화하고 확장성을 향상시킬 수 있습니다.




- MediatR은 닷넷 개발에서 사용되는 CQRS (Command Query Responsibility Segregation) 패턴을 구현하는 데 도움이 되는 라이브러리입니다. 이 라이브러리는 Mediator 디자인 패턴을 기반으로 하며, 의사소통을 추상화하고 요청과 처리를 분리하여 코드의 의존성을 줄이는 데 사용됩니다.
- Mediator 디자인 패턴은 객체 간의 상호 작용을 중재하는 데 사용되는 행동 패턴입니다. 이 패턴은 객체 간의 직접적인 통신을 방지하고, 중재자를 통해 통신할 수 있도록 합니다. 이를 통해 시스템의 결합도를 낮추고 유지 보수성을 향상시킬 수 있습니다.



