All Notes
Browse all system design notes, filtered by category or tag.
A practical comparison of monolithic and microservice architectures — coupling, deployment, scaling, team context — and how to choose between them.
Horizontal partitioning of a database into independent shards — shard key selection, routing, replication with failover, and the operational costs.
Communicating through immutable, persisted events — replayability, idempotency, event sourcing, CQRS, and the trade-offs of eventual consistency.
How message queues decouple producers from consumers, survive worker crashes with retries and reassignment, and form the basis of pub-sub and event-driven systems.
How globally distributed edge servers cut latency for static content, the cache hit/miss flow, and invalidation strategies.
The difference between high-level design (system architecture, modules, interactions) and low-level design (classes, APIs, database schemas, implementation logic).
How load balancers distribute traffic across servers, why naive hashing breaks on scale events, and how consistent hashing with virtual nodes solves it.
Identifying SPOFs in centralized components and the standard toolkit for removing them: redundancy, replication, failover, partitioning, and backups.
Essential patterns for designing, deploying, and operating microservices: decomposition, communication, data management, and operational patterns.
How Netflix built a resilient, scalable streaming platform serving 230M+ subscribers across 190 countries.
A comprehensive comparison of relational and non-relational databases, their trade-offs, and decision frameworks for system design.
Understanding vertical and horizontal scaling, when to use each, and practical patterns for building scalable systems.
Consensus Algorithms: Raft vs Paxos
Comparing Raft and Paxos consensus algorithms, their trade-offs, and when to use each in distributed systems.
CAP Theorem: Understanding the Trade-offs
A deep dive into the CAP theorem, its implications for distributed systems, and how to choose the right trade-offs for your system.