System Design roadmap: a free part-by-part series for developers
A free series that builds system design from the ground up. Start with the basics here, then follow the parts in order. New parts are added every week.

System design is the skill of planning how a software system is built so that it stays fast, reliable and affordable as more people use it. It is asked about in interviews, but it also decides whether a real product survives its first big day.
This series teaches it part by part, in plain language, with examples you can reuse. Each part is short and focused. Read them in order if you are new, or jump to the one you need.
Part 1: the basics
- Scalability explained: vertical vs horizontal scaling
- Latency vs throughput: the two numbers every system design starts with
- CAP theorem in plain words, with examples
- Load balancer: what it does and how to choose an algorithm
- Caching strategies: cache-aside, write-through and write-back
- What is a CDN and how does it make sites faster?
- SQL vs NoSQL: how to choose a database
- Database sharding: splitting data across servers
- Database replication: leader-follower, lag and failover
- Consistent hashing: how to add servers without moving everything
- Rate limiting: token bucket, sliding window and how to build it
- Message queues: why systems use them and how they fail
- API gateway: the front door of a microservice system
- Idempotency: making retries safe
- Back-of-the-envelope estimation for system design
Part 2: building blocks
- Redis internals: why it is fast and how to use it safely
- Apache Kafka explained: topics, partitions and consumer groups
- RabbitMQ explained: exchanges, queues and routing
- Elasticsearch and full-text search: how the inverted index works
- Object storage (S3-style): how to store files at scale
- WebSocket vs Server-Sent Events vs long polling
- gRPC vs REST: which API style to choose
- Bloom filter: checking membership with tiny memory
- Leader election: how distributed systems pick one boss
- Distributed locks: how to build one and why it is hard
- Service discovery: how services find each other
- CQRS: separating reads from writes
- Event sourcing: store events, not just the current state
- Saga pattern: transactions across microservices
Part 3: case studies
- Design a URL shortener: from requirements to scale
- Design Pastebin: storing and sharing text snippets
- Design a chat app like WhatsApp
- Design a news feed like Instagram or Facebook
- Design a video streaming service like YouTube
- Design a ride-sharing service like Uber
- Design a payment system for a mobile wallet
- Design a notification system: push, SMS and email
- Design search autocomplete (typeahead)
- Design file storage and sync like Google Drive
- Design a ticket booking system without double booking
- Design a web crawler
- Design an e-commerce checkout system
- Design a flash sale system that survives the rush
- Design an online judge for coding contests
- Design an ad click aggregation system
Part 4: designing the infrastructure
- Design a distributed unique ID generator (Snowflake)
- Design a distributed cache
- Design a distributed key-value store (Dynamo-style)
- Design a metrics monitoring and alerting system
How to use this series
- If you are new: read parts 1 to 4 first, then the rest in order.
- If you are preparing for interviews: finish the estimation part, then practise by sketching a system on paper using these building blocks.
- If you build products: keep the caching, replication and rate limiting parts open when you design your next feature.
What comes next
More parts are planned: more case studies, how well-known systems evolved, and failure, security and operations (postmortems, zero trust, DDoS defence). The series grows every week.
Have a topic you want covered? Tell us on the contact page.


