🏗️ Software System Design Guide
Learn how large-scale systems are built — from scalability and caching to databases and real-world case studies. A clear, free guide for engineering students and interview preparation.
📚 Fundamentals
The core building blocks behind every scalable system.
How to Approach System Design
A simple, repeatable framework for any system design problem — clarify requirements, estimate scale, sketch the high-level design, deep-dive components and find bottlenecks.
Read lesson →Scalability: Vertical vs Horizontal Scaling
Understand scalability in system design — vertical vs horizontal scaling, stateless services, and why horizontal scaling is the backbone of large systems.
Read lesson →Load Balancing
How load balancers distribute traffic across servers — round robin, least connections, hashing, Layer 4 vs Layer 7, and health checks for high availability.
Read lesson →Caching
How caching speeds up systems — where to cache, write-through vs write-back vs write-around, eviction policies like LRU, and the hard problem of cache invalidation.
Read lesson →SQL vs NoSQL Databases
When to choose SQL vs NoSQL in system design — ACID vs BASE, relational vs document/key-value/wide-column/graph stores, and how to pick for your workload.
Read lesson →Sharding and Replication
How to scale databases with replication (copies for reads and failover) and sharding (partitioning data across nodes) — strategies, hotspots and trade-offs.
Read lesson →The CAP Theorem
The CAP theorem in plain English — consistency, availability and partition tolerance, why you can only pick two during a partition, and the PACELC extension.
Read lesson →Message Queues & Async Processing
How message queues decouple services and smooth spikes — producers, consumers, pub/sub, at-least-once delivery, and when to process work asynchronously.
Read lesson →Consistent Hashing
Why naive hashing breaks when servers change, and how consistent hashing (the hash ring + virtual nodes) minimises data movement in distributed caches and databases.
Read lesson →API Design & Rate Limiting
Principles of good API design — REST, idempotency, pagination and versioning — plus rate limiting algorithms like token bucket and sliding window.
Read lesson →📐 Case Studies
Apply the building blocks to real design problems asked in interviews.
Design a URL Shortener (TinyURL)
A full walkthrough of designing a URL shortener like TinyURL — requirements, scale estimation, short-key generation, data model, caching and redirects.
Read lesson →Design a News Feed
How to design a social news feed like Instagram or Twitter — fan-out on write vs read, the celebrity problem, feed ranking, caching and storage.
Read lesson →Design a Chat System (WhatsApp)
Designing a real-time chat system like WhatsApp — WebSockets, message delivery and ordering, online presence, storage and delivery to offline users.
Read lesson →Preparing for placements?
System design pairs with coding rounds and company prep. Keep going: