I. 개요
마이크로서비스 아키텍처에서 여러 서비스에 걸친 분산 트랜잭션을 어떻게 조율할 것인가는 핵심 설계 과제이다. ACID가 보장되지 않는 분산 환경에서 Eventually Consistent 방식의 Saga 패턴이 주로 사용되며, 이 Saga를 구현하는 방식으로 오케스트레이션(Orchestration)과 코레오그래피(Choreography) 두 가지 접근이 존재한다.
II. 오케스트레이션 vs 코레오그래피 비교
| 구분 | 오케스트레이션 | 코레오그래피 |
|---|---|---|
| 제어 방식 | 중앙 조정자(Orchestrator)가 각 서비스에 명령 전달 | 각 서비스가 이벤트를 구독·발행하며 자율 반응 |
| 결합도 | 오케스트레이터에 종속 (중앙 집중적) | 느슨한 결합 (이벤트 브로커 경유) |
| 가시성 | 전체 흐름 파악 용이 | 전체 흐름 추적 어려움 (분산 추적 필요) |
| 단일 장애점 | 오케스트레이터 장애 시 전체 영향 | 브로커 이중화로 단일 장애점 감소 |
| 구현 도구 | Apache Airflow, Temporal, AWS Step Functions | Kafka, RabbitMQ, AWS EventBridge |
III. Saga 패턴과의 연계
Saga 패턴은 분산 트랜잭션을 로컬 트랜잭션 시퀀스로 분해하고, 실패 시 보상 트랜잭션(Compensating Transaction)으로 롤백을 구현한다. 오케스트레이션 Saga는 조정자가 보상 트랜잭션을 직접 호출하고, 코레오그래피 Saga는 각 서비스가 실패 이벤트를 발행해 다음 서비스가 보상을 수행한다.
IV. 선택 기준 및 결론
- 오케스트레이션 적합: 복잡한 비즈니스 프로세스, 가시성·감사 로그 요구, 팀 역량이 중앙 집중 관리에 익숙한 경우
- 코레오그래피 적합: 서비스 간 느슨한 결합이 최우선, 이벤트 중심 아키텍처, 서비스 수가 많고 독립 확장이 중요한 경우
핵심 키워드: Orchestration, Choreography, Saga Pattern, Compensating Transaction, Event-Driven Architecture, Eventual Consistency, Distributed Transaction