Search
Duplicate

CQRS 패턴

Created
2022/12/06 14:42
tags
📟Backend
CQRS 패턴은 Command and Query Responsibility Segregation의 약자로 커멘드(Create, Update, Delete)쿼리(Read)를 분리하는 패턴이다.
주로 MSA나 대형 프로젝트같은 구조가 복잡한 환경에서 DDD와 함께 쓰인다.
점수(국어, 수학 등등..)를 담고 있는 모델 그리고 데이터베이스에 이를 저장한다고 예를 들어보자. 여기에 점수의 합계와 평균을 넣게되면 점수와 상관없는 합계와 평균이 데이터베이스에 함께 저장된다.
이렇게 데이터를 가공하는 경우가 많아지면 로직 하나가 담당하는 책임이 커지게 된다. CQRS 패턴을 적용해서 오직 Read만 하는 쿼리와 나머지 커멘드 로직을 분리시킬 수 있다.
단순하게 커멘드 로직과 쿼리 로직을 분리해서 작성하는 것부터 시작한다.
CQRS에 이벤트소싱(Event Sourcing)을 적용할 수 있다. 커멘드 로직을 통해 이벤트를 만들어 저장하고 쿼리 로직이 이를 조회한다.
이벤트소싱은 비즈니스 로직의 과정을 이벤트로 데이터베이스에 저장하는 방법이다. 데이터의 Create, Update, Delete 모두 하나의 과정으로 본다.
Write전용 데이터베이스와 Read전용 데이터베이스를 분리해서 CQRS 패턴에 적용할 수도 있다.