핵심 인사이트 (3줄 요약)

  • 탈중앙화된 제어: 중앙 오케스트레이터 없이 각 마이크로서비스가 이벤트를 발행하고 구독하며 자율적으로 트랜잭션을 연쇄 진행하는 방식이다.
  • 느슨한 결합: 서비스 간 직접적인 호출이 없어 독립성이 매우 높고, 새로운 단계를 추가하기 쉬운 유연한 구조를 가진다.
  • 관측성 확보 필수: 전체 비즈니스 흐름을 한눈에 파악하기 어렵기 때문에, 분산 추적(Tracing)과 모니터링 시스템 구축이 반드시 병행되어야 한다.

Ⅰ. 개요 (Context & Background)

사가 패턴의 두 구현 방식 중 하나인 코레오그래피(Choreography)는 말 그대로 각 무용수가 정해진 안무 없이 상대의 움직임을 보고 반응하듯 시스템이 동작한다. 서비스 간의 결합도를 극한으로 낮추고자 하는 클라우드 네이티브 설계에서 가장 선호되는 비동기 트랜잭션 관리 기법이다.

Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

이 방식은 이벤트 브로커(Kafka, RabbitMQ 등)를 중심으로 메시지 기반 통신을 수행한다.

[ Order Service ] --(OrderCreated)--> [ Message Broker ]
       ^                                    |
       |                                    v
[ Customer Service ] <--(Success/Fail)------|
       |                                    v
       +---(CreditReserved)-------------> [ Message Broker ]
                                            |
                                            v
[ Inventory Service ] <---------------------+

<Bilingual ASCII Diagram: Choreography Saga Flow>
- Event Pub/Sub: 서비스 A가 일을 마치고 이벤트를 쏘면, 이를 기다리던 서비스 B가 반응.
- Decentralized: "누가 다음 일을 해야 해"라고 지시하는 사람이 아무도 없음.
- Implicit Flow: 비즈니스 흐름이 명시적인 코드가 아닌 서비스 간의 '이벤트 구독 관계'로 정의됨.

Ⅲ. 융합 비교 및 다각도 분석 (Comparison & Synergy)

비교 항목코레오그래피 사가 (Choreography)오케스트레이션 사가 (Orchestration)
중앙 집중없음 (완전 분산)있음 (Saga Orchestrator 존재)
추가/수정새 구독자만 추가하면 됨 (유연)중앙 컨트롤러 코드를 수정해야 함
순환 참조설계 미흡 시 무한 루프 위험중앙에서 제어하므로 루프 방지 용이
디버깅이벤트를 일일이 따라가야 함 (복잡)중앙 로그에서 흐름 확인 가능 (용이)

Ⅳ. 실무 적용 및 기술사적 판단 (Strategy & Decision)

  • 기술사적 판단: 코레오그래피 사가는 서비스가 2~4개 정도로 적고 업무 흐름이 단순할 때 최적이다. 만약 서비스가 수십 개로 늘어나면 흐름이 엉켜 '스파게티 이벤트'가 될 위험이 크다.
  • 실무 전략: 분산 추적 도구(Jaeger, Zipkin)와 전사 이벤트 사전(Event Schema Registry)을 도입하여, 보이지 않는 비즈니스 흐름을 가시화(Observability)해야 한다.

Ⅴ. 기대효과 및 결론 (Future & Standard)

코레오그래피 사가는 진정한 의미의 마이크로서비스 독립성을 달성하게 해준다. 이벤트 기반 아키텍처(EDA)와 결합하여 고도의 확장성과 장애 내성을 갖춘 시스템을 구축할 수 있으며, 클라우드 아키텍트라면 복잡도와 유연성 사이의 균형을 맞추기 위해 반드시 숙달해야 할 핵심 기술이다.

📌 관련 개념 맵 (Knowledge Graph)

  • 상위 개념: 사가 패턴 (Saga Pattern), 이벤트 주도 아키텍처 (EDA)
  • 하위 개념: Pub/Sub, 비동기 메시징, 보상 트랜잭션
  • 연관 개념: 오케스트레이션 사가, 마이크로서비스(MSA), 분산 추적(Jaeger)

👶 어린이를 위한 3줄 비유 설명

  • 춤추기: 선생님 없이 친구들이 옆 친구의 춤을 보고 다음 춤을 따라 하는 것과 같아요.
  • 자율 행동: 앞 친구가 손을 들면 나도 손을 들고, 내가 손을 들면 뒷 친구가 발을 차는 식이에요.
  • 결론: 누가 시키지 않아도 친구들이 서로 신호를 주고받으며 멋진 춤을 완성하는 거예요!