Monolithic Architecture 에서 서비스 규모가 커지면 MSA 를 고려할 수 밖에 없습니다.
MSA는 보통 도메인 단위로 서비스를 분리하는데,
도메인 안에서도 READ 트래픽 처리와 WRITE 트래픽 처리가 확연히 나뉠 수 있습니다.
예를 들어 쇼핑몰 서비스라면 조회 요청이 7~80% 일태고 이를 위해 조회를 처리하는 서비스, 명령을 처리하는 서비스로 다시 두가지 서비스로 나뉠 수 있습니다.
이러한 설계를 Command Query Responsibility Segregation 패턴 이라 부릅니다.
이렇게 CQRS패턴은 MSA 구조에서 자연스럽게 동시에 설계하게 되는 패턴이라고 생각해도 됩니다.
하지만 CQRS 는 복잡성을 안고가야 한다는 커다란 단점이 존재 합니다.
클래스 파일이 많아 진다는 복잡성..
코드 로직의 복잡성..
물리적으로 READ와 COMMAND DB가 분리 되어 관리 포인트 이중화..
DB가 나뉘어져 있으면 동기화는 어떻게..?
DB 동기화 처리를 위한 다시 또 등장하는 이벤트소싱 이란 기술
이벤트소싱을 처리 하기 위한 이벤트 메세징 처리 기술
MQTT? KAFKA?
관련하여 닷넷에서 CQRS패턴에 대한 오버엔지니어링에 대한 토픽을 공유해 드리고자 이 스레드를 생성 합니다.
Medium 포스트 무료 버전 | CQRS in .NET: The Most Overengineered Solution for Simple Problems