본문 바로가기

cs(with 매일메일)

[251230화] CQRS 패턴이란 무엇인가요?

시스템은 크게 상태 변경조회 기능을 제공한다.

주문 취소, 결제 기능 -> 상태 변경

주문서 조회, 사용자 조회 -> 조회 

 

명령 쿼리 책임 분리 패턴(Command Query Responsibility Segregation, CQRS)는 상태를 변경하기 위한 명령을 위한 모델과 상태를 제공하는 조회를 위한 모델을 분리하는 패턴을 말한다.

 

예를 들어, Order라는 리소스를 Order(명령용), OrderData(조회용) 2개의 모델로 나누어서 관리할 수 있다.

이때 OrderData를 이용해서 표현 계층에 데이터를 출력하는데 사용하고, 애플리케이션에서는 Order를 활용해서 변경을 수행할 수 있다.

 

장점1. 소프트웨어의 유지보수성을 높일 수 있다.

장점2. 모델별로 성능이나 요구사항에 맞는 데이터베이스나 데이터 접근 기술을 사용할 수 있다. (예를 들어, 명령 모델은 트랜잭션이 지원되는 RDB를 사용하고, 조회 모델을 조회 성능이 높은 NoSQL을 사용할 수 있다)

 

단점1. 구현 코드가 많고, 더 많은 구현기술이 필요하다.