[대규모 스트림] CQRS

RyECODING·2024년 8월 19일

MSA

목록 보기
12/15

CQRS : 명령(Command)과 조회(Query)의 책임을 분리하는 소프트웨어 디자인 패턴

  • 읽기 작업과 쓰기 작업을 서로 다른 모델로 분리하여, 각 작업에 최적화된 구조를 사용할 수 있도록 함.
  • 시스템의 성능, 확장성, 유지보수성을 향상시키는 데 도움이 됨.

✅ 주요 개념

✔️ 명령(Command)

  • 데이터를 변경하는 작업
    : 주문 생성, 결제 처리, 계정 업데이트 등
  • 데이터베이스에 대한 쓰기 작업 수행
  • 명령 모델을 데이터의 상태 변경을 담당
    -> 복잡한 비지니스 로직을 포함할 수 있고, 데이터의 무결성을 보장하기 위해 트랜잭션 사용

✔️ 조회(Query)

  • 데이터를 조회하는 작업
    : 주문 내역 조회, 계정 정보 조회 등
  • 데이터베이스에 대한 읽기 작업 수행
  • 읽기 전용 데이터베이스 또는 캐시를 사용하여 빠른 응답 제공
    -> 단순한 데이터 조회를 위한 최적화된 구조 가질 수 있음.

✅ CQRS 장단점

✔️ 장점

  • 성능 향상
    : 읽기와 쓰기를 분리하여 각 작업에 최적화된 데이터 저장소와 인프라 사용 가능
  • 확장성
    : 읽기와 쓰기를 독립적으로 확장 가능
  • 유지보수성
    : 비지니스 로직이 명령 모델로 집중 -> 복잡한 상태 변경 로직을 관리하기 용이함.
    : 읽기 모델은 단순화 -> 유지보수에 용이
  • 데이터 일관성
    : CQRS는 이벤트 소싱과 잘 어울림
    : 이벤트 소싱을 통해 데이터 상태 변경을 이벤트로 기록, 재생하여 현재 상태 유지 가능 -> 데이터 일관성 보장

✔️ 단점

  • 복잡성 증가
    : 시스템 설계와 구현의 복잡성 증가
    : 명령 모델과 조회 모델을 각각 설계하고 관리하기 때문
  • 데이터 동기화
    : 명령 모델과 조회 모델 간의 데이터 동기화 필요 -> 추가적인 구현과 관리가 필요
profile
례코드

0개의 댓글