Saga란?
여러 서비스에 걸친 비즈니스 트랜잭션을 각 서비스의 로컬 트랜잭션들의 시퀀스로 구성하고, 일부 실패 시 이전 단계를 "보상(compensate)" 트랜잭션으로 되돌리는 패턴이다.
두 가지 스타일
- Choreography — 각 서비스가 이벤트 발행·구독 (분산형)
- Orchestration — 중앙 오케스트레이터가 단계 조율
예: 주문 플로우
- 재고 차감 → 결제 승인 → 배송 생성
- 결제 실패 시: 재고 원복 (보상)
2PC(2-phase commit)보다 가용성 높지만 최종 일관성이라는 트레이드오프.