Compensating Transaction

분산 환경에서는 자동 롤백 대신 보상 작업을 설계한다

여러 서비스를 하나의 ACID 트랜잭션으로 묶기 어렵다면, 실패 시 되돌릴 역방향 작업을 별도로 실행한다.

정방향
실패
보상
1결제 승인

결제 서비스가 먼저 성공한다.

2재고 차감

재고 서비스가 주문 수량을 반영한다.

3배송 실패

다음 단계에서 오류가 난다.

4보상 실행

환불, 재고 복구 같은 새 트랜잭션을 수행한다.

보상은 Undo 로그가 아니라 업무적으로 반대 의미를 갖는 새 작업이다.