WEBBOOK CHAPTER

실패를 전제로 설계하는 분산시스템: 11장. Saga는 긴 트랜잭션의 상태 머신이다

11장. Saga는 긴 트랜잭션의 상태 머신이다

예약 확정, 결제 승인, 기사 알림을 하나의 DB transaction으로 묶을 수 없다. saga는 단계, 성공 조건, 보상, timeout, 수동 개입을 명시한 상태 머신이다. 보상은 과거를 지우는 rollback이 아니라 새로운 업무 행동이다. 이미 제공된 서비스나 발생한 수수료는 되돌릴 수 없을 수 있다.


REQUESTED -> SLOT_HELD -> PAYMENT_AUTHORIZED -> CONFIRMED
                  -> PAYMENT_FAILED -> HOLD_RELEASED
CONFIRMED -> NOTIFY_PENDING -> NOTIFIED | MANUAL_REVIEW

orchestration은 흐름을 보기 쉽지만 중앙 조정자 의존이 생긴다. choreography는 결합이 낮아 보여도 숨은 흐름과 이벤트 폭풍이 생길 수 있다. 단계 수와 감사 요구에 따라 선택한다.