이 문서는 해결책보다 문제를 먼저 보여 준다

이 장에서 중요한 것은 “분산 트랜잭션을 어떻게 완벽하게 해결하는가”가 아니다.

오히려 왜 chap00에서 당연하던 로컬 트랜잭션이 chap01에서는 더 이상 충분하지 않은지를 먼저 이해하는 것이 중요하다.

즉, 이 문서는 해결의 장이 아니라 문제 인식의 장이다.

chap00에서는 왜 상대적으로 단순했을까

chap00에서는 주문, 재고, 배송 흐름이 하나의 애플리케이션 안에서 이어졌다.

그래서 로컬 트랜잭션 안에서 상태 변화를 비교적 단순하게 묶을 수 있었다.

하지만 chap01에서는 상황이 달라진다.

image.png

즉, 하나의 흐름이 여러 서비스와 여러 상태 변화로 흩어진다.

그래서 부분 성공과 부분 실패가 진짜 문제가 된다

예를 들어 주문 저장과 재고 차감은 성공했는데 배송 생성이 실패했다고 해 보자.

이 경우 시스템은 이미 일부 상태를 바꿔 놓은 상태다.

이런 상황에서 해야 하는 질문은 단순하다.