---
id: P-REINFORCE-WIKI-8AE6A842
category: Unified
confidence_score: 0.95
tags: ['choreography', 'broker-topology', 'event-driven-architecture', 'saga-pattern', 'mediator-topology', 'architecture-principles']
last_reinforced: 2026-05-02
---

# [[Choreography]]

## 📌 Brief Summary
Choreography(안무)는 중앙 집중식 조정자(Central Coordinator)나 오케스트레이터 없이, 시스템의 구성 요소들이 자율적으로 서로 이벤트를 주고받으며 전체 워크플로우 흐름을 제어하는 방식입니다 [1, 2]. 주로 이벤트 기반 아키텍처(Event-Driven Architecture)의 브로커 토폴로지(Broker Topology)에서 활용되며, 마이크로서비스와 같은 분산 시스템 환경에서 서비스 간의 메시지 흐름을 안정적으로 관리하기 위해 Saga 패턴과 함께 사용되기도 합니다 [2, 3]. 각 컴포넌트가 독립적으로 반응하므로 결합도가 낮고 확장성과 반응성이 매우 뛰어나다는 특징을 가집니다 [1, 2].

## 📖 Core Content
*   **자율적인 이벤트 흐름 제어**: Choreography 방식에서는 이벤트를 관리하고 통제하는 중앙의 이벤트 메디에이터(Mediator)가 존재하지 않습니다 [1, 2]. 대신, 구성 요소(서비스)가 시스템 전체에 이벤트를 브로드캐스트하면, 다른 구성 요소들이 이를 자율적으로 감지하여 처리하거나 무시하는 방식으로 동작합니다 [1].
*   **브로커 토폴로지(Broker Topology)와의 결합**: 이벤트 기반 아키텍처의 흐름 제어 방식 중 하나인 브로커 토폴로지의 근본적인 동작 원리가 바로 이 안무(Choreography) 방식입니다 [2]. 복잡한 중앙 오케스트레이션 없이, 다수의 서비스 간에 메시지를 발행 및 구독하는 과정을 통해 전체 워크플로우를 완수합니다 [1, 3].
*   **높은 비결합성(Decoupling) 및 시스템 확장성**: 중앙 통제가 없기 때문에 특정 컴포넌트가 전체 비즈니스 트랜잭션의 상태를 단독으로 소유하거나 알지 못합니다 [1]. 이로 인해 구성 요소 간의 결합도가 매우 낮게(Highly decoupled) 유지되며, 독립적인 컴포넌트의 확장성, 시스템의 빠른 응답성, 그리고 개별 모듈의 내결함성(Fault tolerance)이 크게 향상됩니다 [1, 2].
*   **Saga 패턴을 통한 분산 트랜잭션 관리**: 여러 서비스에 걸쳐 있는 비즈니스 프로세스에서 일관된 결과를 얻기 위해 Choreography 방식은 Saga 패턴과 결합하여(Choreographed Saga) 분산 명령과 메시지 흐름을 관리하는 데 사용됩니다 [3, 4].

## ⚖️ Trade-offs & Caveats
*   **에러 파악 및 복구의 어려움**: 중앙에서 워크플로우를 제어하지 않으므로 전체적인 프로세스 흐름을 한눈에 파악하기 어렵습니다. 또한 오류가 발생했을 때 이를 추적하고 자동으로 복구하는 메커니즘을 구현하는 것이 매우 까다롭습니다 [2, 5].
*   **분산 트랜잭션의 내재적 위험성**: 시스템에 실패한 작업을 재시작하거나 재실행(Replaying)하는 메커니즘이 기본적으로 내장되어 있지 않기 때문에 분산 트랜잭션 관리에 위험이 따릅니다 [1]. 따라서 오류 처리를 위한 수동 개입(Manual intervention) 전략을 반드시 신중하게 고려해야 합니다 [1].
*   **데이터 일관성(Data Inconsistency) 문제**: 컴포넌트들이 비동기적으로 자율 동작하는 구조 특성상, 일시적으로 시스템 내 데이터 불일치가 발생할 수 있는 주요 원인이 되기도 합니다 [1].

## 🔗 Knowledge Connections

### Related Concepts

#### [아키텍처 토폴로지 및 패턴]
- [[Broker Topology]]
  - 연결 이유: Choreography 방식이 근간을 이루고 있는 이벤트 기반 아키텍처의 핵심 토폴로지입니다 [1, 2].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 중앙 조정자 없이 이벤트 채널(큐 등)과 프로세서만으로 이벤트를 브로드캐스팅하며 동작하는 분산 시스템의 구조적 원리를 이해할 수 있습니다 [1, 6].

- [[Event-Driven Architecture]]
  - 연결 이유: Choreography 방식이 구현되는 상위 아키텍처 패러다임으로, 비동기 이벤트를 통해 시스템이 상호작용합니다 [7, 8].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 상태 변화(이벤트)에 실시간으로 반응하며 확장성이 극대화되는 시스템 전체의 패러다임과 설계 방식을 파악할 수 있습니다 [7, 9].

