핵심 인사이트 (3줄 요약)
- 중앙 집중식 트랜잭션 제어: 사가 오케스트레이터(지휘자)가 상태 기계를 사용하여 각 마이크로서비스의 트랜잭션 흐름을 순차적으로 호출하고 관리한다.
- 보상 트랜잭션 자동화: 특정 단계에서 실패가 발생하면, 지휘자가 이미 완료된 이전 단계들을 역순으로 호출하여 보상(Compensating) 로직을 실행, 논리적 롤백을 수행한다.
- 가시성 및 복잡도 해결: 전체 트랜잭션의 진행 상태를 한눈에 파악할 수 있어, 복잡한 비즈니스 로직과 긴 흐름을 가진 분산 시스템에 적합하다.
Ⅰ. 개요 (Context & Background)
마이크로서비스 아키텍처(MSA)에서는 각 서비스가 독립적인 데이터베이스를 가지므로 기존의 단일 DB 트랜잭션(ACID)을 사용할 수 없다. 이를 해결하기 위한 사가 패턴 중 오케스트레이션(Orchestration) 방식은 중앙의 '오케스트레이터'가 전체 비즈니스 프로세스의 상태를 추적하며 각 서비스에 명령을 내리는 방식이다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
오케스트레이션 사가는 '상태 기계(State Machine)'를 통해 트랜잭션의 성공, 실패, 보상 상태를 엄격히 관리한다.
[ Architecture of Orchestration Saga ]
+-------------------------------------------+
| Saga Orchestrator (지휘자) |
| (State: OrderPending -> PaymentProcess) |
+-------------------------------------------+
| (1) CreateOrder | (3) ProcessPayment
v v
+-------------+ +-------------+ +-------------+
| Order Serv. | | Payment Serv| | Stock Serv. |
+-------------+ +-------------+ +-------------+
| (2) Success | (4) Failure! | (X) Skip
+----------------------+ |
| |
+----------------------+----------------------+
| (5) Refund (Compensation)
v
+-------------+
| Order Serv. | (Cancel Order)
+-------------+
* 순서: (1)명령 -> (2)응답 -> (3)다음 명령 -> (4)에러 -> (5)보상 트랜잭션 실행
핵심 메커니즘:
- 중앙 지휘: 오케스트레이터는 각 서비스에 어떤 일을 해야 할지 지시(Command)를 보낸다.
- 비동기 응답: 서비스는 요청을 처리하고 결과를 오케스트레이터에게 비동기 메시지로 알린다.
- 상태 관리: 오케스트레이터는 현재 어디까지 진행되었는지 DB에 기록하며 장애 시 재시작 지점을 보장한다.
- 보상 로직: 단계 실패 시 지금까지 성공한 모든 작업에 대해 반대 작업(예: 결제 취소, 주문 무효화)을 지시한다.
Ⅲ. 융합 비교 및 다각도 분석 (Comparison & Synergy)
| 비교 항목 | 오케스트레이션 (Orchestration) | 코레오그래피 (Choreography) |
|---|---|---|
| 통제 방식 | 중앙 집중형 (지휘자 존재) | 분산형 (이벤트 구독 기반 안무) |
| 결합도 | 오케스트레이터가 모든 서비스를 앎 | 서비스 간의 결합도가 극도로 낮음 |
| 적합성 | 복잡하고 긴 비즈니스 로직 | 단순하고 짧은 이벤트 흐름 |
| 장단점 | 가시성 좋음, 중앙 SPOF 위험 | 유연함, 전체 흐름 추적 및 디버깅 어려움 |
Ⅳ. 실무 적용 및 기술사적 판단 (Strategy & Decision)
실무 적용 사례:
- 이커머스 주문 결제: 주문 -> 결제 -> 재고 차감 -> 배송 지시로 이어지는 복잡한 흐름에서 결제 실패 시 재고를 다시 채우고 주문을 취소해야 하는 경우.
- 금융 송금 프로세스: 출금 -> 상대방 입금 확인 -> 최종 승인 단계에서 한쪽이 실패할 때의 원복 처리.
기술사적 판단: "오케스트레이션 사가는 순환 종속성(Circular Dependency) 문제를 방지하고 비즈니스 가시성을 확보하는 데 탁월하다. 하지만 오케스트레이터 자체가 병목이 되지 않도록 고가용성을 확보해야 하며, 상태 저장소의 일관성 관리가 매우 중요하다."
Ⅴ. 기대효과 및 결론 (Future & Standard)
분산 환경에서 데이터 정합성(Eventual Consistency)을 유지하기 위한 필수적인 패턴이다. 최근에는 Temporal, Camunda, AWS Step Functions 등 사가 오케스트레이션을 클라우드 네이티브로 지원하는 도구들이 발전하면서 구현 난이도가 낮아지고 있다.
📌 관련 개념 맵 (Knowledge Graph)
- State Machine: 사가 상태 관리 엔진
- Eventual Consistency: 분산 시스템의 최종적 일관성 사상
- Outbox Pattern: 메시지 발행의 원자성 보장 기법
👶 어린이를 위한 3줄 비유 설명
- 오케스트레이션 사가는 모든 악기 연주자에게 언제 연주할지 알려주는 '지휘자' 선생님과 같아요.
- 만약 북 치는 어린이가 실수하면, 선생님이 피아노 치는 어린이에게 연주를 멈추고 처음으로 돌아가라고 지시하는 거죠.
- 지휘자 선생님만 잘 보면 복잡한 노래도 헷갈리지 않고 끝까지 부를 수 있답니다.