오케스트레이터(Execution Orchestrator) 패턴과 코레오그래피(Choreography) 패턴의 개념 및 비교
1. 개요
마이크로서비스 아키텍처(MSA)에서는 여러 서비스 간의 업무 흐름(Workflow) 제어 방식이 중요하다. 오케스트레이터 패턴과 코레오그래피 패턴은 마이크로서비스 아키텍처에서 복잡한 비즈니스 트랜잭션을 관리하고 여러 서비스 간의 데이터 일관성을 유지하는 데 사용되는 두 가지 핵심 디자인 패턴이다.
2. 오케이스트레이터 패턴

- 개념: 중앙 집중형 제어(Orchestrator)가 각 서비스의 실행 순서와 호출 흐름을 명시적으로 제어하는 패턴이다.
- 동작 방식: 오케스트레이터는 워크플로우를 정의하고, 각 단계에서 필요한 서비스를 직접 호출(명령)하여 작업을 지시한다. 서비스는 자신의 작업을 완료한 후 결과를 오케스트레이터에게 보고다.
- 통신 방식: 주로 동기적 통신 방식(예: HTTP REST API 호출)을 사용하며, 오케스트레이터가 서비스 간의 상호 작용 순서와 상태를 모두 알고 있다.
- 특징:
- 워크플로 제어가 중앙에서 관리되어 흐름 가시성·제어성 높음
- 비즈니스 로직의 집중화 → 유지보수 용이
- 단일 장애점(Single Point of Failure) 위험 존재
- 예시: “주문 생성 → 결제 → 재고 확인 → 배송 요청” 절차를 중앙 서비스가 순서대로 호출
3. Choreography 패턴의 개념

- 개념: 중앙 통제 컴포넌트 없이, 각 서비스가 이벤트(Event)를 발행하고 구독함으로써 독립적이고 분산된 방식으로 프로세스를 진행한다.
- 동작 방식: 서비스 A가 작업을 완료하면 이벤트를 발행하고, 이 이벤트를 구독하고 있는 서비스 B는 이벤트를 수신하자마자 자율적으로 다음 작업을 시작하고, 다시 이벤트를 발행한다. 각 서비스는 전체 흐름을 알지 못하고 자신의 역할에만 반응한다.
- 통신 방식: 주로 비동기적 통신 방식(예: 메시지 브로커, 이벤트 버스)을 사용한다.
- 특징:
- 느슨한 결합(Loose Coupling)
- 확장성 및 복원력 우수
- 전체 흐름 파악 및 디버깅이 어려움
- 예시: 주문 서비스 → 결제 이벤트 발행 → 재고·배송 서비스가 해당 이벤트를 구독하여 처리
4. 비교
| 구분 | 오케스트레이터 | 코레오그래피 |
| 제어 주체 | 중앙 오케스트레이터 | 각 서비스 (분산 제어) |
| 통신 방식 | 명시적 호출(Call) 기반 | 이벤트(Event) 기반 |
| 결합도 | 높음 (중앙 집중 구조) | 낮음 (느슨한 결합) |
| 확장성 | 낮음 | 높음 |
| 장애 영향 | 중앙 장애 시 전체 영향 | 국소적 영향에 제한 |
| 가시성 / 추적성 | 높음 | 낮음 |
| 적용 예 | 순차적·업무흐름 중심 프로세스 | 비동기·분산 이벤트 중심 시스템 |
| 오류 처리 | 오케스트레이터가 보상 트랜잭션을 중앙에서 직접 호출하여 처리 | 각 서비스가 자신의 이벤트를 통해 자율적으로 보상 처리 |
5. 선택 기준
- 오케스트레이터 패턴 선택 시:
- 비즈니스 프로세스가 복잡하고 단계가 많으며, 반드시 엄격한 순서를 따라야 할 때.
- 중앙 집중식 모니터링 및 디버깅이 매우 중요할 때.
- 서비스 간의 의존 관계가 명확하고 통제가 필수적일 때.
- 코레오그래피 패턴 선택 시:
- 비즈니스 프로세스가 상대적으로 단순하고 서비스 간의 느슨한 결합이 중요할 때.
- 확장성과 탄력성이 최우선이며, 중앙 실패 지점을 피하고자 할 때.
- 이벤트 기반 아키텍처(EDA)를 구축하여 비동기 처리를 극대화하고자 할 때.
6. 결론 (시사점)
오케스트레이터 패턴은 업무 흐름이 명확하고 통제 필요성이 높은 프로세스에 적합하며,
코레오그래피 패턴은 확장성과 자율성이 중요한 대규모 분산 환경에 적합하다.
최근에는 두 방식을 혼합한 하이브리드 이벤트 오케스트레이션(Hybrid Orchestration) 형태로 발전하고 있다.
'IT Tech.' 카테고리의 다른 글
| (보안) 오픈소스 소프트웨어 활용에 따른 보안 위협과 해결방안 (0) | 2025.11.29 |
|---|---|
| (소프트웨어공학) 맵 리듀스 (Map Reduce) 패턴 (0) | 2025.11.29 |
| (AI) 추론 기법 비교 Chain-of-thought vs. ReAct vs. Reflexion (0) | 2025.11.28 |
| (AI) TTFT vs. TPOT vs. Goodput (0) | 2025.11.20 |
| (AI) 글리치 토큰 필터링 (0) | 2025.11.19 |