- [[Saga Pattern]]
  - 연결 이유: Choreography 방식을 통해 여러 마이크로서비스 간의 분산 트랜잭션 및 메시지 흐름을 관리하기 위해 주로 사용되는 협업 패턴입니다 [3, 10].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 각 서비스가 로컬 트랜잭션을 수행하고, 이벤트를 발행하여 다음 단계를 트리거하는 방식(Eventual Consistency)으로 데이터 일관성을 관리하는 기술을 알 수 있습니다 [8, 10].

#### [비교 및 대조 개념]
- [[Mediator Topology]] (또는 Orchestration)
  - 연결 이유: Choreography의 대척점에 있는 방식으로, 중앙의 이벤트 메디에이터가 워크플로우를 오케스트레이션(Orchestration)하여 통제합니다 [1, 2].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 중앙 제어의 부재(Choreography)가 주는 이점(확장성)과 중앙 제어의 존재(Orchestration)가 주는 이점(강력한 에러 처리 및 트랜잭션 복구) 간의 트레이드오프를 명확히 비교할 수 있습니다 [1, 2].

### Deeper Research Questions
- Choreography 방식에서 분산 시스템 간 트랜잭션 실패가 발생했을 때, 데이터의 최종 일관성(Eventual Consistency)을 효과적으로 복구하기 위한 보상 트랜잭션(Compensating Transaction)은 어떻게 설계해야 하는가?
- 에러 발생 시 전체 워크플로우를 파악하기 어려운 Choreography의 치명적인 단점을 보완하기 위해, 분산 트레이싱(Distributed Tracing) 및 관측성(Observability) 도구를 어떻게 적용해야 하는가?
- 중앙 집중형인 Orchestration(Mediator Topology) 방식과 비교하여 Choreography 방식이 구조적으로 더 적합한 특정 비즈니스 도메인이나 시스템 규모(트래픽, 서비스 수 등)는 무엇인가?
- 마이크로서비스 생태계 내에서 Choreography 기반의 통신을 구현할 때, 이벤트 버전 관리(Event schema evolution)와 하위 호환성은 어떤 전략으로 유지해야 하는가?
- 중앙 조정자가 없는 상태에서 비즈니스 워크플로우의 진행 상태와 이벤트 병목 현상을 실시간으로 모니터링할 수 있는 방법론은 무엇인가?

### Practical Application Contexts
- **Implementation:** 마이크로서비스 환경에서 각 서비스가 메시징 브로커(예: Kafka, RabbitMQ)를 통해 이벤트를 발행/구독(Publish-Subscribe)하게 함으로써, 다른 서비스의 비즈니스 로직이나 내부 구현과 철저히 분리되도록 코드를 작성합니다.
- **System Design:** 트래픽 변동이 심하고 고도의 확장성이 최우선으로 요구되나 중앙 조정자로 인한 성능 병목(Bottleneck)이 우려될 때, 시스템 전체를 브로드캐스트 기반의 Choreography 워크플로우로 설계합니다.
- **Operation / Maintenance:** 개별 마이크로서비스의 오류 격리(Fault isolation)에는 유리하지만 비즈니스 흐름 전체의 에러 파악은 매우 어렵습니다. 따라서 모든 이벤트에 상관관계 ID(Correlation ID)를 부여하여 분산된 구성 요소 전반의 흐름을 추적(Trace)할 수 있는 인프라 운영이 필수적입니다.
- **Learning Path:** 이벤트 기반 아키텍처(EDA)의 비동기 메시징 기본 개념 학습 → 브로커(Broker)와 메디에이터(Mediator) 패턴의 장단점 비교 → 마이크로서비스 환경에서 Saga 패턴을 통한 Choreography 구현 및 에러 처리 메커니즘 학습으로 이어집니다.
- **My Project Relevance:** 현재 진행하는 분산 애플리케이션이나 마이크로서비스 도입 시, 서비스 간 결합도를 최소화하여 자율성과 성능을 극대화할 것인지(Choreography), 에러 제어와 워크플로우 가시성을 위해 다소의 결합도를 감수할 것인지(Mediator/Orchestration)를 결정하는 전략적 판단 기준이 됩니다.

### Adjacent Topics
- [[CQRS]] (Command Query Responsibility Segregation)
  - 확장 방향: 분산 아키텍처에서 Choreography 방식으로 이벤트를 구독하여 조회용(Read-only) 데이터베이스(또는 복제본)를 최신 상태로 동기화하는 등, 비동기 시스템의 조회 성능 최적화 기법으로 이해를 넓힐 수 있습니다 [4, 10].
- [[Asynchronous Message Passing]]
  - 확장 방향: Choreography 패턴이 시스템 간 상호작용을 수행하는 핵심 통신 메커니즘으로, 동기적 통신 방식과의 차이점 및 메시지 큐 시스템의 활용 원리로 학습을 확장할 수 있습니다 [11].

---
*Last updated: 2026-05-02*