사용자는 화면에서 주문 버튼을 누른다.
하지만 주문 완료 알림은 그 즉시 오는 것이 아니다.
왜냐하면 주문 완료는 단순히 주문 row가 생겼다는 뜻이 아니기 때문이다.
이 프로젝트에서는 재고 차감, 배송 생성, 배송 완료까지 이어진 뒤에야 주문 완료로 볼 수 있다.
따라서 chap04의 핵심 흐름은 “요청을 보낸다”에서 끝나지 않는다.
요청 이후에 내부 메시지 흐름이 진행되고, 마지막에 다시 사용자 화면으로 결과가 돌아온다.
큰 흐름은 아래와 같다.
브라우저 WebSocket 연결
-> /topic/orders/{userId} 구독
-> 주문 생성 API 호출
-> order-created 이벤트 발행
-> 재고 차감
-> 배송 생성
-> 배송 완료 API 호출
-> delivery-completed 이벤트 발행
-> complete-order-command 발행
-> order-service 주문 완료 처리
-> /topic/orders/{userId}로 알림 발행
-> 브라우저 화면에 주문 완료 표시
이 흐름은 길어 보이지만, 역할을 나누면 어렵지 않다.

frontend/index.html에서는 주문 API를 호출하기 전에 WebSocket 연결을 먼저 준비한다.
그 이유는 간단하다.
주문 완료 알림을 놓치지 않기 위해서다.