System Design
Learn to design large-scale, reliable distributed systems. This visual, diagram-driven course covers fundamentals and estimation, networking, scaling and load balancing, caching and CDNs, databases and storage, consistency and replication, messaging and event-driven design, reliability and resilience, architecture patterns, and real-world case studies (URL shortener, news feed, chat, video platform and more).
Course Tutorials
Beginner
6 TutorialsSystem Design Fundamentals
The design process, gathering requirements, back-of-the-envelope estimation, and the core metrics and trade-offs every s...
Networking & Communication
How distributed components talk to each other: DNS, HTTP/HTTPS, TCP vs UDP, REST, RPC and WebSockets.
Scaling & Load Balancing
Vertical vs horizontal scaling, load balancers and their algorithms, and designing stateless services that scale out.
Caching & CDNs
Why and where to cache, cache strategies and eviction, the hard problem of invalidation, CDNs and in-memory stores.
Databases & Storage
Choosing storage: SQL vs NoSQL, indexing, replication, sharding and partitioning for scale.
Data Consistency & Replication
The CAP theorem, consistency models, consensus algorithms and distributed transactions.
Intermediate
4 TutorialsAsynchronous Processing & Messaging
Decoupling with message queues and pub/sub, event-driven systems, and stream processing.
Reliability, Availability & Resilience
Redundancy, failover, rate limiting, circuit breakers, health checks and monitoring for systems that stay up.
Architecture Patterns
Monolith vs microservices, the API gateway, CQRS, event sourcing and other high-level patterns.
Real-World System Design Case Studies
Put it all together by designing real systems end to end: a URL shortener, a news feed, a chat system, a video platform...