핵심 비즈니스 로직은 OrderService, Order, OrderRepository 세 클래스에 있습니다. 여러분이 익숙한 전형적인 웹 애플리케이션 형태이지만 사가 관련 클래스는 낯설게 느껴집니다. 사가 오케스트레이터인 주문 서비스는 그 자신이 사가 참여자이기도 한 서비스입니다. CreateOrderSaga를 비롯하여 여러 사가 오케스트레이터를 거느리고 있습니다. 사가 오케스트레이터는 사가 참여자 프록시 클래스(예: KitchenServiceProxy, OrderServiceProxy)를 거쳐 사가 참여자에게 커맨드 메시지를 전달합니다. 사가 참여자 프록시는 사가 참여자의 메시징 API가 정의된 클래스입니다. OrderCommandHandlers 클래스는 사가가 주문 서비스에 전송한 커맨드 메시지를 처리합니다.
일단 머릿속에 이 정도 밑그림을 그려 놓고 OrderService 클래스부터 하나씩 살펴봅시다.