정상 진행
1 주문 생성 커밋
orderId와 PENDING_ORDER를 저장한다.
2 재고 예약 커밋
reservationId와 예약 수량을 남긴다.
3 결제 승인 시도
성공하면 COMPLETED, 실패하면 보상으로 전환한다.
각 서비스는 자기 DB에 먼저 커밋하고 다음 단계로 이동한다. 중간 실패가 나면 이미 성공한 단계들을 업무적으로 반대 의미의 명령으로 되돌린다.
orderId와 PENDING_ORDER를 저장한다.
reservationId와 예약 수량을 남긴다.
성공하면 COMPLETED, 실패하면 보상으로 전환한다.
성공했던 재고 예약을 한 번만 해제한다.
주문 상태를 CANCELLED로 바꾸고 취소 이벤트를 남긴다.
COMPENSATED, FAILED_AT, retry count를 대시보드에 노출한다.
completed steps, failed_at, next_compensation을 저장해야 재시도와 중복 실행이 안전해진다.
반대 의미의 새 업무 작업이다.
보상 명령도 여러 번 도착할 수 있다.
사용자에게 진행 중 상태를 숨기지 않는다.