X

CQRS 패턴

  • CQRS (Command Query Responsibility Segregation): 명령과 조회 책임 분리

1. CQRS 패턴의 개념 및 특징

개념 특징
데이터 저장소의 성능, 확장성, 일관성 확보를 위해 데이터의 명령(Command)과 조회(Query) 작업을 분리하는 디자인 패턴 – 공동 작업 환경에서 데이터 일관성 보장
– 읽기/쓰기 작업 불균형 시 DB 성능 확보
– 시스템 확장 등 환경 변화 영향 최소화
– DB 간 동기화 로직에 따른 복잡성 증가
  • CQRS 패턴은 높은 복잡성을 감수하고 데이터 저장소의 성능, 확장성, 일관성 확보를 위해 사용
  • CRUD를 분리하여 Create, Update, Delete 작업은 Write DB에서, Select 작업은 Read DB에서 수행

 

2. CQRS 패턴의 메커니즘 및 기술 요소

(1) CQRS 패턴의 메커니즘

# 메커니즘 세부 동작 방식
데이터 변경 User는 Write API를 통해 Write DB에 데이터를 삽입/수정/삭제
데이터 동기화 Wirte DB에서 Read DB로 데이터 동기화
데이터 읽기 User는 Read API를 통해 Read DB에서 데이터를 조회

(2) CQRS 패턴의 기술 요소

구분 기술 요소 역할
기본
모델
Command 모델 – 데이터를 생성, 수정, 삭제하는 변경 작업 (Write Model)
– 데이터베이스에서 데이터를 변경하는 Insert, Update, Delete
Query 모델 – 데이터를 조회하는 읽기 작업 (Read Model)
– 데이터베이스에서 데이터를 가져오는 Select
동기화
방식
이벤트 기반 동기화 – 비동기 방식으로 메시지 브로커 기반 이벤트 발행/구독
– Write DB: 이벤트 발행(Publish), Read DB: 구독(Subscribe)
배치 프로세스 – 주기적으로 명령 모델에서 조회 모델로 데이터를 동기화
– 스케줄러 기반 일정 시간 간격 배치 프로세스 실행
데이터베이스 복제 – 명령 모델의 Write DB의 읽기 전용 복제본을 생성
– 복제본을 Read DB에 반영하고 조회 모델에서 사용
  • Command 모델은 도메인 로직을 반영하여 데이터 일관성 보장에 중점, Query 모델은 빠른 조회에 중점

 

3. CQRS 패턴의 장단점

장점 단점
– 읽기/쓰기 모델 독립적 확장
– 쿼리 최적화 스키마 사용 가능
– 읽기/쓰기 별도 권한 부여 가능
– 이벤트 소싱 패턴 복잡성 증가
– 메시지 중복 등 잠재적 문제
– 변경사항 실시간 반영 어려움
  • 데이터 읽기 및 쓰기 워크로드의 지연 시간 및 일관성 요구사항에 따라 CQRS 패턴 적용 여부 고려 필요

 
[참고]

  • Microsoft, CQRS 패턴, 2025.4
  • MSAP.ai, 이제 나도 MSA 전문가 개념부터 실무까지
Categories: 데이터베이스
도리: