결제 서비스가 먼저 성공한다.
Compensating Transaction
분산 환경에서는 자동 롤백 대신 보상 작업을 설계한다
여러 서비스를 하나의 ACID 트랜잭션으로 묶기 어렵다면, 실패 시 되돌릴 역방향 작업을 별도로 실행한다.
정방향
실패
보상
재고 서비스가 주문 수량을 반영한다.
다음 단계에서 오류가 난다.
환불, 재고 복구 같은 새 트랜잭션을 수행한다.
보상은 Undo 로그가 아니라 업무적으로 반대 의미를 갖는 새 작업이다.