03. MicroService(Outer)

CQRS(Command Query Responsibility Segregation)는 소프트웨어 설계에서 사용되는 패턴

카이저일공 2024. 1. 20. 21:48
CQRS 패턴 정보

CQRS 패턴 정보

가. CQRS의 주요 특징

  • 명확한 책임 분리: 데이터 수정(커맨드)과 조회(쿼리)의 책임을 분리하여, 각각의 작업을 더 효과적으로 처리할 수 있습니다. 이는 시스템의 설계를 단순화하고 유지 보수를 용이하게 합니다.
  • 확장성 향상: 읽기와 쓰기 작업을 독립적으로 확장할 수 있어, 대규모 시스템에서 효율적인 리소스 관리가 가능합니다.
  • 유연한 데이터 모델링: 읽기와 쓰기에 최적화된 별도의 데이터 모델을 사용함으로써, 각각의 작업을 더 효율적으로 처리할 수 있습니다.
  • 성능 최적화: 읽기와 쓰기 작업에 대한 부하를 다르게 관리함으로써, 시스템의 전반적인 성능을 향상시킬 수 있습니다.

나. 장점

  • 대규모 시스템: 대용량 데이터 처리와 복잡한 비즈니스 로직을 갖는 대규모 시스템에서 특히 유용합니다.
  • 복잡한 비즈니스 로직: 명확한 구조를 제공하여, 복잡한 비즈니스 로직을 효과적으로 관리할 수 있습니다.
  • 리포팅 및 분석: 데이터 분석과 리포팅에 최적화된 조회 모델을 제공하여, 효율적인 데이터 처리가 가능합니다.

다. 고려사항

  • 복잡성 증가: 읽기와 쓰기 작업을 위한 별도의 모델을 관리해야 하므로, 시스템의 전반적인 복잡성이 증가할 수 있습니다.
  • 데이터 일관성: 쓰기와 읽기 모델 간의 데이터 동기화를 관리해야 하며, 이는 추가적인 설계 고려사항을 수반합니다.

라. 예시

  • 전자상거래 플랫폼: 주문 처리 시스템에서 주문을 받는 쓰기 작업과 상품 정보를 조회하는 읽기 작업을 분리하여, 각각의 작업을 효율적으로 처리할 수 있습니다.
  • 금융 서비스: 은행 거래 처리 시스템에서 거래 내역을 기록하는 쓰기 작업과 계좌 잔액을 조회하는 읽기 작업을 분리하여, 높은 동시성을 지원합니다.
  • 소셜 네트워크: 사용자의 게시물 업로드와 같은 쓰기 작업과 다른 사용자들의 게시물 읽기 작업을 분리하여, 사용자 경험을 개선합니다.
  • 게임 서버: 플레이어의 동작을 처리하는 쓰기 작업과 게임 상태를 조회하는 읽기 작업을 분리하여, 실시간 반응성을 높입니다.