더북(TheBook)

▼ 표 4-1 주문 생성 사가의 보상 트랜잭션

단계

서비스

트랜잭션

보상 트랜잭션

1

주문 서비스

createOrder()

rejectOrder()

2

소비자 서비스

verifyConsumerDetails()

-

3

주방 서비스

createTicket()

rejectTicket()

4

회계 서비스

authorizeCreditCard()

-

5

주방 서비스

approveTicket()

-

6

주문 서비스

approveOrder()

-

예를 들어 소비자의 신용카드 승인이 실패하면 보상 트랜잭션은 다음 순서대로 작동될 것입니다.

1. 주문 서비스: 주문을 APPROVAL_PENDING 상태로 생성합니다.

2. 소비자 서비스: 소비자가 주문을 할 수 있는지 확인합니다.

3. 주방 서비스: 주문 내역을 확인하고 티켓을 CREATE_PENDING 상태로 생성합니다.

4. 회계 서비스: 소비자의 신용카드 승인 요청이 거부됩니다.

5. 주방 서비스: 티켓 상태를 CREATE_REJECTED로 변경합니다.

6. 주문 서비스: 주문 상태를 REJECTED로 변경합니다.

 

5~6번째 단계는 주방 서비스, 주문 서비스가 수행한 업데이트를 언두하는 보상 트랜잭션입니다. 일반 트랜잭션과 보상 트랜잭션의 순서화는 바로 다음에 설명할 사가 편성 로직이 하는 일입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.