System Design in 30 Days
For engineers who want to design real systems, not memorize diagrams.
A structured month through the canonical system designs — from a URL shortener to Uber — each built on the fundamentals it needs: capacity math, caching, partitioning, consistency. Design the system, then implement the primitive underneath it.
- Do back-of-the-envelope capacity math before you design
- Sketch the canonical architectures from memory
- Reason about caching, partitioning and consistency tradeoffs
- Walk a whiteboard interview end to end
The System Design Fundamentals Handbook
The vocabulary: latency, throughput, consistency, the napkin math.
Interactive Capacity Estimator
Do the back-of-the-envelope: QPS, storage, bandwidth.
CAP Theorem & Consistency Models
The tradeoff that shapes every distributed design.
Design a URL Shortener
Warm up: reads, hashing, and a KV store.
Design a Rate Limiter
Protect the system: token bucket at scale.
Token Bucket Rate Limiter
Implement the limiter you just designed.
Design a Key-Value Store
The storage layer everything else sits on.
The Caching Patterns Handbook
Where and how to cache without lying to users.
Design a Distributed Cache
Cache at scale: sharding, eviction, hot keys.
Consistent Hashing Visualizer
Feel how consistent hashing spreads and rebalances keys.
Design a News Feed
Fan-out on write vs read — the feed problem.
Design Twitter
Timelines at Twitter scale.
Design WhatsApp
Real-time messaging: delivery, presence, ordering.
Design a Notification System
Push at scale without melting downstream.
Partitioning, Sharding & Replication
Split the data, keep the copies honest.
Design a Message Queue
The async backbone: queues, offsets, delivery.
Design a Search Engine
Inverted index, ranking, and query serving.
Design YouTube
Storage, CDN and transcoding at video scale.
Design Uber
Geospatial matching in real time.
Design a Payment System
Money: idempotency, ledgers, exactly-once.
50 System Design Interview Questions
Package it all for the whiteboard.