Design Inventory Availability and Order Placement
CitadelSoftware Engineer · Technical ScreenLast updated
Design e-commerce inventory availability and order reservation without overselling under concurrent requests. Define on-hand, reserved, and available invariants; atomic multi-item placement; idempotent retries; expiration; and optimistic versus pessimistic control for hot SKUs.
Design Inventory Availability and Order Placement
Design the inventory portion of an e-commerce system with two core operations:
- Query the currently available quantity for a product.
- Place an order for one or more units without overselling under concurrent requests.
Focus on data contention, transactional boundaries, and the tradeoffs between optimistic and pessimistic concurrency control.
Constraints & Assumptions
- Inventory is tracked per product SKU at one logical fulfillment location.
- A placement request has an idempotency key and either reserves all requested units or none.
- Concurrent orders may target the same popular SKU.
- Canceled or expired orders release their reservation.
- Payment processing is outside scope, but reservation state must support a later confirm or cancel operation.
Clarifying Questions to Ask
- May availability reads be slightly stale, or must they reflect every committed reservation?
- Is an order for multiple SKUs atomic across all items?
- How long does a reservation live before expiration?
- What is the expected contention level for the hottest products?
- Should a failed placement return the exact unavailable SKU and current quantity?
Hints
- Distinguish on-hand, reserved, and available inventory.
- Make the capacity check and reservation write one atomic decision.
- Compare retry behavior under optimistic control with lock wait behavior under pessimistic control.
Follow-up questions
- How would you prevent deadlocks when an order contains several SKUs?
- When would a database row lock outperform optimistic retries?
- How would you reconcile inventory after a crash between reservation and event publication?
- What availability should the query show while a reservation is pending payment?
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.