42. Design E-commerce Cart and Checkout (Amazon / Flipkart)
1
The interview prompt2
42.1 What do you ask first?3
42.2 How big is this, really?4
42.3 What are the doors?5
42.4 What do we store?6
42.5 What does the whole system look like?7
42.6 How is the cart stored?8
42.7 How do you reserve inventory?9
42.8 How do you make order creation idempotent?10
42.9 How does the payment hand-off work?11
42.10 How does the checkout saga work?12
42.11 What would you say in the last five minutes?13
Score yourself14
Variations to practise15
Sources16
Code lab42. Design E-commerce Cart and Checkout (Amazon / Flipkart)
42.10 How does the checkout saga work?
3 min read+10 XP
Checkout spans services (offers, inventory, payments, orders), so there's no single database transaction. It's a saga (Chapter 17): local steps, each with a compensation, run by the orchestrator:
| Step | Compensation |
|---|---|
| Apply coupon (mark it used) | Un-use the coupon |
| Reserve stock | Release the hold |
| Charge payment | Refund |
| Create order (confirmed) | Cancel the order |
In the chapter's code, the coupon is applied and stock reserved, then the charge fails; the saga undoes stock first, then the coupon, leaving both as they were.
Rules that make sagas safe:
- Order steps so the hardest-to-undo comes last (charging money, then confirming; emails only after confirmation).
- Every step and compensation is idempotent (keyed by order ID), because the orchestrator may retry after a crash.
- Persist saga progress in the order's state, so a recovery job can resume or compensate.
- Use the outbox (Chapter 23) to publish
order_confirmedexactly when the order commits.
Memory code: "Step by step, with an undo for each, and money last."