더북(TheBook)

주문 생성 사가는 6개의 로컬 트랜잭션으로 구성됩니다.

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

2. 소비자 서비스: 주문 가능한 소비자인지 확인합니다.

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

4. 회계 서비스: 소비자 신용카드를 승인합니다.

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

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

 

서비스는 로컬 트랜잭션이 완료되면 메시지를 발행하여 다음 사가 단계를 트리거합니다. 메시지를 통해 사가 참여자를 느슨하게 결합하고 사가가 반드시 완료되도록 보장하는 것입니다. 메시지 수신자가 일시 불능 상태라면, 메시지 브로커는 다시 메시지를 전달할 수 있을 때까지 메시지를 버퍼링합니다.

언뜻 보기에 직관적인 것 같지만, 몇 가지 풀어야 할 숙제가 있습니다. 도중에 에러가 발생하면 변경분을 어떻게 롤백시킬 수 있을까요?

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