티스토리 뷰

728x90
반응형

CQRS는 CUD와 R을 구분하는 방식을 의미한다.

  • CUD : 데이터의 변형이 발생하는 경우를 Command로 표현

  • R : 조회와 같은 역할을 Query로 표현

각각의 역할을 구분하여 처리하는 애플리케이션을 구성하고 Event Store는 하나의 RDBMS 또는 CUD는 RDBMS, R은 NoSQL로 구성하여 중계 브로커를 통해 CUD 결과를 NoSQL과 동기화 하는 방식을 적용할 수 있다.

이는 브로커의 가용성과 신뢰도가 보장되어야 하는 위험요소가 존재하지만, 높은 성능을 낼 수 있다.

 

CQRS가 적용되지 않은 마이크로서비스의 경우 여러 서비스에 혼합된 데이터를 조합하기 위해 Composite Application이 별도로 구성되어야 하며, 각 서비스 간 결합도가 높아지는 결과가 나타난다.

반면에 위와 같이 CQRS를 구성하는 경우 CUD DB와 Read Only DB 간의 데이터 동기화를 위해 Queue를 구성하여 Query Service에서 조회에 사용할 데이터를 미리 고속으로 데이터베이스에 전송하여 조회 시간을 줄여주는 방식을 사용한다. 이와 같은 경우 서비스 간 결합도를 낮추고 독립적인 서비스 구성이 가능해 진다. 다만, Queue를 비동기로 전송할 수 있는 Backing 서비스 구성 및 데이터 동기화를 위한 데이터 전송 / 데이터 수신 구문이 각각 개발되어야 한다.

728x90
반응형