메시지 기반 협업 구조에서 중요한 것은 성공 흐름만이 아니다.
오히려 더 중요한 것은 중간 실패를 어떻게 다룰 것인가다.
chap03의 주문 생성 흐름에서는 특히 아래 상황을 생각해야 한다.
이 질문에 답하기 위해 보상 처리가 등장한다.
예를 들어 product-decreased 이벤트가 실패로 오면, 오케스트레이터는 이미 성공한 재고 차감만 다시 복구하려고 한다.
그리고 주문 취소 커맨드도 함께 보낸다.

즉, 보상 처리는 단순히 “에러를 던진다”가 아니라, 이미 바뀐 상태를 의식해서 되돌리는 흐름이다.
배송 생성 실패가 오면, 오케스트레이터는 이미 성공했던 재고 차감을 다시 복구하려고 하고, 주문 취소 커맨드를 보낸다.
즉, 실패 지점이 어디냐에 따라 되돌려야 하는 대상이 달라진다.
그리고 그 판단을 오케스트레이터가 흐름 전체 기준으로 내린다.

chap03는 이제 실패를 예외 처리 한 줄로 끝내는 장이 아니다.