Concept 12: The System Design Interview Playbook — Method, Numbers & Estimation
System Design Bible — Bonus File 12 (The Capstone Meta-Skill) Difficulty: ★★★★☆ Why this file exists: Files 01–11 gave you the building blocks. This file gives you the method to assemble them into an answer under pressure — a repeatable step-by-step framework, the back-of-the-envelope numbers every senior engineer has memorized, and battle-tested templates. Concepts without a method is a toolbox without hands.
Table of Contents#
- Prerequisites — The Mindset
- What the Interviewer Is Actually Measuring
- The 6-Step Framework (RADIOS)
- Step-by-Step, In Depth
- Back-of-the-Envelope Estimation
- The Numbers You Must Memorize
- Reusable Design Templates
- How the 11 Concepts Map to Symptoms
- Common Mistakes That Fail Candidates
- Worked Example: Design a URL Shortener
- Level Expectations (Junior → Staff)
- Final Cheat Sheet
0Prerequisites — The Mindset#
Before any framework, internalize three truths about what this interview is, because they change how you behave in the room.
0.1It is a conversation, not a monologue or an exam#
The system design interview is collaborative and open-ended by design. There is no single correct answer — a URL shortener can be built ten defensible ways. The interviewer is playing the role of a teammate/stakeholder you're designing with, and they will deliberately leave the problem vague ("Design Twitter") to see whether you ask clarifying questions, state assumptions, and drive the discussion — or whether you freeze, or charge ahead building the wrong thing. Candidates who treat it like a lecture ("here is my complete design") do worse than those who think out loud, check in ("does this scope sound right?"), and adapt to the interviewer's nudges. Talk continuously, reason visibly, and treat every interviewer comment as a signal to steer toward. Silence and rigidity are the enemies.
0.2They are hiring your judgment about trade-offs, not your memory of architectures#
Anyone can memorize "use Kafka and Cassandra." What separates a hire from a no-hire is **articulating why, and what you're giving up.** Every single decision in this bible came with a trade-off (that's why every file has a Pros/Cons section). The interview is fundamentally a test of whether you can say "I'll use a cache here — it cuts read latency ~100× and offloads the DB, but I'm now accepting eventual consistency and I'll need to handle invalidation and stampede." That sentence — decision + benefit + explicit cost + mitigation — is the atomic unit of a senior answer. Never state a component without its trade-off. A design presented as if it has no downsides signals you don't understand it.
0.3Drive from requirements → scale → design, never design-first#
The single most common failure is jumping straight to boxes and arrows before understanding what's being built or how big it is. The correct causality is: requirements determine scale numbers, and scale numbers determine which architecture is justified. A system doing 100 requests/day needs a single server and a SQLite file; the same feature at 1 million requests/second needs sharding, caching, CDN, and queues. If you design before estimating, you either massively over-engineer (drawing a 12-service architecture for a problem a monolith solves — a red flag for senior roles) or under-engineer (a single database for Twitter's write volume). The numbers tell you how much machine the problem deserves. This is why estimation (§4) sits before deep design in the framework.
1What the Interviewer Is Actually Measuring#
They're scoring you on a rubric — know it so you can deliberately hit each dimension:
- Requirements gathering — do you clarify scope and pin down functional + non-functional requirements before building? (Or do you build the wrong thing?)
- Estimation & scale sense — can you do back-of-the-envelope math to justify choices, and do your numbers drive your design?
- High-level design — can you produce a clean, working architecture that satisfies the requirements?
- Deep dives & trade-offs — when they zoom into one component, can you go deep and articulate alternatives + trade-offs? (This is where senior/staff is decided.)
- Handling bottlenecks & failure — do you proactively find the scaling bottlenecks and single points of failure and address them?
- Communication & collaboration — do you drive, explain clearly, and incorporate feedback?
Notice: raw architecture is only one of six. Trade-off reasoning, scale justification, and communication carry the interview — which is exactly why memorizing this bible's Pros/Cons and Symptom→Solution sections matters more than memorizing diagrams.
2The 6-Step Framework (RADIOS)#
A repeatable structure so you never freeze. Budget your ~45 minutes across it.
| Step | Name | ~Time | Output |
|---|---|---|---|
| R | Requirements — clarify functional + non-functional, scope down | 5 min | Agreed feature list + scale/SLA targets |
| A | API + Data model — define the contract and entities | 5 min | Key endpoints + core schema |
| D | Diagram (high-level) — draw the boxes that satisfy requirements | 10 min | Working end-to-end architecture |
| I | Identify bottlenecks — find the scaling walls & SPOFs | 5 min | List of pressure points |
| O | Optimize / deep-dive — apply the bible's concepts to fix them | 15 min | Scaled, resilient design |
| S | Summarize — recap, state trade-offs & what you'd do with more time | 5 min | Clear wrap-up |
(Do the estimation as the bridge between R and A — see §3.2. Some frameworks call this RESHADED or the "4-step"; the names don't matter, the sequence does: understand → quantify → sketch → stress → deepen → recap.)
3Step-by-Step, In Depth#
3.1Step R — Requirements (5 min, the step that saves you)#
Split into two kinds, and be explicit about both:
Functional requirements — what the system does (features, verbs). For "design Twitter": post a tweet, follow users, view a home timeline, like. Ruthlessly scope down — the interviewer offered a giant problem to see if you'll narrow it. Say: "There's a lot here. Let me focus on posting tweets and generating the home timeline as the core, and treat search, DMs, and notifications as out of scope unless you'd like me to cover them — sound good?" This single move (proposing scope and confirming) is a strong early signal.
Non-functional requirements — the qualities the system must have; these are what actually drive the architecture:
- Scale: how many users (DAU — daily active users), requests/sec, data volume? (You'll quantify in §3.2.)
- Read:write ratio: heavily read-skewed (like Twitter/Instagram, ~100:1) pushes you toward caching, CDNs, read replicas, and fan-out-on-write. Write-heavy pushes toward LSM stores, sharding, queues.
- Consistency vs availability (File 08 CAP): does this data need strong consistency (payments → CP) or is eventual fine (feed/likes → AP)? Ask this explicitly per data type — it's a senior tell.
- Latency targets: what p99 is acceptable? (A timeline in <200ms pushes precomputation/caching.)
- Availability SLA: an SLA (Service Level Agreement) is the availability/latency promise the system commits to, usually written as "nines" of uptime — 99.9% allows ~8.7 hours of downtime a year, 99.99% only ~52 minutes. Ask which is required, because each extra nine roughly means another layer of redundancy (replicas → multi-AZ → multi-region) and a real cost jump.
- Durability: can we ever lose this data? (Payments no; analytics samples maybe.)
Write these on the board. They are your rubric for every later decision — every choice should trace back to a requirement.
3.2The Bridge — Estimation (do it here, ~3–5 min)#
Now turn requirements into numbers (full method in §4). You need, roughly:
- QPS (queries/sec): average and peak (peak ≈ 2–3× average; some systems spike far higher).
- Storage: per-item size × items/day × retention → total, and growth/year.
- Bandwidth: QPS × response size.
- Memory for cache: how much of the working set (hot data) you'd hold (often size a cache to the ~20% of data driving ~80% of reads — Pareto).
State assumptions out loud ("assume 100M DAU, each posts 2 tweets/day…"). The interviewer cares about method and sanity, not precision — round aggressively. These numbers justify everything next: "at 1M write QPS, a single database can't take the writes, so we shard" is a far stronger statement than "let's shard because scale."
3.3Step A — API + Data Model (5 min)#
API: define the handful of core endpoints as clean contracts — method, path, params, response. E.g. POST /tweets {text} → {tweet_id}; GET /timeline?user_id&cursor → [tweets]. Note pagination (cursor-based, not offset, at scale) and idempotency keys for writes that must not double-execute (File 07). This shows you think in interfaces.
Data model: the core entities and their relationships — User, Tweet(id, author_id, text, created_at), Follow(follower_id, followee_id). Naming the entities and their keys sets up the sharding discussion (File 04: what's the shard key?) and the SQL-vs-NoSQL discussion (File 11). Decide, per entity, roughly where it lives (relational? KV? wide-column?) and why.
3.4Step D — High-Level Diagram (10 min)#
Draw the end-to-end happy path, left to right: Client → DNS → Load Balancer → API servers (stateless) → {Cache, Databases} + async workers via Queue. Start simple and correct — a working single-region design that satisfies functional requirements — before scaling it. Talk through one request's full journey. Keep app servers stateless (File 01) so they scale horizontally; put session/hot state in a shared cache (File 02). This is the skeleton you'll now stress-test.
3.5Step I — Identify Bottlenecks & SPOFs (5 min)#
Proactively hunt the pressure points before the interviewer asks (doing this unprompted is a senior signal):
- Where's the single point of failure? A lone LB, a single DB primary — name them.
- What breaks first under 10× load? Almost always the database (reads then writes), then bandwidth for media.
- What's the hottest path? The read that dominates (the timeline fetch).
Say them out loud: "The database read path is the first bottleneck, and this single primary is a SPOF — let me address both."
3.6Step O — Optimize / Deep-Dive (15 min, where you win)#
Now systematically apply the bible to each bottleneck. This is the longest, most important step — the interviewer will usually pick one area and go deep, so be ready to zoom into any of:
- Read bottleneck → Cache (File 02: cache-aside, TTL, stampede defense) + read replicas (File 08) + CDN for media/static (File 05).
- Write/storage bottleneck → Shard the database (File 04: pick and justify the shard key) + consider LSM/wide-column for write firehoses (File 11).
- Slow synchronous work / spikes / fan-out → Message queue (File 07): offload async, load-level, decouple.
- Global latency → CDN + multi-region + GeoDNS/anycast (File 05).
- Correctness under concurrency/failure → replication + consensus/quorums (File 08), transactions/isolation (File 11).
- Overload / abuse → rate limiting (File 03) + circuit breakers/bulkheads (File 10).
- Even distribution under churn → consistent hashing (File 06).
For each fix, state the trade-off (§0.2 format). If they deep-dive a component, go two more levels down (e.g., cache → which eviction policy → how you handle the thundering herd).
3.7Step S — Summarize (5 min)#
Recap the design end to end, restate how it satisfies each requirement, name the key trade-offs you made, call out the remaining weak spots / SPOFs, and say what you'd do with more time (multi-region, better observability, cost optimization). This leaves a "senior, self-aware" final impression — you know your design isn't perfect and you know exactly where.
4Back-of-the-Envelope Estimation#
The method that makes your scale claims credible. The goal is a sanity-checking approximation in under 5 minutes, not accuracy — round everything to powers of 10.
4.1The Powers-of-Ten Table (memorize)#
Thousand = 10^3 (KB)
Million = 10^6 (MB)
Billion = 10^9 (GB)
Trillion = 10^12 (TB)
Quadrillion = 10^15 (PB)And the time anchor: ~100,000 seconds per day (86,400, round to 10^5). This one number turns "per day" into "per second" instantly: X per day ÷ 10^5 ≈ X per second... /100k. (1 million/day ≈ 10 QPS. Remember it.)
4.2The Four Quantities & How to Derive Each#
(1) QPS (traffic).
avg QPS = daily requests / 100,000
peak QPS ≈ avg QPS × (2 to 3) [traffic isn't uniform; size for peak]Example: 100M DAU × 10 reads/day = 1B reads/day ÷ 10^5 = 10,000 avg read QPS, ~25,000 peak.
(2) Storage.
storage/day = items/day × bytes/item
total = storage/day × retention_days (then × replication factor, usually 3)Example: 500M tweets/day × 300 bytes = 150 GB/day → ×5 years ≈ 270 TB → ×3 replication ≈ ~800 TB. (This is why you shard.)
(3) Bandwidth.
egress = read QPS × response_sizeExample: 25,000 QPS × 1 KB = 25 MB/s (fine); but 25,000 QPS × 2 MB (video) = 50 GB/s → that's why you need a CDN (File 05), not your origin.
(4) Memory (cache sizing).
cache size ≈ (hot fraction of data) held in RAM [Pareto: ~20% of data serves ~80% of reads]Example: to cache the day's hot tweets: if 20% of 150 GB/day is hot ≈ 30 GB → fits comfortably in a Redis cluster, huge DB offload.
4.3The Ratios That Steer Architecture#
- Read:write ratio — high (100:1, social) → caching/replicas/CDN/fan-out-on-write dominate. Low/write-heavy → sharding, LSM, queues dominate.
- Peak:average — spiky (ticketing, flash sales) → aggressive rate limiting, queues, autoscale headroom.
- Hot:cold data — Pareto skew → caching is high-leverage; a hot-key problem lurks (Files 02/04/06).
5The Numbers You Must Memorize#
5.1Latency Numbers Every Engineer Should Know (the canonical list)#
L1 cache reference ........................... 0.5 ns
Branch mispredict ............................ 5 ns
L2 cache reference ........................... 7 ns
Mutex lock/unlock ............................ 25 ns
Main memory (RAM) reference .................. 100 ns <- the "fast" baseline
Compress 1 KB ................................ 3,000 ns (3 µs)
Send 1 KB over 1 Gbps network ................ 10,000 ns (10 µs)
Read 1 MB sequentially from RAM .............. 250,000 ns (250 µs)
Round trip within same datacenter ............ 500,000 ns (0.5 ms)
Read 1 MB sequentially from SSD .............. 1,000,000 ns (1 ms)
Disk seek (HDD) .............................. 10,000,000 ns (10 ms)
Read 1 MB sequentially from disk (HDD) ....... 20,000,000 ns (20 ms)
Round trip CA <-> Netherlands ................ 150,000,000 ns (150 ms)**What to derive from these (the point of memorizing them):**
- RAM ≈ 100 ns, disk seek ≈ 10 ms → RAM is ~100,000× faster than a disk seek. (Why caching exists — File 02.)
- SSD ~150× faster than HDD for random access. (Why databases moved to SSD.)
- Same-DC round trip 0.5 ms; cross-continent ~150 ms → ~300× more. (Why CDNs/multi-region exist — File 05; the speed of light is the wall.)
- Sequential reads >> random everywhere. (Why logs/LSM/WAL are loved — File 11.)
5.2Capacity Rules of Thumb (rough, for sanity)#
~86,400 s/day -> round to 10^5 (X/day / 100k = X/sec)
Single commodity server: handle ~1,000s–10,000s of simple QPS (varies wildly by work)
Single SQL DB (well-tuned): comfortably ~1,000s of writes/s, ~10,000s of reads/s (then shard/replicate)
Redis single node: ~100,000+ ops/s
Kafka: ~millions of msgs/s (a cluster)
One modern server RAM: up to ~100s of GB – few TB
One disk (SSD): up to ~tens of TB
Availability nines: 99.9% = ~8.7 h/yr down | 99.99% = ~52 min/yr | 99.999% = ~5 min/yrUse these to say things like "one Postgres tops out around a few thousand writes/sec, and we need 50k, so we shard into ~16." That's a credible, numbers-driven justification.
5.3Handy Size Anchors#
char/int ~ 1–8 bytes | UUID ~16 B | typical tweet/row ~ 100s of bytes–1 KB
web page ~ 100 KB–2 MB | photo ~ 100 KB–a few MB | minute of video ~ 10s of MB6Reusable Design Templates#
Most problems are variations on a few skeletons. Recognize the pattern, adapt the template.
6.1The Read-Heavy Feed/Timeline (Twitter, Instagram, News)#
Client → CDN (media) → LB → stateless API → Redis (timeline cache) → sharded DB
- Core decision: fan-out-on-write vs fan-out-on-read (File 02 §9.2). Precompute each user's timeline on post (fast reads, heavy writes, great for most) but handle celebrities with fan-out-on-read (merge at read time) to avoid fanning one post to 100M timelines. Hybrid is the senior answer.
- Bible: Caching (02), CDN (05), Sharding (04), Queues for fan-out (07).
6.2The Write-Heavy Ingestion (metrics, logs, IoT, messaging)#
Producers → Kafka (buffer/decouple) → stream processors → LSM store (Cassandra) + OLAP warehouse
- Absorb the firehose in a queue (07), store in a write-optimized LSM/wide-column DB (11/04), tee to a columnar warehouse for analytics (11).
6.3The Transactional System (payments, orders, bookings)#
Client → LB → API → relational DB (ACID) + cache; async side-effects via queue; cross-service = Saga
- Strong consistency (File 08 CP, File 11 ACID) for the money; idempotency keys everywhere (07); Saga for multi-service transactions (10); rate limiting on writes (03).
6.4The Global Low-Latency Static/Media System (video, images, downloads)#
Users → GeoDNS/Anycast → CDN edges → origin shield → object storage (S3)
- CDN (05) for the reads, object storage (09) as origin, fingerprinted immutable URLs (05). Storage gives durability; CDN gives latency.
6.5The Proximity/Geo System (ride-hailing, "nearby", maps)#
- Add geospatial indexing (geohash / quadtree / S2 cells) to bucket the world so "drivers near me" is a bounded lookup, streamed via queues (07); shard by region (04).
7How the 11 Concepts Map to Symptoms#
Your fast lookup in the room — hear the symptom, reach for the file:
| If the interviewer says / you notice… | Reach for | File |
|---|---|---|
| "Too much traffic for one server" / need HA | Load balancing, horizontal scale | 01 |
| "DB read bottleneck" / repeated expensive reads | Caching (cache-aside, TTL, stampede) | 02 |
| "Abuse / spikes / must protect a downstream / tiers" | Rate limiting | 03 |
| "Writes/data exceed one machine" | Sharding & partitioning | 04 |
| "Global users have high latency" / serve media | CDN, anycast, edge | 05 |
| "Adding/removing nodes reshuffles everything" | Consistent hashing | 06 |
| "Decouple services / absorb spikes / fan-out / async" | Message queues & streaming | 07 |
| "Data must be correct & survive failures" / CAP | Consensus & replication | 08 |
| "Store big blobs/media durably at scale" | Distributed object storage | 09 |
| "Many teams/services, cascading failures, cross-service txns" | Microservices & mesh (breakers, sagas) | 10 |
| "Which database? indexes? transactions? SQL vs NoSQL?" | Databases deep-dive | 11 |
| "How do I even approach / estimate this?" | This playbook | 12 |
8Common Mistakes That Fail Candidates#
- Designing before clarifying. Jumping to boxes without requirements → you build the wrong system. Fix: always spend the first 5 minutes on R.
- No numbers. Claiming "we need to shard" with no QPS/storage math → unjustified. Fix: estimate, then let numbers drive decisions.
- Over-engineering. Drawing 12 microservices, Kafka, and 3 databases for a problem a monolith + Postgres solves → a red flag, especially for senior roles (shows poor judgment). Fix: start simple, add complexity only when a stated requirement/number forces it.
- Stating components without trade-offs. "Add a cache" with no mention of consistency/invalidation cost → shallow. Fix: decision + benefit + cost + mitigation, every time.
- Ignoring failure & SPOFs. A design where any single box's death = outage. Fix: proactively call out and remove SPOFs (redundant LBs, replicated DBs).
- Going silent. Thinking without narrating → interviewer can't score your reasoning. Fix: think out loud, always.
- Not driving. Waiting to be told each next step. Fix: own the structure (the RADIOS framework); check in but lead.
- Rigidity. Ignoring the interviewer's hints (they're steering you toward what they want to probe). Fix: treat every comment as a signal; adapt.
- Forgetting the read:write ratio. It's the fork that decides half your architecture. Fix: ask it early.
- Perfectionism / rabbit-holing. Spending 20 minutes on one component and never finishing the design. Fix: time-box; breadth first, then depth where asked.
9Worked Example: Design a URL Shortener#
A compact end-to-end run through RADIOS, to see the method in motion.
R — Requirements. Functional: shorten a long URL → short code; redirect short code → long URL; (optional) custom alias, analytics. Non-functional: extremely read-heavy (redirects ≫ creations, ~100:1); redirects must be very low latency (<100 ms) and highly available (a dead link is bad UX); creations can tolerate slightly more latency; short codes must be unique. Scope out user accounts/dashboards unless asked.
Estimation. Say 100M new URLs/day → ~1,000 write QPS (100M/10^5), and at 100:1 read:write → ~100,000 read QPS, peak ~250k. Storage: 100M/day × ~500 bytes × 5 yrs × 3 ≈ ~270 TB — needs sharding. This is a read-dominated, low-latency, high-availability problem → caching + CDN + replicas will dominate.
A — API + Data model. POST /urls {long_url} → {short_code}; GET /{short_code} → 301 redirect (301 = HTTP "Moved Permanently" — the browser follows it to the long URL and may cache the mapping forever; the alternative 302 "Found" (temporary) isn't cached by the browser, which forces every click back to your servers — worse latency and load, but it's what you must use if you want to count clicks for analytics. A classic mini trade-off to name). Entity: Url(short_code PK, long_url, created_at). Key question: how to generate unique short codes? Options: (a) hash the URL + take first 7 chars of base-62 (collision handling needed); (b) a distributed counter / ID generator (Snowflake-like, File 04) → base-62 encode → guaranteed-unique, no collision checks. Choose (b) and justify: no collision reads on the write path. 7 base-62 chars = 62^7 ≈ 3.5 trillion codes — plenty.
D — Diagram. Client → DNS → LB → stateless API servers → {Redis cache, sharded DB}. Redirect path: check Redis for short_code → long_url; hit → 301 immediately; miss → read DB, populate cache, redirect (cache-aside, File 02). Creation path: generate ID → base-62 → write to DB → return.
I — Bottlenecks. Read path at 250k QPS is the pressure point; the DB is the SPOF/bottleneck; codes must stay unique under concurrent creation.
O — Optimize.
- Reads: Redis cache in front (File 02) — short codes are tiny and hot, so cache hit ratio will be very high (the 20% of links driving 80% of clicks — Pareto); this offloads ~95%+ of reads from the DB. Add read replicas (File 08) for cache misses. Put redirects behind a CDN/edge (File 05) for global latency.
- Writes/storage: shard the DB by
short_code(hash sharding, File 04, even distribution); use the distributed ID generator to avoid coordination on uniqueness. - Availability: redundant LBs (File 01), replicated shards (File 08), so no single box's death breaks redirects.
- Consistency: a short code is immutable once created → we can cache aggressively with long TTL and accept eventual consistency on the rare edge cases (AP is fine here — File 08).
- Each with its trade-off stated (cache → invalidation is trivial since URLs are immutable; sharding → no cross-shard queries needed since all access is by key).
S — Summarize. "Read-heavy, so caching + CDN + replicas carry it; unique codes via a distributed ID generator to keep the write path coordination-free; sharded, replicated storage for the 270 TB and availability. Trade-offs: I chose eventual consistency (fine for immutable links) and key-only access (so sharding is clean). With more time: analytics pipeline via Kafka, custom aliases, rate limiting on creation to stop abuse."
Notice how every decision traced to a requirement or a number, and each came with a trade-off. That's the whole game.
10Level Expectations (Junior → Staff)#
Same problem, different bar — know which you're being held to:
- Junior/New-grad: produce a working high-level design; know the core components (LB, cache, DB, queue) and roughly why. Some hand-holding okay.
- Mid-level (L4): drive the framework independently; sound estimation; correct component choices; identify obvious bottlenecks; basic trade-offs.
- Senior (L5): deep trade-off reasoning on any component; proactively find SPOFs/bottlenecks; justify with numbers; discuss consistency models, failure modes, and alternatives fluently; scope and drive without prompting.
- Staff+ (L6+): frame the problem itself (what are we really optimizing? cost? org constraints?); reason about multi-region, migration paths, operational/organizational realities (Conway's Law, File 10); make and defend judgment calls under ambiguity; know when not to build something. Breadth and depth, plus systems-of-systems thinking.
The higher the level, the more it's about judgment, trade-offs, and communication — and the less it's about knowing more boxes.
11Final Cheat Sheet#
RADIOS (45 min):
R Requirements (5) : functional (scope DOWN) + non-functional (scale, R:W, consistency, latency, SLA)
[Estimate (3-5)] : QPS(/day ÷ 100k; peak = 2-3x avg) | Storage(size×count×retention×3) | BW | cache
A API + data (5) : core endpoints (idempotency, pagination) + entities + shard key
D Diagram (10) : Client->DNS->LB->stateless API->{Cache, DB} + Queue(async). Simple & correct FIRST.
I Identify (5) : SPOFs? what breaks at 10x? hottest path? (DB is usually first) — say them unprompted
O Optimize (15) : apply the bible to each bottleneck; go 2 levels deep; TRADE-OFF every choice
S Summarize (5) : recap, trade-offs, weak spots, "with more time…"
EVERY DECISION = decision + benefit + COST + mitigation. Never a component without its trade-off.
DRIVE from requirements -> numbers -> design. Think OUT LOUD. Start simple; add complexity only when a NUMBER forces it.
NUMBERS: RAM 100ns | same-DC RTT 0.5ms | SSD 1MB 1ms | disk seek 10ms | cross-continent 150ms
RAM ~100,000x faster than disk seek | seq >> random | ~100k sec/day | peak 2-3x avg
99.9%=8.7h/yr 99.99%=52min/yr 99.999%=5min/yr
SYMPTOM -> FILE: traffic/HA=01 | read bottleneck=02 | abuse/tiers=03 | write/storage scale=04
global latency/media=05 | node churn reshuffle=06 | decouple/async/spikes=07 | correctness/CAP=08
big blobs=09 | many services/cascades/sagas=10 | which DB/index/txn=11 | method/estimation=12
TEMPLATES: read-heavy feed (cache+CDN+fanout) | write firehose (Kafka+LSM+OLAP) | txn (ACID+idempotency+saga)
global media (CDN+object store) | geo/proximity (geohash/quadtree)
TOP MISTAKES: design-before-clarify | no numbers | over-engineer | no trade-offs | ignore SPOFs | go silentOne-sentence summary:
"Win the system design interview by driving a repeatable method — clarify functional + non-functional requirements, estimate the scale in numbers (QPS, storage, bandwidth, using RAM≈100ns / disk-seek≈10ms / ~100k-sec-per-day anchors), sketch a simple correct design, then proactively hunt bottlenecks and SPOFs and fix each by reaching for the right concept (cache/CDN/shard/queue/consensus…) — and above all state the trade-off of every single decision (benefit and cost and mitigation), think out loud, start simple and add complexity only when a number forces it, because they're hiring your judgment and communication, not your memory of architectures."
End of Bonus File 12. This completes the System Design Bible: 10 core concept files + 2 bonus files (Databases, Interview Playbook). You now have both the building blocks and the method to assemble them.