100 Essential System Design Concepts
A revision sheet covering 100 system design concepts, each with a concrete example, grouped from fundamentals through databases, distributed consistency, reliability and operations.
Quick Navigation
Difficulty: Intermediate
Estimated Time: 30-45 minutes
Prerequisites: Basic backend development, Familiarity with databases, Understanding of HTTP, Basic networking
A revision sheet: 100 system design concepts, each with a concrete example. Useful as interview preparation, as a vocabulary check before a design review, or as a map of what you have not yet had to learn.
Fundamentals (1-10)
- Latency — how long one request takes. 200 ms to start playing a video.
- Throughput — requests served per second. 10,000 concurrent streams.
- Vertical scaling — make the machine bigger. 16 GB to 128 GB of RAM.
- Horizontal scaling — add machines. 3 to 50 servers on Black Friday.
- Availability (SLA) — 99.99 percent means about 52 minutes of downtime per year.
- Fault tolerance — surviving the loss of a component. Three replicas, one dies, service continues.
- SPOF — single point of failure. One load balancer with no backup.
- Percentiles (p50/p95/p99) — the average lies. p99 at 3 s while p50 is 40 ms.
- Back-of-the-envelope estimation — size it before you design it. 1M users times 10 KB equals 10 GB/day.
- Amdahl's law — the sequential portion caps the benefit of parallelism.
Traffic and Distribution (11-20)
- L4 vs L7 load balancing — routing by IP and port versus by HTTP content. L7 sends
/apiand/imgto different backends. - Round-robin and least-connections — the distribution algorithms themselves.
- Sticky sessions — pinning a client to one server. An in-memory shopping cart, best avoided.
- Stateless services — no session state on the server. A JWT carries the identity.
- Reverse proxy — Nginx in front of the backends for TLS, compression and caching.
- DNS and GeoDNS — routing users to the nearest datacenter.
- Anycast — one IP address announced from several sites.
- CDN — static assets served at the edge. Cloudflare serves the image from Paris.
- Auto-scaling — add instances based on load. Five more pods when CPU exceeds 70 percent.
- Connection pooling — reuse database connections. PgBouncer, 20 connections serving 500 requests.
Caching (21-29)
- Cache-aside — the application reads the cache, falls back to the database, then fills the cache. The most common pattern.
- Write-through and write-back — write to the cache at the same time as the store, or later.
- LRU/LFU/TTL eviction — deciding what to drop when the cache is full.
- Cache stampede — a thousand requests hit the database the moment a key expires. Fix with a lock or randomised TTL.
- Invalidation — the genuinely hard problem. Purge the key at write time.
- Browser caching and HTTP headers —
Cache-Control,ETag,304 Not Modified. - Local vs distributed cache — process memory (fast, inconsistent) versus Redis (shared).
- Hot key — one key overwhelms a single node. A celebrity profile, solved by replicating the key.
- Materialized view — precompute an expensive result. A leaderboard recalculated every 5 minutes.
Databases (30-45)
- SQL vs NoSQL — transactions versus flexible schema. PostgreSQL for payments, Cassandra for logs.
- B-tree index — lookup in O(log n). Login in 1 ms instead of 2 s.
- Composite indexes and column order —
(user_id, date)servesWHERE user_id=... ORDER BY date. - Primary-replica replication — writes to the primary, reads from the replicas.
- Synchronous vs asynchronous replication — durability versus latency.
- Sharding — split by key. A-M on shard 1, N-Z on shard 2.
- Range vs hash partitioning — sorted ranges versus uniform distribution.
- Consistent hashing — adding a node moves only 1/n of the keys.
- Cross-shard queries — expensive scatter-gather across every shard.
- ACID — atomicity, consistency, isolation, durability. A bank transfer.
- BASE — flexible, eventually consistent. A view counter.
- Isolation levels — read committed, repeatable read, serializable.
- Optimistic vs pessimistic locking — a version number versus
SELECT FOR UPDATE. - LSM-tree vs B-tree — write-optimised (Cassandra, RocksDB) versus read-optimised (MySQL).
- Write-ahead log — journal before applying, replayed after a crash.
- Columnar, time-series and graph stores — ClickHouse for analytics, InfluxDB for metrics, Neo4j for relationships.
Consistency and Distributed Systems (46-58)
- CAP theorem — under a partition, choose consistency or availability.
- PACELC — and without a partition, trade latency against consistency.
- Strong consistency — every read sees the latest write.
- Eventual consistency — replicas converge. An Instagram like appears after 2 seconds.
- Read-your-writes — the author sees their own comment immediately.
- Quorum, R + W greater than N — three replicas, write to two, read from two.
- Consensus (Raft, Paxos) — agreeing despite failures. etcd.
- Leader election — one node orders the writes.
- Split-brain — two leaders after a partition. Solved by majority quorum.
- Vector and Lamport clocks — ordering events without a global clock.
- CRDTs — structures that merge without conflict. Collaborative editing.
- Two-phase commit — blocking, and rarely used in practice.
- Saga — a distributed transaction with compensating actions. Cancel the flight if the hotel booking fails.
Communication (59-70)
- REST — resources, HTTP verbs, stateless.
- gRPC — binary over HTTP/2, fast between internal services.
- GraphQL — the client picks the fields; watch for N+1 queries.
- Message queues — Kafka or SQS decouple producer from consumer.
- Pub/sub — one event, many subscribers.
- At-least-once vs exactly-once — delivery guarantees, and why idempotency matters.
- Dead letter queue — failed messages set aside for inspection.
- Backpressure — slow the producer when the queue grows.
- WebSocket — persistent bidirectional connection. Chat.
- Server-sent events — a server-to-client stream. Live stock prices.
- Long polling — the simple fallback.
- Webhook — the provider calls your URL. Stripe notifies you of a payment.
Architecture (71-80)
- Monolith vs microservices — simplicity versus team autonomy.
- Domain-driven decomposition — services aligned to business domains.
- API gateway — authentication, routing and quotas at one point.
- Service mesh — Istio handles mTLS, retries and telemetry outside application code.
- Service discovery — Consul or DNS finds the live instances.
- Backend for frontend — one API shaped for mobile, another for web.
- Event sourcing — store the events, not the final state.
- CQRS — separate the write model from the read model.
- Sidecar — a companion container for cross-cutting concerns.
- Batch vs streaming — a nightly Spark job versus continuous Flink processing.
Reliability (81-90)
- Idempotency — replaying does not double the effect. Stripe's
Idempotency-Key. - Retry with exponential backoff and jitter — retry without causing a thundering herd.
- Circuit breaker — stop calling a failing service.
- Bulkhead — isolate pools so one failure does not contaminate the rest.
- Timeouts — never make a network call without one.
- Graceful degradation — serve a reduced version. Generic recommendations when the model is down.
- Health checks and heartbeats — Kubernetes restarts a pod after three failed probes.
- Rate limiting — token bucket, 100 requests per minute, otherwise HTTP 429.
- Chaos engineering — deliberately breaking things in production.
- Blue-green and canary — deploy to 1 percent of traffic before everyone.
Security and Operations (91-100)
- AuthN vs AuthZ — who you are versus what you may do. OAuth2 plus RBAC.
- JWT vs sessions — a self-contained signed token versus server-side state.
- TLS and mTLS — encryption, and mutual verification between services.
- Encryption at rest and secrets management — Vault, KMS, never a hardcoded secret.
- OWASP basics — SQL injection, XSS, CSRF.
- Observability — logs (what), metrics (how much), traces (where). Jaeger reveals 2.8 s spent in an unindexed query.
- SLI, SLO and error budget — measure, target, and arbitrate between speed and stability.
- Alert on symptoms — alert on user-visible latency, not on CPU.
- Backups with RPO and RTO — an untested backup does not exist.
- Feature flags — enable and disable without redeploying, and kill fast during an incident.
How to Use This List
Reading it end to end is the least useful thing you can do with it. Two better approaches:
- Gap-finding. Go through once and mark every entry you could not explain to a colleague for two minutes. That list, not this one, is your study plan.
- Design review checklist. Before shipping a design, walk the Reliability and Security sections and ask which of those ten items your design has an answer for. Most gaps in real systems are in items 81 to 90, not in the exotic distributed systems theory.
Depth matters more than coverage. Knowing that CAP exists is worth very little; being able to say which side your database picks under a network partition, and what your application does when that happens, is the actual skill.
Tags: #SystemDesign #DistributedSystems #Architecture #Scalability #Interview