← Previous Chapter: Part 8: Phase 3 — Full Cutover | Series Hub | Next Chapter: Part 10: ADR Walkthrough — 24 Architecture Decisions →
Answer-first: In a distributed e-commerce architecture without 2-Phase Commit (2PC), distributed consistency is achieved via the Transactional Outbox Pattern (saving domain events in the same SQL ACID transaction as business state) and Orchestrated Sagas (executing compensating transactions upon payment or inventory failure).
sequenceDiagram
autonumber
actor Customer as Customer
participant Order as Order Service (Saga Orchestrator)
participant Inventory as Inventory Service
participant Payment as Payment Service
Customer->>Order: Create Order
Order->>Order: Save Order (PENDING) + Outbox Event (Atomic ACID)
Order->>Inventory: Reserve Stock (gRPC)
alt Inventory Available
Inventory-->>Order: Stock Reserved OK
Order->>Payment: Authorize Payment (gRPC)
alt Payment Succeeded
Payment-->>Order: Payment Captured OK
Order->>Order: Update Order (CONFIRMED)
Order-->>Customer: Order Placed Successfully!
else Payment Failed
Payment-->>Order: Card Declined
Order->>Inventory: Compensating Tx: Release Reserved Stock
Order->>Order: Update Order (CANCELLED)
Order-->>Customer: Payment Failed
end
else Out of Stock
Inventory-->>Order: Insufficient Stock
Order->>Order: Update Order (CANCELLED)
Order-->>Customer: Item Out of Stock
end
