Food Delivery
Order placement shares the fleet with a nonstop courier-location firehose.
Keep orders flowing and couriers trackable through the dinner peak while an instance dies and the orders store blips.
Courier phones fire a constant stream of location pings alongside every order placed — a queue has to absorb that firehose before it reaches the store, while a geo cache keeps 'where's my courier' a fast lookup instead of a database hit.
Components in play
- Regional LB — Spreads order and ping traffic across the fleet.
- Order service — Places orders and records courier pings.
- Courier ping ingest — Absorbs the constant courier-location firehose.
- Courier geo cache — In-memory live courier positions for fast lookups.
- Orders store — Durable order lifecycle state.
Graded on these SLOs
- ≥ 97.00%Orders succeed
- ≤ 130 msOrder + tracking p99
- ≥ 10k rpsServe the dinner peak
- ≤ 90%Fleet headroom
- ≤ 9Lean footprint
The brief
Design the backend for a meal-delivery app: diners place orders while every courier's phone fires a constant stream of location pings. The ping firehose can't be allowed to compete with order placement for capacity, and 'where's my courier' has to stay a fast in-memory lookup — not a database query — while orders themselves must survive a store blip during the dinner rush.
Functional
- Place and confirm an order
- Ingest continuous courier location pings
- Show a diner where their courier currently is
Non-functional
- The ping firehose must not starve order placement
- Courier location lookups are low-latency, served from memory
- Orders survive a dinner-peak traffic spike and a store blip
Warm-up: design decisions
Optional theory to prime the calls a senior engineer would make before you build.
Solving is a Pro feature
Unlock the on-canvas AI design coach, per-run design reviews, the chaos simulator and all 12 problems for $15/month.
- AI design coach on your canvas — pins failure points & over-engineering
- Honest AI design review on every run
- All 12 problems + unlimited chaos simulator
- Points, levels & leaderboard