Skip to content

MicroService Architecture ‐ CQRS Patterns

woo jin edited this page Mar 30, 2026 · 8 revisions

MicroService Architecture - CQRS Patterns

CQRS(Command Query Responsibility Segregation) 패턴

스크린샷 2026-03-30 12 28 18
  • DB를 읽기 및 쓰기 작업으로 분리하는데 이렇게 하는 이유는 비효율적인 조인이나 복잡한 쿼리를 피하기 위해서이다.
    • Command : 데이터 상태를 애플리케이션에 반영 및 변경
    • Query : 복잡한 조인 작업 처리, 결과 반환 용도. 데이터 상태를 애플리케이션에서 변경하지 않는다.

CQRS Level 1 정리

image
  • 분리 수준 : Controller 및 Service만 분리
  • 장점 : 간단한 구조, 구현 난이도 낮음
  • 단점 : 성능상 큰 장점은 없음, 확장성 제한적

CQRS Level 2 정리

image
  • 분리 수준 : Controller, Service, DB 스키마 분리
  • 장점 : 읽기 모델을 조회 최적화하여 성능 향상 가능
  • 단점 : 구현 및 관리 복잡성 증가

CQRS Level 3 정리

image
  • 분리 수준 : Controller, Service, DB 스키마, 물리적 DB 분리
  • 장점 : 읽기/쓰기 성능 및 확장성 극대화
  • 단점 : 복잡성, 비용, 관리 난이도 증가

CQRS(Command Query Responsibility Segregation) - Read and Write Operations

스크린샷 2026-03-30 12 28 18
  • DB 읽기 및 쓰기에 서로 다른 접근 방식으로 서로 다른 전략을 정의한다.
  • 이렇게 하는 이유는 읽기 및 쓰기 작업이 성능과 확장성 요구 사항이 다르기 때문이다.

CQRS(Command Query Responsibility Segregation) - Sync with Read and Write DB

  • Read/Write DB 모두 동기화 유지한다.
    • 동기화의 수단으로 메시지 브로커를 사용한다.
    • Pub/Sub 패턴을 적용하는 메시지 브로커를 두게 되면 약간의 지연은 발생할 수 있다.
    • 이와 같은 방식을 최종적 일관성(Eventual Consistency)이라고 한다.
  • Read DB에서 구독하기 위한 이벤트를 발행하면 Read DB는 Write DB로부터 동기화를 거쳐 Read Table 어

📖 Java

📖 Kotlin

📖 Coroutine

📖 Spring

📖 Spring Security

📖 Spring Batch

📖 Reactive Programming

📖 Database

📖 MySQL

📖 Redis

📖 JPA

📖 QueryDsl

📖 MSA

📖 Kafka

📖 Apache Flink

  • [Apache Flink - Apache Flink Architecture]
  • [Apache Flink - Stream Processing]
  • [Apache Flink - Data Stream API & Window]
  • [Apache Flink - State Management]

📖 HTTP

📖 AWS

📖 Docker

📖 Kubernetes

📖 CI/CD

📖 Nginx

📖 Monitoring🥈

  • [Monitoring - Log Concept]
  • [Monitoring - Log Level & Filter]
  • [Monitoring - Logback]
  • [Monitoring - Log Collection with ELK Stack]
  • [Monitoring - Log Monitoring with Kibana]
  • [Monitoring - Building a Monitoring System with Spring Boot Actuator]
  • [Monitoring - Server Monitoring with Prometheus and Grafana with Discord Alerts]

📖 Test

📖 Effective Java 3/E

📖 Kotlin Academy - Effective Kotlin

📖 Kotlin Academy - 핵심편

📖 스프링으로 시작하는 리액티브 프로그래밍

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2

📖 Clean Code

📖 리팩토링 2판

📖 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식

📖 GraphQL

Clone this wiki locally