Design a Chat System – senior-level system design challenge
Messages and history reads grow to 10,000 a second, then New Year's midnight triples it. Keep sends fast and every message delivered within 10 seconds, within budget.
Requirements
Peak traffic: 10,000 req/s, 30,000 at midnight
Sends : reads: 40 : 60
p99 latency: ≤ 300 ms
Delivery: every message within 10 s
Errors: ≤ 0.5%
Budget: ≤ $15,000/month at peak
Goal
Hold p99 latency under 300ms, error rate under 0.5%, cost under $15,000/month through every stage of the test plan, then compare your design with a reference design.
The test plan
Morning: 2,000 requests per second.
Evening peak: 10,000 requests per second.
New Year's midnight: 30,000 requests per second.
After midnight: 10,000 requests per second.
Hint
Sends and reads want different designs. Acknowledge a send as soon as it's safely on a queue and let workers write it to the message store; serve history from a cache. Writes are 40% of traffic, so the message store needs more write capacity, not just read replicas.
Solve it on the live simulator, free and in your browser.
Hello, Load Balancer - One API server is drowning under 1,500 RPS. Get error rate to zero without touching the traffic.
Cache Money - Your database is at 95% utilization serving reads it has answered a thousand times. Cool it down below 50%.
Design a URL Shortener - Redirect traffic grows from 1,000 to 20,000 requests per second. Keep every redirect fast through a cache restart and a server failure at peak, within budget.
The Stampede - Your cache will be flushed mid-run. Survive the stampede - keep errors under 5% while it refills.
Queue It Up - Write traffic spikes 5× partway through. Absorb the burst without dropping a single write.
Stop the Scraper Flood - A scraper is about to hit your public API with 10× normal traffic. Keep real users' requests fast while the flood lasts, and be healthy again the moment it stops.
Design a Notification System - Your app sends push notifications through a provider that accepts 2,000 a second. Breaking news is about to multiply events 20×. Deliver every notification within a minute without the provider rejecting any.
Design a News Feed - Timeline reads and new posts grow to 30,000 requests a second at peak. Keep timelines fast, get every post into followers' feeds and search within 10 seconds, within budget.
The Retry Storm - Your database is about to slow down by 400 ms. Your clients retry failures up to three times. Keep the API standing.
Black Friday - Traffic is 12,000 RPS and the CFO capped infra at $3,000/month. Keep p99 under 300ms and errors under 1%.
Chaos Monkey - A monkey will kill your busiest API server mid-run. Design for redundancy so users never notice.
The CTO Budget Cut - This system works - and burns about $15,000/month doing it. Hit the same SLOs for under $1,500/month.