The meal deal
Size a food-ordering backend to survive the lunch rush without blowing the budget.
Kata overview
You do not need to be an expert to start. This kata keeps the stakes low so you can explore trade-offs, adjust the diagram, and see how the system responds.
Context for this system design kata
Size a food-ordering backend to survive the lunch rush without blowing the budget. This system design kata keeps the stakes low so you can rehearse trade-offs before taking ideas into production reviews.
Scenario and practice focus
FreshBox has a simple flow - customers browse the menu, pick items, and checkout. But simple doesn't mean easy. The lunch rush concentrates demand into a narrow window, and the CTO is watching costs. The challenge isn't building something that works - it's building something that works at peak without costing a fortune at idle. Every component sizing decision (nano, small, medium, large) shifts the cost-performance curve. A CDN can slash menu browsing load, but only if the cache hit ratio is realistic for a daily- rotating menu. The team learned the hard way that serverless isn't always cheaper.
Difficulty: Beginner. Estimated time: 20–30 min. Domain: Food Delivery.
Constraints to balance
Operational pressure
- Fully automated ordering flow.
- Daily menu changes once per morning - cache accordingly.
Customer and product constraints
- The CTO reviews the monthly bill. Keep it defensible.
Scenarios to explore in the simulator
- Keep checkout fast during the concentrated lunchtime window.
- Avoid over-provisioning for peak - the budget is tight.
- Serve the daily menu efficiently to thousands of browsers.
- Make the cost profile stable enough for monthly planning.
Learning outcomes
- Compare cost and latency profiles of nano, small, medium, and large compute sizes.
- Evaluate serverless vs stateless service for bursty workloads.
- Use CDN cache hit ratio to reduce origin load for read-heavy, infrequently-changing content.
- Read a cost breakdown and identify which component dominates spend.
Give it a try!