System Design
What is System Design?
System design is the practice of deciding how the components of a software system fit together to meet requirements for scale, latency, availability and cost. Unlike coding problems, design problems have no single correct answer — the skill being tested is whether you can state the trade-offs behind your choices and defend them under new constraints.
System design interviews are not a memory test, though they are often prepared for like one. Reciting a diagram of Twitter's architecture fails the moment the interviewer changes a constraint. This guide covers the building blocks first, then the judgement for combining them.
Fundamentals
The vocabulary and mental models everything else builds on.
- Vertical vs horizontal scaling
- Latency, throughput and bandwidth
- Availability, reliability and fault tolerance
- The CAP theorem and what it actually constrains
- Consistency models: strong, eventual, causal
- Back-of-the-envelope estimation
Articles on fundamentals
- SQL vs NoSQL: How to Actually Choose10 September 2026
- Consistent Hashing Explained8 September 2026
Networking and delivery
How a request reaches your system, and what sits in front of it.
- DNS resolution
- HTTP, HTTPS and connection reuse
- Load balancing algorithms
- Layer 4 vs layer 7 load balancing
- Reverse proxies and API gateways
- Content delivery networks
- WebSockets, long polling and server-sent events
Data storage
Where the hard trade-offs live. Most design interviews turn on this section.
- Relational databases and B-tree indexing
- SQL vs NoSQL and how to choose
- Leader-follower and multi-leader replication
- Sharding strategies and hotspots
- Consistent hashing
- ACID and BASE
- Transaction isolation levels
- Object and blob storage
Articles on data storage
- SQL vs NoSQL: How to Actually Choose10 September 2026
- Consistent Hashing Explained8 September 2026
Caching
The highest-leverage optimisation available, and the easiest one to get subtly wrong.
- Cache placement: client, CDN, application, database
- Cache-aside, read-through, write-through, write-back
- Eviction policies: LRU, LFU, FIFO
- Cache invalidation strategies
- Thundering herd and cache stampede
- Redis vs Memcached
Asynchronous systems
Decoupling producers from consumers, and the failure modes that come with it.
- Message queues and brokers
- Publish-subscribe
- Kafka partitions, offsets and consumer groups
- Delivery guarantees and idempotency
- Dead letter queues and retry strategies
- Stream processing
Architecture and operations
How systems are structured, deployed and kept alive.
- Monolith vs microservices
- Service discovery
- REST, GraphQL and gRPC compared
- Rate limiting algorithms
- Circuit breakers and bulkheads
- Logs, metrics and distributed tracing
- Consensus and leader election
Design case studies
Full designs worked end to end, the same way you would in an interview.
- URL shortener
- Rate limiter
- News feed
- Chat system
- Ride-hailing service
- Video streaming platform
- Distributed search
- Notification system
Learn all of this in one structured course
Everything in the DSA course, plus a full System Design curriculum that covers the building blocks of large-scale systems and the judgement to combine them. Built for engineers targeting senior, staff and architect roles.
View the DSA + System Design courseSystem Design: frequently asked questions
How do I start preparing for a system design interview?
How much experience do I need for system design interviews?
What structure should I follow in a system design interview?
Is system design only about scale?
Ready for the role you're aiming for?
Pick the course that matches where you are and start this week.
Free · 15 min · No cost, no spam