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: 데이터베이스
도리: