chap01의 핵심 변화는 주문 흐름에서 가장 잘 보인다

서비스 분리의 의미는 파일 개수나 폴더 개수보다, 실제 비즈니스 흐름이 어떻게 달라졌는지를 볼 때 가장 선명해진다.

그중에서도 주문은 상품과 배송을 함께 건드리기 때문에, chap01의 변화를 가장 잘 보여 주는 흐름이다.

chap00에서는 주문 서비스가 상품 서비스와 배송 서비스를 같은 애플리케이션 내부 협력 대상으로 다뤘다.

하지만 chap01에서는 더 이상 그렇게 할 수 없다.

이제 주문 서비스는 외부 서비스를 HTTP로 호출해야 한다.

주문 서비스는 이제 클라이언트를 통해 협력한다

이 변화는 실제 코드에서 바로 드러난다.

private final ProductClient productClient;
private final DeliveryClient deliveryClient;

즉, 주문 서비스는 이제 ProductServiceDeliveryService를 직접 부르지 않는다.

그 대신 다른 서비스와 통신하는 전용 클라이언트를 통해 협력한다.

image.png

주문 생성 흐름은 이렇게 바뀐다

주문 생성의 큰 흐름은 여전히 비슷해 보인다.

  1. 주문을 저장한다.
  2. 상품 재고를 줄인다.
  3. 주문 아이템을 저장한다.
  4. 배송을 생성한다.
  5. 주문을 완료 상태로 바꾼다.

하지만 지금은 각 단계의 의미가 달라졌다.