← 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