주문 시작과 성공 처리 흐름

StartOrderRes는 Created 시점에 반환된다 — 예약·승인·확정은 background에서 이어진다

주문 시작과 성공 처리 흐름 StartOrderRes는 Created 시점에 반환된다 — 예약·승인·확정은 background에서 이어진다 StartOrderReq Reserve idempotency mapping OrderId StartOrderWorkflowReq Replay OrderId stream Empty stream Append OrderStartedEvent Apply Created Confirm started mapping StartOrderWorkflowRes StartOrderRes(Created) ReserveInventoryReq ReserveInventoryRes(accepted) Append InventoryReservedEvent Apply InventoryReserved AuthorizePaymentReq AuthorizePaymentRes(accepted) Append PaymentAuthorizedEvent Apply PaymentAuthorized Append OrderConfirmedEvent Apply Confirmed GetOrderStateReq Read OrderState Confirmed GetOrderStateRes(Confirmed) Client · Sequence participant Client CommerceApi · Sequence participant CommerceApi Commerce State · Sequence participant Commerce State OrderWorkflow · / Order Spot · Sequence participant OrderWorkflow / Order Spot Order Event Store · Sequence participant Order Event Store Order Read Model · Sequence participant Order Read Model Inventory · Sequence participant Inventory Payment · Sequence participant Payment

Background continuation does not extend the HTTP reply boundary

  • • mermaid Note over Workflow(11번 StartOrderWorkflowRes/StartOrderRes 직후, 12번 ReserveInventoryReq 앞에 위치): 'Background continuation does not extend the HTTP reply boundary.' 11번 StartOrderRes(Created)는 12~21번(재고 예약·결제 승인·확정)의 완료를 기다리지 않는다.

흐름을 읽는 법

  • • CommerceApi는 mapping 예약과 입력 검증을 수행하지만 event stream을 기록하지 않는다. OrderWorkflowSpot은 stream을 replay해 aggregate를 복원하고 OrderStartedEvent를 기록한 뒤 projection을 갱신한다.
  • • Client는 GetOrderStateReq를 bounded polling으로 반복해 Confirmed 또는 Failed를 확인한다.