LearnTopic guide

System Design

There's rarely one correct architecture — system design is the practice of naming the tradeoffs explicitly and picking the ones that fit the actual constraints.

Topic overview

Study requirement gathering (functional and non-functional), back-of-envelope capacity estimation, horizontal vs. vertical scaling, caching layers, load balancing strategies, database replication and sharding, and message queues for decoupling services.

Core concepts

Estimating scale (QPS, storage, bandwidth) before designing, stateless vs. stateful services, cache placement and invalidation, load balancer algorithms (round robin, least connections), read replicas vs. sharding for database scale, and the CAP theorem's consistency-availability tradeoff under partition.

Why it matters

Every real system design decision trades one property for another — more caching means staler data, more replicas means harder consistency, more queueing means more latency. Naming these tradeoffs explicitly, instead of pretending a design has none, is what production systems actually require.

Interview relevance

There's no single "correct" architecture — what matters is estimating scale, justifying each component you add, and naming the tradeoff it introduces, especially around consistency, latency, and failure handling.