One system. Every day.
Practical system
design, documented.
Clear breakdowns of real-world systems—the requirements, architecture, data model, bottlenecks, and trade-offs that matter.
Data-intensive systems
Design a Distributed Web Crawler
Discover and fetch billions of pages while respecting websites, avoiding duplicate work, and keeping the crawl frontier healthy.
Archive
All documents
Distributed systems
Design a Distributed Cache
Serve frequently accessed data in milliseconds while handling sharding, hot keys, invalidation, and node failures.
004Distributed systems
Design a Distributed Message Queue
Decouple producers and consumers with durable, ordered delivery that scales across partitions and survives failures.
003Web infrastructure
Design a URL Shortener
Generate compact links, redirect with low latency, and scale reads globally without sacrificing reliability.
002Distributed systems
Design a Distributed Rate Limiter
Protect APIs consistently across regions while keeping enforcement fast and failure modes predictable.
001Event-driven systems
Design a Notification System
Deliver email, push, and SMS notifications reliably while respecting preferences, retries, and provider limits.