System Design Cheat Sheet on One Page
β‘ Quick Answer
A one-page system design cheat sheet β the interview sequence that decides the outcome, back-of-envelope numbers, every building block, and SQL vs NoSQL.
Get more content like this on Telegram!
Daily AI tips, notes & resources β free
Advertisement
System Design Cheat Sheet on One Page
The system design interview is not testing whether you know what a load balancer is. It is testing whether you ask what you are building before you build it.
Candidates who start by drawing boxes lose. They design for a scale nobody specified, solve problems nobody asked about, and run out of time before the part that would have earned points.
This sheet covers the sequence first, then the numbers, then the components.
Updated for 2026.
The Sequence β Do These In Order
| # | Step | Time | Output |
|---|---|---|---|
| 1 | Clarify requirements | 5 min | Written feature list + explicit non-goals |
| 2 | Estimate scale | 5 min | QPS, storage, bandwidth |
| 3 | Define the API | 5 min | 3β5 endpoints with parameters |
| 4 | High-level diagram | 10 min | Boxes and arrows, no detail yet |
| 5 | Data model | 5 min | Tables/collections, indexes, shard key |
| 6 | Deep dive on one bottleneck | 15 min | The part the interviewer picks |
| 7 | Tradeoffs and failure modes | 5 min | What breaks and what you chose |
Step 1 is the one candidates skip. Ask what the system must do, what the non-functional targets are (latency, availability, consistency), and what is explicitly out of scope. Write it down where the interviewer can see it. That list becomes the contract everything else is graded against.
Three questions worth asking every time:
- How many users, and how active? Ten thousand daily users and ten million are different systems.
- Read-heavy or write-heavy? This single answer decides caching, replication, and database choice.
- Is stale data acceptable? If yes, most of the hard problems disappear.
What people get wrong: treating requirements as a formality and rushing to the diagram. The requirements are the design. Everything after is consequence.
Back-of-Envelope Numbers
Latency numbers worth memorising
These are approximate orders of magnitude, not benchmarks, and that is exactly how you should quote them.
| Operation | Approx. time |
|---|---|
| L1 cache reference | ~1 ns |
| Main memory reference | ~100 ns |
| SSD random read | ~100 Β΅s |
| Round trip within a datacentre | ~0.5 ms |
| Disk seek (spinning) | ~10 ms |
| Round trip across a continent | ~50β150 ms |
The useful takeaway is the ratio, not the digits. Memory is roughly a thousand times faster than SSD, and a cross-continent round trip is roughly a hundred thousand times slower than memory. That is why caching and CDNs exist, and why chatty service-to-service calls destroy latency budgets.
QPS math
1 day β 100,000 seconds (86,400 β round it)
1 million requests/day β 12 QPS
100 million requests/day β 1,200 QPS
1 billion requests/day β 12,000 QPS
peak QPS β 2β3 Γ average QPSStart from daily active users, multiply by actions per user per day, divide by 100,000. State the rounding out loud β interviewers are checking your order of magnitude, not your arithmetic.
Storage math
records/day Γ bytes/record Γ 365 Γ years Γ replication factorUseful anchors: a short text row is roughly 1 KB, a compressed photo roughly 500 KB, a minute of video roughly 50 MB. Replication factor is typically 3.
Example: 10 million posts/day at 1 KB each is 10 GB/day, 3.6 TB/year, roughly 11 TB/year with triple replication. That comfortably fits on one machine, which is the point of doing the estimate β it tells you whether sharding is even a conversation.
Building Blocks
Load balancer
When to use: the moment you have more than one application server.
| Type | Operates at | Can do |
|---|---|---|
| L4 (transport) | TCP/UDP | Fast, protocol-agnostic, no content routing |
| L7 (application) | HTTP | Path/header routing, TLS termination, sticky sessions |
Algorithms: round robin (default), least connections (good for uneven request costs), consistent hashing (when a request should reach the same node repeatedly).
Avoid sticky sessions. They make servers stateful, which breaks autoscaling and turns any instance failure into a user-visible logout. Put session state in Redis instead.
Cache
When to use: read-heavy workloads with a hot subset β which is almost all of them.
| Strategy | How it works | Best for |
|---|---|---|
| Cache-aside | App checks cache, on miss reads DB and populates | Default; most systems |
| Write-through | Write to cache and DB together | Reads immediately follow writes |
| Write-behind | Write to cache, flush to DB async | Write-heavy, tolerates data loss |
| Read-through | Cache itself fetches on miss | When the cache layer owns the DB access |
Invalidation is the hard part, and there are only three honest options:
- TTL expiry β simple, always works, guarantees staleness up to the TTL.
- Explicit invalidation on write β accurate, but every write path must remember to do it.
- Versioned keys β include a version in the key so old entries become unreachable and expire naturally.
The cache stampede problem: when a popular key expires, thousands of simultaneous requests all miss and hit the database at once. Fix with a short lock around the repopulation, or by staggering TTLs with a random jitter.
CDN
When to use: static assets, images, video, and anything cacheable served to a geographically spread audience.
A CDN stores copies at edge locations near users. It converts a 150 ms cross-continent round trip into a 10 ms local one and removes that traffic from your origin entirely. Cache-bust with content-hashed filenames rather than short TTLs.
Database replication
When to use: read-heavy load, or you need failover.
One primary takes all writes; replicas serve reads and follow the primary's log. This scales reads linearly and costs you replication lag β a replica may be milliseconds to seconds behind.
The consequence people forget: a user writes, immediately reads, and gets their old data back because the read hit a lagging replica. Fix by routing a user's reads to the primary for a few seconds after their write.
Replication does not scale writes. Every replica applies every write.
Sharding
When to use: last, after indexes, replicas, caching, and a bigger machine have all been exhausted.
Sharding splits data horizontally across independent databases by a shard key.
| Strategy | Pro | Con |
|---|---|---|
| Range-based | Range queries stay local | Hot shards from skewed keys |
| Hash-based | Even distribution | Range queries hit every shard |
| Directory-based | Flexible, rebalanceable | Lookup service is a bottleneck |
The shard key is the decision you cannot undo. It must spread load evenly and match your most common query. Sharding a social app by user ID is usually right; sharding by creation date guarantees every write lands on one hot shard.
What you permanently lose: cross-shard joins, cross-shard transactions, and easy ORDER BY across the whole dataset.
Message queue
When to use: slow work that does not need to finish before you respond, or when a spike must be absorbed.
Kafka, RabbitMQ, and Amazon SQS all do this. The queue decouples producer from consumer, so a burst of traffic queues up instead of collapsing the workers, and a worker crash costs you a retry rather than a lost job.
| Guarantee | Meaning |
|---|---|
| At-most-once | May be lost, never duplicated |
| At-least-once | Never lost, may be duplicated |
| Exactly-once | Expensive, usually approximated |
Most real systems use at-least-once and make consumers idempotent, which is far cheaper than genuine exactly-once delivery.
Rate limiter
When to use: any public API, login endpoint, or expensive operation.
| Algorithm | Behaviour |
|---|---|
| Token bucket | Allows bursts up to bucket size β most common |
| Leaky bucket | Smooths output to a fixed rate |
| Fixed window | Simple; allows 2Γ burst at window edges |
| Sliding window log | Accurate; costs memory per request |
Store counters in Redis with an expiring key, keyed by user ID or IP. Return HTTP 429 Too Many Requests with a Retry-After header.
Consistent hashing
When to use: distributing keys across a changing set of cache or storage nodes.
Plain hash(key) % N remaps almost every key when N changes, which empties your entire cache the moment you add a server. Consistent hashing places nodes and keys on a ring, so adding or removing a node only moves the keys between it and its neighbour β roughly 1/N of them.
Virtual nodes (each physical node placed at many ring positions) fix the uneven distribution that a small number of nodes otherwise produces.
SQL vs NoSQL
| Question | SQL | NoSQL |
|---|---|---|
| Relationships and joins? | Yes, native | Denormalise instead |
| Multi-row transactions? | ACID guaranteed | Limited or single-document |
| Schema changes often? | Migration required | Flexible |
| Ad-hoc queries? | Strong | Weak β plan access patterns first |
| Horizontal write scaling? | Needs sharding | Built in |
| Typical products | PostgreSQL, MySQL | DynamoDB, MongoDB, Cassandra |
The honest default is a relational database. Modern PostgreSQL handles far more than most candidates assume, and it gives you joins and transactions for free. Justify NoSQL with a number β write volume, data size, or a genuinely key-value access pattern β not with a reflex.
What people get wrong: picking NoSQL because the system is "large scale". Scale is a quantity; state the quantity.
CAP Theorem in Plain English
When the network splits your system into groups that cannot talk to each other, you must choose:
| Choice | Behaviour during a partition | Example |
|---|---|---|
| CP (consistency) | Refuse requests you cannot verify β some fail | etcd, ZooKeeper, HBase |
| AP (availability) | Answer with what you have β some answers stale | Cassandra, DynamoDB (default) |
The familiar "pick two of three" phrasing is misleading. Partition tolerance is not optional β networks fail whether you planned for it or not. The only real choice is what happens when they do.
Ask it as a product question: is a wrong answer worse than no answer? For a bank balance, yes β choose CP. For a like count, no β choose AP.
Consistency Models
| Model | Guarantee | Typical use |
|---|---|---|
| Strong consistency | Every read sees the latest write | Payments, inventory, auth |
| Eventual consistency | Reads converge, given no new writes | Feeds, counters, analytics |
| Read-your-writes | You always see your own changes | Profile edits, comments |
| Monotonic reads | You never see time go backwards | Paginated timelines |
Read-your-writes is the one that quietly matters most in product work. Users tolerate seeing someone else's post late; they do not tolerate their own comment disappearing.
The Five Mistakes
1. Drawing boxes before asking questions. Every minute spent on requirements saves five on redesign. If you have not written down what the system must do, you are not designing β you are guessing.
2. Designing for a scale nobody asked for. Sharding and multi-region for a system with ten thousand users is not sophistication, it is a failure to estimate. Do the QPS math first; it usually says one database is fine.
3. Adding a cache without an invalidation story. "We'll put Redis in front" is half an answer. Say what evicts entries, what the TTL is, and what a user sees when the data is stale.
4. Ignoring failure. Every box you draw will fail. State what happens when the cache is down, the queue backs up, or a replica lags β this is where senior candidates separate from mid-level ones.
5. Presenting a design with no tradeoffs. There is no correct architecture, only chosen tradeoffs. Ending with "I chose eventual consistency here, which costs stale reads and buys availability" is worth more than any diagram.
Print This Section
SEQUENCE requirements β estimates β API β diagram β data model
β deep dive on one bottleneck β tradeoffs
NUMBERS 1 day β 100,000 s 1M req/day β 12 QPS
peak β 2β3Γ average memory β 1000Γ faster than SSD
cross-continent RTT β 50β150 ms
SCALE UP index β read replicas β cache β bigger box β shard (last)
BLOCKS load balancer >1 app server; L7 for routing
cache cache-aside default; TTL + jitter
CDN static assets, geographic spread
replication scales reads, not writes; lag is real
sharding pick the key carefully; it is permanent
queue slow work, spike absorption, idempotent consumers
rate limiter token bucket in Redis β 429 + Retry-After
consistent hash ring + virtual nodes; only 1/N keys move
CAP partition is not optional. CP = refuse. AP = stale.
"is a wrong answer worse than no answer?"
DEFAULT PostgreSQL until a number says otherwiseSystem design has no correct answer, only defensible ones. The candidates who do well are not the ones who name the most technologies β they are the ones who asked what was being built, estimated it, and said out loud what each choice cost.
π Next in this collection: Networking Cheat Sheet, or return to The Complete Developer Cheat Sheet Collection.
Advertisement
π¬ DiscussionPowered by GitHub Discussions
Frequently Asked Questions

AI & Software Engineering Editorial Team
The AiTechWorlds editorial team writes and reviews in-depth guides on artificial intelligence, machine learning, prompt engineering, programming, and developer tools. Every article is fact-checked against primary sources and kept up to date for working developers and CS students.
Not sure yet? Ask AI about this article
Get an instant, unbiased AI summary of βSystem Design Cheat Sheet on One Pageβ.
Advertisement
Related Articles
Bash Scripting Cheat Sheet (The First Line Every Script Needs)
A practical Bash scripting cheat sheet β variables, conditionals, loops, functions, and the set -euo pipefail line that turns silent failure into loud failure.
15 Coding Interview Patterns That Solve Most Problems
The 15 coding interview patterns that cover most problems β the signal that identifies each one, a minimal code skeleton, and a two-minute recognition table.
CSS and Tailwind Cheat Sheet: Flexbox, Grid and Centering Solved
A practical CSS and Tailwind cheat sheet β Flexbox vs Grid decision rules, every centering method, responsive breakpoints, and the specificity traps.
Data Structures and Big-O Cheat Sheet for Coding Interviews
A practical big O cheat sheet β the complexity ladder with real examples, data structure operation tables, and how to state your complexity in an interview.