evolution · senior
Evolution: Survive Your Own Success
Your photo-feed startup just raised a seed round. Design the system that serves today's 2,000 rps — and survives next year's 10x, and the day a celebrity joins and traffic hits 20x. The catch: the budget is a seed budget. Building for the 20x day on day one will bankrupt you on the cost axis.
Steady traffic
2,000 rps
Spike
2×
Budget
$3,000/mo
Functional requirements
- Serve a personalized photo feed with < 250ms p99 latency at every stage
- Store posts durably in a relational store
- Feed reads are 90% of traffic and highly cacheable
Non-functional requirements
- Stage 1 (today): 2,000 rps with 0% errors
- Stage 2 (next year): 10,000 rps with 0% errors
- Stage 3 (celebrity day): 40,000 rps with < 10% errors — graceful degradation beats collapse
- Survive a region-A database outage at stage-2 traffic with < 1% errors
- Total infrastructure cost under $3,000/month
Failure scenarios the sim will run
- ⚡ Stage 1: launch (2k rps)
- ⚡ Stage 2: a year later (10k rps)
- ⚡ Stage 3: celebrity joins (40k rps)
- ⚡ Region-A database outage at stage-2 traffic
How you'll be graded
- Every growth stage is survived25% · scalability
Stages 1 and 2 must run clean; stage 3 may degrade but not collapse.
- The read path leans on caching17% · scalability
A 90%-read feed must be served from cache layers; the hit-ratio claim must be defended for a feed workload (fan-out, personalization).
- Survives the database outage at scale25% · availability
All region-A databases die for 60s at 10k rps; the feed must keep serving.
- Spend matches the current stage17% · cost-efficiency
Under $3,000/month. The PRR penalizes capacity bought for stage 3 that stage 2 cannot justify — name what you would scale later instead.
- The growth narrative holds up17% · justification-quality
Capacity math per stage, what breaks first at each stage, and what you would change between stages.
Best on desktop — the canvas needs room to breathe. Drafts autosave locally.