chap00에서는 주문 흐름이 비교적 단순했다.
하나의 애플리케이션 안에서 주문 생성, 재고 차감, 배송 생성이 한 흐름으로 처리되었다.
하지만 chap03 이후의 구조는 다르다.
주문 생성 이후에는 Kafka 메시지를 통해 여러 서비스가 순서대로 협력한다.
그래서 주문 생성 API의 응답만 보고 “모든 처리가 끝났다”고 말하기 어렵다.
API 응답은 주문 흐름이 시작되었음을 알려 줄 수는 있지만, 뒤쪽의 재고 처리와 배송 완료까지 모두 끝났다는 의미는 아니다.
사용자 입장에서는 주문 버튼을 누른 뒤 결과를 알고 싶다.
그런데 그 결과는 즉시 결정되지 않을 수 있다.
이럴 때 매번 브라우저가 서버에 물어보는 방식도 가능하다.
주문 끝났나요?
주문 끝났나요?
주문 끝났나요?
하지만 이 방식은 비효율적이고, 이 책에서 보여 주려는 흐름과도 잘 맞지 않는다.
chap04에서는 WebSocket을 사용해 서버가 나중에 결과를 먼저 알려 준다.
브라우저는 미리 연결해 두고 기다린다.
주문이 완료되면 서버가 /topic/orders/{userId}로 메시지를 보낸다.
이 프로젝트에서는 order-service가 WebSocket endpoint를 제공한다.
설정의 핵심은 두 가지다.
/api/ws/orders