Companies blueprint · E-Commerce
Amazon: order to doorstep, and working backwards
Traces an Amazon order from cart and payment through fulfilment-centre selection, pick-pack, sortation and last-mile tracking, alongside the publicly described operating practices of PR/FAQ, six-pagers, two-pizza teams and weekly business reviews. It must never double-charge, oversell stock or break the promised delivery date shown at checkout.
- Steps
- 9
- Subjective questions
- 33
- Objective questions
- 33
The problem and the outcome
Problem: A huge catalogue, many fulfilment centres and changing demand make it hard to promise a delivery date, reserve stock and ship reliably at scale. Large organisations also tend to build features customers do not need and lose ownership of what they ship.
Outcome: Each stage is an independently owned service behind an API, so orders flow reliably and teams can change their part without central coordination. Products start from a customer-facing press release and are run by the team that built them, measured weekly on input metrics.
Architecture
How it works, step by step
- The customer checks out; the cart service prices items, applies offers, validates the address and shows a delivery promise computed from inventory and network capacity.
- The payment method (card, UPI, wallet, or pay-on-delivery on amazon.in) is authorised, and the order service creates the order with an idempotency key, then publishes order events for downstream consumers.
- Units are reserved against inventory, and fulfilment-centre selection picks one or more nodes that can meet the promise date at the lowest total cost, splitting the shipment if needed.
- The fulfilment centre picks, packs and labels the parcel using robotics and handheld scanners; Amazon has publicly said it charges the payment when the item ships, so capture follows the ship event.
- Parcels move through sortation to the right delivery station or carrier, with every hand-off recorded as a scan event.
- A last-mile driver delivers the parcel; scan and location events feed tracking, customer notifications and proof of delivery.
- On the operating side, a new product starts by working backwards: a press release and FAQ written from the customer's point of view are reviewed before any code is written.
- Proposals are argued in six-page narratives read silently at the start of meetings, and approved work goes to a small two-pizza team that owns its service end to end and exposes it only through APIs.
- Teams run what they build (on-call, alarms, Correction of Error reviews), and leaders inspect controllable input metrics in weekly business reviews to decide what to fix next.
Tech stack
- Service-oriented architecture with teams communicating only through APIs
- Amazon DynamoDB-style key-value stores for order and cart state
- Amazon SQS / SNS style queues and topics for order events
- Amazon CloudWatch-style metrics, dashboards and alarms
- AWS compute (EC2, Lambda) behind load balancers
- Amazon Robotics drive units and handheld scanners in fulfilment centres
- Mobile delivery app for drivers with scan and proof-of-delivery events
Key design decisions
- Authorise at checkout but capture at shipment, so customers are not charged for items that never ship and partial shipments are charged correctly.
- Make the order a durable, idempotent workflow fed by events rather than one synchronous chain, so a slow fulfilment or tracking service cannot fail checkout.
- Choose fulfilment centres by delivery promise and total cost, accepting split shipments when one node cannot meet the date.
- Give each two-pizza team a single-threaded owner and full operational ownership, trading some duplication for speed and accountability.
- Start every product with a PR/FAQ and six-pager so the customer problem is agreed before engineering cost is spent.
Common mistakes
- Retrying payment or order creation without idempotency keys causes double charges or duplicate orders.
- Reserving inventory too late leads to overselling during sales events like Prime Day or Great Indian Festival.
- Showing a delivery promise that ignores real FC and carrier capacity erodes trust faster than a slower honest date.
- Writing a PR/FAQ after the decision is made turns working backwards into theatre.
- Reviewing only output metrics like revenue in a WBR hides the controllable inputs teams can actually move.
What to measure
- Order defect rate and duplicate-charge count
- Delivery promise accuracy (on-time versus promised date)
- Checkout latency and availability at peak
- Click-to-ship and ship-to-deliver cycle times
- Operational health per team: pages, Correction of Error actions closed
Most-asked interview questions
Subjective questions 33
1Walk me through how you would design the order pipeline from checkout to delivery.Asked almost every time
I would split it into owned services behind APIs: cart and checkout, payments, an order service, inventory and promise, fulfilment-centre selection, warehouse operations, sortation, last-mile and tracking. Checkout only needs to authorise payment, reserve inventory and durably create the order with an idempotency key. Everything after that is asynchronous, driven by order events, so a slow warehouse system never blocks a customer. FC selection chooses nodes that meet the promised date at the lowest cost, splitting shipments if needed. Payment is captured on shipment. Each physical hand-off emits a scan event that feeds tracking and notifications. I would design for peaks like Prime Day with load tests, back-pressure on queues and graceful degradation of non-critical features.
2How would you compute the delivery promise shown at checkout, and how do you keep it honest?Asked almost every time
The promise service takes the cart items, the delivery pincode and the current time. For each item it finds the nodes holding sellable stock. For each candidate node it adds processing time, the next outbound cutoff, linehaul transit and last-mile capacity at the destination delivery station. The earliest feasible date with spare capacity becomes the promise. To keep it honest, the date is computed from the same inventory and capacity data that fulfilment later uses. The checkout response carries a short-lived promise token, and order creation re-validates it, so a promise that has expired is recomputed and shown again before the customer confirms. I would track promise-kept rate as an input metric and pad the estimate only when data shows systematic misses.
3How do you stop two customers from buying the last unit at the same time?Asked almost every time
Inventory is reserved, not just read. The reserve call does a conditional update on the SKU and node row: decrement available by the quantity only if available is at least that quantity, using a version check or a single atomic conditional write. Exactly one of the two concurrent requests succeeds. The other gets an out-of-stock result and can try another node or tell the customer. Reads for browsing and the product page can be eventually consistent and cached, because they only inform. The authoritative decision happens at the reservation write. For hot items in a flash sale, I would split a SKU's stock into several buckets so writes spread across partitions, and fall back to other buckets when one runs out.
4Why authorise at order time but capture at ship time, and how does that work with split shipments?Asked almost every time
Authorisation confirms the customer can pay and holds the funds without moving money. Amazon has publicly said it charges when the item ships, so the customer is not charged for something that might be cancelled or go out of stock before dispatch. With split shipments, each shipment's ship event triggers a capture for that shipment's amount, including its share of tax and discounts. The payment service must support multiple partial captures against one authorisation, or else re-authorise per shipment. Holds can expire if a shipment is delayed, so the system tracks hold validity and re-authorises before capture when needed. Each capture uses a key such as shipment ID plus attempt, so a retried ship event never charges twice.
5The payment gateway times out during authorisation. How do you avoid a double charge?Asked almost every time
A timeout means the outcome is unknown, not that it failed. Every authorisation request carries an idempotency key tied to the checkout attempt, and the gateway is asked to deduplicate on that key. On timeout I do not blindly retry with a new key. I mark the payment as pending, query the gateway's status API with the same key, and retry with the same key only if the gateway supports idempotent retries. Customer-side double clicks hit the same order idempotency key, so they return the existing order. A reconciliation job compares our ledger with gateway settlement files and automatically voids any orphan authorisations. The customer sees 'payment processing' rather than an error that tempts them to pay again.
6What is working backwards, and how would you use it on a project?Very often asked
Working backwards, as Amazon has publicly described it, means starting with a short press release announcing the finished product to customers, plus an FAQ covering customer and internal questions such as cost, risks and dependencies. If the press release is not exciting or the FAQ exposes a weak customer benefit, you change or stop the idea before building. I would use it to force clarity on who the customer is, what problem we solve and how we will know it worked. The document then becomes the reference during build, so scope debates go back to the customer promise rather than opinions. It pairs naturally with six-page narratives for review meetings.
7What does 'you build it, you run it' change for an engineering team?Very often asked
It means the team that writes a service also operates it in production, including on-call, alarms and incident follow-up. The main effect is incentives: engineers who get paged for flaky deploys invest in tests, safe rollouts, dashboards and automation. It also shortens feedback loops, because operational pain reaches the people who can fix it directly. The cost is that each team needs operational skill and some shared tooling, so I would provide paved roads for deployment, monitoring and runbooks. Combined with small two-pizza teams and API boundaries, it lets teams ship independently. After incidents, a blameless Correction of Error review captures root causes and tracked actions, so learning compounds instead of being lost.
8How do you make sure the order is saved and the order-created event is published, without losing one or the other?Very often asked
I use the transactional outbox pattern. In one local database transaction, the order service writes the order rows and an outbox row describing the event. A separate relay reads the outbox, or uses change data capture, and publishes to the event stream. It marks rows sent only after the broker acknowledges them. If the relay crashes, it republishes, so delivery is at-least-once. Every event carries the order ID and a sequence number, and consumers deduplicate on the event ID. This avoids a two-phase commit across the database and the broker. It also guarantees that downstream systems, such as inventory, fulfilment and notifications, never see an event for an order that does not exist, and never miss one that does.
9How would you design fulfilment-centre selection for a multi-item order?Very often asked
Treat it as an optimisation. Find nodes with reserved or reservable stock for each item. Generate candidate plans, single node or split, and filter to those that meet the promise date given cutoffs and capacity. Then pick the lowest total cost, which includes picking, packaging, linehaul, last-mile and the cost of an extra box. Splits are allowed when they are the only way to keep the promise or are clearly cheaper. An exact solve is expensive, so I would use heuristics: prefer the node that covers the most items, and prune distant nodes. I would cap computation time and fall back to a good-enough plan. The plan can be re-run before release to the floor if stock or capacity changed.
10Sketch the core data model for orders through delivery.Very often asked
Order holds order ID, customer ID, idempotency key, status, address snapshot, promise date and totals. OrderLine holds order ID, line ID, SKU, quantity, price and offer snapshot. Payment holds order ID, method, authorisation reference, status and hold expiry. A Capture table links payment and shipment with an amount and status. Reservation holds SKU, node, quantity, order line and expiry. Shipment holds shipment ID, order ID, node, carrier, tracking ID, status and promised date. ShipmentLine maps order lines to shipments. ScanEvent is append-only, keyed by tracking ID, with type, location, device timestamp and received time. Prices and addresses are snapshotted so later catalogue edits never change a placed order.
11How would you do capacity estimates for a festival sale peak without real numbers?Very often asked
I would state assumptions explicitly and derive from them. Start with expected peak orders per second, as a multiple of a normal day's average. Multiply by fan-out: each order generates several reads to price and promise, one authorisation, several inventory writes, and several events. Checkout reads are typically far higher than order writes, because many people browse and check promises without buying. Size the inventory store for the worst hot SKU, not the average, because contention is what breaks. Size the event stream by events per second and retention. Size tracking by parcels multiplied by scans per parcel. Then add headroom, load test at that level beforehand, and pre-scale, because autoscaling reacts too slowly to a sale that starts at a fixed minute.
12After reservation, the FC finds the unit is damaged. What happens?Very often asked
The pick fails with a reason code, and the node marks that unit unsellable, which corrects inventory. The order line goes back to fulfilment selection, which looks for another node that can still meet the promise date, even at higher cost. Paying more to keep the promise is usually the right trade. If no node can meet the date, the system picks the best alternative, updates the promise, and notifies the customer proactively with the option to cancel. Payment is unaffected until ship, because capture follows the ship event. Metrics on pick failures by node feed the weekly review, because frequent phantom inventory means cycle counts or receiving processes need fixing.
13Design the package tracking system.Very often asked
Scanners, sort systems and driver apps emit scan events to an ingestion API. The API validates the device, attaches received time and writes to a durable stream partitioned by tracking ID, so events for one parcel stay ordered in processing. A tracking processor applies events to a per-parcel state machine and updates a read-optimised tracking view, a key-value record per tracking ID that the customer page and notifications read. This is a CQRS split: the write side is an append-only event log, and the read side is a cheap lookup. Notifications fire on meaningful transitions such as shipped, out for delivery and delivered, with dedup. The raw events are kept for audit, disputes and analytics.
14Why might a shopping cart prefer availability over strong consistency?Very often asked
Amazon's 2007 Dynamo paper describes exactly this. Being unable to add to the cart loses sales and frustrates customers, so the cart should always accept writes even during partitions. If replicas diverge, the system keeps both versions and merges them, typically as a union of items. The known cost is that a deleted item can occasionally reappear. That is acceptable because the cart is not the source of truth for money or stock. Checkout is where you switch to strong guarantees: the price is recomputed, inventory is reserved with conditional writes, and payment is idempotent. Choosing consistency per step, not per system, is the key point to make in an interview.
15Would you use a distributed transaction or a saga for the order flow?Very often asked
A saga. The flow spans services owned by different teams: payment, order, inventory, fulfilment and shipping. These are separated by APIs and run for hours or days, so holding locks across them with two-phase commit is impractical and couples availability. Each step is a local transaction that emits an event. Each step has a compensating action: void the authorisation, release the reservation, cancel the shipment. I would use orchestration for the core order lifecycle, so one service owns the state machine and timeouts and the status is easy to answer. Choreography fits peripheral consumers such as notifications. Every step and compensation must be idempotent, because retries are normal.
16A customer cancels just as the parcel is being shipped. How do you resolve the race?Very often asked
The order line has one state machine, and transitions use conditional writes. Cancellation succeeds only if the state is still before 'shipped'. The ship confirm also succeeds only if the line is not cancelled. Whichever write lands first wins. If cancel wins, the warehouse system gets a stop signal, the parcel is pulled before the truck, the reservation is released and the authorisation is voided, so no capture happens. If ship wins, the customer is told it has already shipped and offered refuse-on-delivery or a return, and the capture proceeds normally. The important thing is never to allow both cancel-confirmed and capture.
17Why does Amazon use six-page narratives instead of slides?Very often asked
Amazon has publicly explained that full sentences force clearer thinking than bullet points, because a narrative has to connect claims, reasons and trade-offs. Slides let gaps hide behind formatting and the presenter's delivery. The meeting starts with everyone reading the document silently, so everyone actually has the same context. Discussion then focuses on the hard questions rather than on a presentation. As an engineer, I would write a design doc that way: the customer problem, the tenets, options considered, the proposal, risks and open questions. The appendix holds the data. The cost is writing time, but it is cheaper than a misaligned decision.
18What are the trade-offs of two-pizza teams that communicate only through APIs?Very often asked
The benefits are autonomy and speed. A small team owns a service end to end, can deploy independently, and has a clear owner for every alarm. API-only access, from the well-known early-2000s mandate, stops hidden coupling through shared databases, so teams can change internals freely. The costs are duplication, coordination overhead for cross-cutting changes, and many dependencies that each can fail. A checkout call may fan out to dozens of services. That pushes you toward strong API contracts, versioning, timeouts, fallbacks and dependency dashboards. Someone also has to own the end-to-end experience, such as the delivery promise, even though no single team owns every piece.
19Give examples of controllable input metrics for this pipeline that a weekly business review would inspect.Very often asked
Output metrics like revenue or order count are results; the team cannot directly move them. Inputs it can move include in-stock rate for top items and promise accuracy, meaning the share of orders delivered by the promised date. Others are click-to-ship time at each node, pick failure rate, mis-sort rate at sortation, first-attempt delivery success by delivery station, checkout latency at the 99th percentile, payment authorisation success by method, and the double-charge or reconciliation exception count. A good review looks at week-over-week trends and anomalies, asks owners to explain variance, and turns findings into actions. It should also check that each metric's definition is still measuring what we think.
20What goes into a Correction of Error document, and what makes one good?Very often asked
A COE covers the customer impact with data, a timeline, and the detection and response. It asks repeated 'why' questions to reach the root causes, lessons learned, and concrete action items with owners and dates. A good one is blameless: it assumes people acted reasonably given the information they had, and asks why the system let the mistake happen. It also asks why detection was not faster and why the blast radius was that large. Good action items are mechanisms, such as automated checks, alarms or deployment safeguards, rather than 'be more careful'. For example, a double-charge incident should end with an idempotency test in the pipeline, not a reminder email.
21How do you handle card data securely in this pipeline, especially in India?Very often asked
Card numbers should never touch most of our services. The checkout page collects card data in a PCI DSS scoped component or via the gateway's hosted fields, and the rest of the system sees only a token. Under RBI card-on-file tokenisation rules, merchants in India cannot store full card numbers for saved cards and must use network or issuer tokens instead. Logs and events must exclude card data and CVV entirely, and should mask other personal data. Payment service access uses least privilege and short-lived credentials, keys live in a managed key service, and the order events carry payment references, not instruments.
22The payment service is partially down during checkout. How should the system degrade?Very often asked
Never fake success on payment, because that breaks money guarantees. I would route around failure by method: if one gateway or the card path is failing, keep UPI or other healthy methods available and tell the customer clearly. Use retries with the same idempotency key and backoff, and use circuit breakers so a failing dependency does not exhaust threads. Option to accept the order with payment pending and authorise asynchronously is a business decision: it raises fraud and failed-payment risk, so I would only allow it for low-risk customers and amounts. Everything upstream, like the cart and browsing, should keep working, because it does not need payment.
23How does pay-on-delivery change the workflow on amazon.in?Often asked
There is no authorisation, so the order is created with payment pending collection, and the stock is reserved without any funds held. The risk shifts to refusal at the doorstep, which becomes a return-to-origin parcel and costs two-way logistics. Controls include eligibility rules by pincode, order value and customer history, and limits on open pay-on-delivery orders. The driver app records cash or digital collection at the door, and that becomes the payment event. It must still be idempotent, because the app may resend offline. Cash collected by drivers must be reconciled with delivery station deposits. Refused parcels release their reservation back to inventory only after they are received and graded at the node.
24UPI payments can stay pending. How do you handle that state?Often asked
UPI confirmation can arrive asynchronously, after the customer approves in their app. I model payment states explicitly: initiated, pending, success, failed. The order is created in a pending-payment state with stock reserved for a short window. Success arrives through the gateway callback or a status poll using the same transaction reference. Both paths go through one idempotent handler, so the order moves to confirmed exactly once. If the window expires without success, the reservation is released and the order is cancelled. If money later shows as debited, reconciliation triggers an automatic refund. The customer screen must say pending clearly, so they do not pay twice.
25Scan events arrive late or out of order. How do you keep tracking correct?Often asked
Driver apps work offline and batch uploads, so order of arrival is not order of occurrence. Each event carries a device timestamp and a per-device sequence number, and is deduplicated by event ID. The state machine only allows forward transitions in its lifecycle, so a late 'out for delivery' event cannot overwrite 'delivered'. It is still stored in the history and shown in the timeline by event time. Clock skew on devices is handled by using the sequence number within a device and server receive time as a tiebreak. Exceptions such as damage or delivery attempted are allowed to move the state sideways, and conflicts are flagged for review rather than silently resolved.
26How do you handle proof of delivery and driver location data responsibly?Often asked
Proof of delivery may include a delivery code, a photo or a geotag. That data is personal, so I collect only what is needed for the dispute window, encrypt it, restrict access by role, and delete it on a defined retention schedule. Live driver location is shown to the customer only near their stop and only while the parcel is out for delivery, not as a full route. Customer phone numbers should be masked through call bridging, so drivers never see raw numbers. In India, this also needs to align with the Digital Personal Data Protection Act's obligations around purpose limitation and consent. Every access to proof-of-delivery photos is logged.
27Address validation in India is messy. How would you approach it at checkout?Often asked
Start with pincode serviceability, because it decides whether a promise is even possible and which delivery station owns the address. Then normalise free text: house, street, locality, landmark. Match it against known delivered addresses and geocodes to suggest corrections, while accepting landmarks because many addresses rely on them. Ask for a pin drop on the map where geocoding confidence is low. I would not block checkout on low confidence. I would flag it so the delivery station can call ahead. Feedback from failed attempts, such as 'address not found', updates the address quality score, so the next order to that address gets a better prompt.
28How do you handle reservations for orders that are never completed?Often asked
Every reservation has an owner and an expiry. For confirmed orders, the reservation lives until pick. For pending payment, such as a UPI or 3-D Secure flow, it gets a short time-to-live. A sweeper, or a TTL on the reservation record plus an expiry event, releases stock when the window passes without confirmation. Release must be idempotent and conditional on the reservation still being unconsumed, so it never frees a unit that was already picked. I would measure the reserved-but-unconverted ratio, because a TTL that is too long hides sellable stock during a sale, while one that is too short cancels customers who are mid-payment.
29Tell me about a time you worked backwards from the customer.Often asked
I use a STAR structure. For example: our team was asked to build a bulk order export. Instead of starting with the database, I wrote a one-page customer-facing announcement and FAQ and showed it to three account managers. Their questions showed that customers did not want exports at all. They wanted a weekly reconciliation of discrepancies. We changed the scope to an exceptions report, which was smaller to build. Adoption was strong, and support tickets on that topic fell noticeably. The lesson I took was that writing the customer announcement first is the fastest way to discover you are solving the wrong problem. I would quantify results with real numbers from my own experience.
30How would you draft a PR/FAQ for same-day delivery in smaller Indian cities?Often asked
The press release names the customer and the benefit in plain words. For example: shoppers in a listed city can get eligible items the same day if ordered before a cutoff. It says why that matters to them and includes a customer quote. The external FAQ answers which items qualify, the cost, and what happens if the parcel is late. The internal FAQ covers the hard parts: which nodes hold the right selection, last-mile capacity and driver supply, how the promise service avoids overpromising, unit economics, and the risks. If the internal FAQ cannot answer whether we can keep the promise reliably, the project should not start yet.
31Your checkout depends on another team's service, and it gets slow during peak. What do you do?Often asked
In the moment, I protect checkout. I use tight timeouts, a circuit breaker, and a fallback where one is safe. For a non-critical call like recommendations, I skip it. For a critical one like the promise, I might use a cached, more conservative estimate rather than fail. Afterwards, I raise it through the owning team's channels with data such as latency charts and call volumes, because they own the fix. Together we agree on an SLA, load-test jointly before the next sale, and consider pre-scaling or caching. If it caused customer impact, it gets a COE. I would not reach into their database or fork their logic; the API is the contract.
32What alarms would you put on this order pipeline?Often asked
I would put alarms on customer-facing symptoms first. These include checkout error rate and latency, authorisation success rate per method, and order creation rate compared with the same time last week, because a drop often signals a silent failure. Then workflow health: orders stuck in one state past a threshold, outbox relay lag, consumer lag on order events, and reservation failures. For money, I would alarm on capture count per shipment greater than one and reconciliation mismatches. For delivery, I would watch parcels with no scan for too long and promise-at-risk counts by station. Each alarm needs an owner, a runbook and a severity, and should page only when it needs human action now.
33How would you limit the blast radius of a bad deployment in this system?Often asked
Use cell-based architecture: split customers or regions into independent cells, each with its own stack, so one bad cell affects a fraction of traffic. Amazon has written publicly about cells and shuffle sharding for this reason. Deployments roll out gradually, one box, then one zone, then one region, with automated rollback on alarm, and bake time between waves. Feature flags separate deploy from release. Business code freezes before major sales reduce risk when stakes are highest. For data changes such as schema migrations, use expand-and-contract, so old and new code both work during the rollout and rollback stays possible.
Objective questions 33
1Which pattern reliably saves an order and publishes its order-created event without a distributed transaction?Asked almost every time
Why: The outbox row commits atomically with the order, and a relay publishes it at least once, so neither the order nor its event is lost.
2What is the safest way to prevent overselling the last unit under concurrent checkouts?Asked almost every time
Why: A conditional write lets exactly one concurrent request win, while read-then-write races and lets both succeed.
3A client retries order creation with the same idempotency key after a timeout. The server should…Asked almost every time
Why: Idempotency means the same key returns the same outcome, so retries never create duplicate orders or charges.
4When does Amazon publicly say it charges a customer's payment for a typical order?Very often asked
Why: Amazon's help pages state that payment is charged when the order ships; checkout only authorises, which also handles split shipments cleanly.
5What is the purpose of the FAQ in a working-backwards PR/FAQ?Very often asked
Why: The FAQ tests the idea by answering hard customer and stakeholder questions early, so weak ideas are changed or dropped before engineering effort is spent.
6At the start of an Amazon six-pager meeting, attendees typically…Very often asked
Why: Amazon has publicly described starting meetings with silent reading, so everyone shares the same context before discussion.
7The 'two-pizza team' idea mainly describes…Very often asked
Why: It is a size heuristic: teams small enough to stay fast and own a service end to end.
8In Amazon's operating vocabulary, COE stands for…Very often asked
Why: A Correction of Error is Amazon's post-incident analysis with root causes and action items.
9Which is a controllable input metric rather than an output metric for a fulfilment team?Very often asked
Why: Promise accuracy is something the team can directly act on, whereas revenue and profit are outcomes.
10An order splits into two shipments that ship on different days. With charge-on-ship, payment is…Very often asked
Why: Each ship event triggers a capture for that shipment's amount, matching the practice of charging when items ship.
11Under RBI card-on-file tokenisation rules, an Indian merchant saving a card for repeat purchases should…Very often asked
Why: RBI rules prevent merchants from storing actual card data for saved cards, so tokens are used instead.
12Event consumers in the order pipeline receive messages at least once. Therefore they must be…Very often asked
Why: Redelivery is expected with at-least-once delivery, so processing the same event twice must have the same effect as once.
13The goal of fulfilment-centre selection in this workflow is to…Very often asked
Why: The promise is a constraint, and among feasible plans the lowest total cost, including any split, wins.
14The widely reported early-2000s API mandate at Amazon required teams to…Very often asked
Why: Teams had to expose data and functions only through service interfaces, with no direct database access between them.
15Payment is authorised, but inventory reservation then fails for every node. In a saga, the compensating step is to…Very often asked
Why: Compensation undoes completed steps, so the hold is released without ever charging the customer.
16In working backwards, the PR/FAQ is written…Very often asked
Why: The press release and FAQ define the customer value and hard questions before engineering begins.
17Which step most needs strong consistency?Very often asked
Why: Reservation decides whether a unit is sold, so stale reads there cause overselling, while the others tolerate eventual consistency.
18The delivery promise at checkout is best computed from…Very often asked
Why: A promise is only honest if it reflects where stock is and whether processing, transit and last-mile capacity exist.
19A cancel and a ship-confirm arrive at the same moment. The correct design is…Very often asked
Why: Conditional writes on the order line state ensure the system never confirms a cancellation and also captures payment.
20Why should order creation use an idempotency key?Often asked
Why: Network timeouts cause clients to retry; an idempotency key lets the server return the original result instead of creating a second order or payment.
21To keep all events for one order in sequence on a partitioned stream, you should…Often asked
Why: Streams typically guarantee order within a partition, and keying by order ID keeps one order's events together while still scaling across partitions.
22Amazon's 2007 Dynamo paper describes a shopping cart that…Often asked
Why: Dynamo prioritised availability for the cart and merged conflicting versions, accepting that deleted items could occasionally reappear.
23A UPI payment shows pending after the customer approves. The correct handling is…Often asked
Why: Pending is an unknown outcome, and reconciling under the same reference avoids duplicate debits.
24A late 'out for delivery' scan arrives after 'delivered'. The tracking state should…Often asked
Why: A forward-only state machine prevents late events regressing state, while history still keeps every scan.
25A shipment is delayed beyond the authorisation hold's validity. Before capture you should…Often asked
Why: Expired holds may not be capturable, so a fresh authorisation is needed before charging at ship time.
26A key operational risk specific to pay-on-delivery is…Often asked
Why: With no prepayment, customers can refuse the parcel, creating two-way logistics cost and inventory delay.
27Cell-based architecture mainly helps by…Often asked
Why: Independent cells mean a bad deployment or fault affects only the traffic routed to that cell.
28A hot SKU during a flash sale causes write contention on one inventory row. A common fix is to…Often asked
Why: Spreading quantity across buckets spreads writes, and each bucket still uses conditional decrements so stock never goes negative.
29For proof-of-delivery photos, a privacy-respecting design should…Often asked
Why: Purpose limitation and least access reduce exposure of personal data while still supporting disputes.
30Amazon's narrative memos are meant to replace…Often asked
Why: Amazon has publicly said narratives force clearer reasoning than slide-based presentations.
31A weekly business review is most useful when it…Often asked
Why: WBRs focus on metrics teams can act on and on explaining variances, which drives what to fix next.
32To absorb a sudden burst of ship events without overloading the payment service, you should…Often asked
Why: Queue-based load levelling smooths bursts, and idempotent captures make retries from the queue safe.
33Serving the customer tracking page cheaply at scale is best done by…Often asked
Why: A CQRS read model turns each page view into a single key lookup, while the event log stays the source of truth.
Track your progress through every blueprint in your dashboard.
Start learning