Skip to main content

System Design Knowledge Base

A structured reference for engineers preparing for system design interviews or building production-grade distributed systems.

What's Covered

TopicDescription
Architecture FundamentalsCAP theorem, consistency models, trade-offs
Capacity Planning & EstimationBack-of-envelope math, traffic/storage estimation
Interview FrameworkStructured approach to design interviews
Scaling ReadsCaching, read replicas, CDN, CQRS
Scaling WritesSharding, partitioning, write-ahead log
Real-Time UpdatesWebSocket, SSE, polling strategies
Handling ContentionLocks, MVCC, optimistic concurrency
Large Blob StorageObject storage, chunking, CDN delivery
Multi-Step ProcessesSagas, orchestration, choreography
Long-Running TasksJob queues, async patterns, progress tracking
Microservices PatternsService mesh, circuit breaker, API gateway
Database DesignNormalization, indexing, partitioning
Caching StrategiesCache aside, write-through, eviction policies
Message Queues & StreamingKafka, RabbitMQ, pub/sub, event sourcing
API DesignREST, gRPC, GraphQL, versioning
Distributed SystemsConsensus, leader election, clock sync
Security PatternsAuthN/AuthZ, rate limiting, zero trust
Common Interview QuestionsFull question bank with discussion points

How to Use This Guide

  1. For interviews — Start with the Interview Framework, then study each pattern topic.
  2. For production systems — Jump directly to the relevant pattern topic.
  3. For review — Use the Common Interview Questions page as a self-test.

Key Principles to Internalize

  • There is no silver bullet — every design choice is a trade-off.
  • Identify bottlenecks first — don't optimize prematurely.
  • Consistency vs. Availability — know which one your use case needs.
  • Data is the hardest part — compute is cheap, storage and consistency are not.