System Design Interview Framework· 40 min

The 6-Step Framework

Clarify → HLD → Data Model → Scale → Trade-offs → Bottlenecks

How to Tackle System Design Interviews

A 6-step framework used by senior engineers at FAANG. Follow this in every system design interview — it's structure over memorization. Total time: ~40 minutes.

6 steps · 40 min total

The 6-Step Framework

STEP 1·5 min

Clarify Requirements

Never jump into design. Ask clarifying questions to understand scope. Split into functional and non-functional.

DO
  • ✓ Ask: who are the users? What's the primary use case?
  • ✓ Estimate: QPS (read/write split), data size, storage growth
  • ✓ Identify: read-heavy or write-heavy?
  • ✓ Clarify: consistency vs availability requirements
DON'T
  • ✗ Don't assume — ask 'should tweets support images?'
  • ✗ Don't skip scale estimation
  • ✗ Don't forget to write requirements down
Example

For 'design Twitter': Is it just text? Image/video? Real-time feed? How many users?

STEP 2·5 min

Draw the High-Level Design

Draw boxes and arrows. Start simple — client, load balancer, app servers, database. Show data flow.

DO
  • ✓ Start with: Client → LB → App → DB
  • ✓ Add cache if read-heavy
  • ✓ Add message queue if async processing needed
  • ✓ Label every arrow
DON'T
  • ✗ Don't draw 20 boxes — keep it to 4-7 main components
  • ✗ Don't commit to specific technologies yet
  • ✗ Don't skip the CDN if there's static content
Example

Twitter HLD: Client → API Gateway → [Tweet Service, Feed Service] → [DB, Cache, Queue].

STEP 3·10 min

Design the Data Model

Define the core entities and their relationships. Choose SQL vs NoSQL based on access patterns.

DO
  • ✓ List entities: User, Tweet, Follow, Like
  • ✓ Define relationships
  • ✓ Choose SQL (relational, ACID) or NoSQL (flexible, scalable)
  • ✓ Show table/document schemas with keys
DON'T
  • ✗ Don't skip the primary key and indexes
  • ✗ Don't ignore access patterns
  • ✗ Don't forget to estimate storage
Example

Twitter: users(id, name, email), tweets(id, user_id, text, created_at), follows(follower_id, followee_id).

STEP 4·10 min

Deep Dive: Scale the Design

Now make it scale. Address bottlenecks: single DB, hot keys, write throughput.

DO
  • ✓ Identify the bottleneck (usually the database)
  • ✓ Shard by a good key (user_id hash)
  • ✓ Add read replicas for read-heavy workloads
  • ✓ Cache hot data (Redis) — specify TTL and eviction
DON'T
  • ✗ Don't shard before you need to
  • ✗ Don't forget cross-shard queries are 10x slower
  • ✗ Don't ignore hot keys
Example

Twitter: shard tweets by user_id. Pre-compute feeds in Redis sorted sets. For celebrities, use fan-out-on-read.

STEP 5·5 min

Discuss Trade-offs

Every design decision has a trade-off. Articulate them explicitly.

DO
  • ✓ For each choice, say 'I chose X because Y. The alternative is Z, but...'
  • ✓ Mention CAP trade-offs: CP or AP?
  • ✓ Discuss consistency vs latency
  • ✓ Talk about cost
DON'T
  • ✗ Don't say 'this is the best' — there's always a downside
  • ✗ Don't forget operational complexity
  • ✗ Don't ignore edge cases
Example

Fan-out-on-write: fast reads but write amplification for celebs. Hybrid: best of both, more code.

STEP 6·5 min

Identify Bottlenecks & SPOFs

Call out single points of failure and how you'd fix them.

DO
  • ✓ List SPOFs: single DB primary, single LB, single cache
  • ✓ For each, state the fix: replication, failover, multi-AZ
  • ✓ Discuss disaster recovery: RPO and RTO
  • ✓ Mention monitoring and alerting
DON'T
  • ✗ Don't say 'it won't fail' — everything fails
  • ✗ Don't forget the network
  • ✗ Don't ignore human error
Example

Single Redis = SPOF. Fix: Redis Sentinel or Redis Cluster. Add circuit breaker.

Common Mistakes & How to Avoid Them

✗Jumping into design without clarifying requirements
✓Spend 5 min asking questions. Write them down. Confirm with the interviewer.
✗Not estimating scale
✓Calculate QPS, storage, bandwidth. These numbers drive every architectural decision.
✗Over-engineering on step 1
✓Start with a simple box-and-arrow diagram. Add complexity only when asked.
✗Picking technologies too early
✓Say 'cache' not 'Redis'. Choose tech after understanding requirements.
✗Ignoring trade-offs
✓For every decision, state the alternative and why you rejected it.
✗Forgetting about failure
✓Always ask 'what happens if this component dies?' Identify SPOFs.
✗Not talking through your thought process
✓Think out loud. Interviewers can't evaluate silent thinking.
✗Running out of time on one section
✓Time-box each step. Move on even if not perfect. Revisit later.

Quick Reference Cheat Sheet

If the problem is...Reach for...
Read-heavy systemCache (Redis) + read replicas + CDN for static
Write-heavy systemShard the DB + async writes (queue + batch) + LSM-tree DB (Cassandra)
Global latencyCDN + multi-region DB + edge compute
High availabilityMulti-AZ + replication + automatic failover + health checks
Strong consistencyCP DB (Spanner) + quorum reads/writes + 2PC for cross-shard
Eventual consistencyAP DB (Cassandra) + async replication + conflict resolution (LWW/CRDT)
SearchElasticsearch + denormalize + inverted index
Real-time updatesWebSocket / SSE + pub-sub (Redis/Kafka)
Large file storageObject store (S3) + CDN + multipart upload
Time-series dataColumn-family DB (Cassandra) + time-based partitioning + downsampling

Time Management (45-min interview)

Clarify requirements
0-5 min
High-level design
5-15 min
Data model & API design
15-25 min
Scale & deep dive
25-35 min
Trade-offs & bottlenecks
35-42 min
Wrap up & questions
42-45 min