System Design Framework
A structured approach to tackle any system design interview
45-60 Minute Interview Timeline
Requirements Clarification
5-7 minutesAsk questions to understand the scope, constraints, and requirements
Key Questions to Ask/Consider:
- What are the main features we need to support?
- What is the expected scale (users, requests, data)?
- What are the latency requirements?
- Should we focus on any specific aspect of the system?
- What are the non-functional requirements (availability, consistency)?
- Are there any specific constraints (budget, timeline, technology)?
π‘ Senior Engineer Tips
- β’ Push back on ambiguous requirements - senior engineers know what details matter
- β’ Consider regulatory and compliance requirements upfront
- β’ Ask about existing systems and migration constraints
- β’ Discuss SLA requirements explicitly
Back-of-Envelope Calculations
3-5 minutesEstimate scale to inform design decisions
Key Questions to Ask/Consider:
- Daily/Monthly Active Users (DAU/MAU)
- Requests per second (read/write ratio)
- Data storage requirements
- Bandwidth requirements
- Peak vs average load
Quick Calculations:
π‘ Senior Engineer Tips
- β’ Use powers of 2 for quick mental math
- β’ Consider growth trajectory, not just current numbers
- β’ Factor in replication and backup overhead
- β’ Mention regional distribution impact on calculations
High-Level Design
10-15 minutesDraw the main components and their interactions
Key Questions to Ask/Consider:
- What are the main components needed?
- How do clients interact with the system?
- What are the data flows for main use cases?
- Where do we need caching?
- How do we handle reads vs writes?
Common Components:
π‘ Senior Engineer Tips
- β’ Start with the simplest design that could work
- β’ Use standard architectural patterns (don't reinvent)
- β’ Consider multi-region from the start
- β’ Identify single points of failure early
Deep Dive
15-20 minutesDrill into critical components based on interviewer guidance
Deep Dive Areas:
Data Model
- β’ Schema design
- β’ Indexing strategy
- β’ Partitioning/Sharding
- β’ Denormalization decisions
API Design
- β’ Endpoints
- β’ Request/Response formats
- β’ Authentication
- β’ Rate limiting
- β’ Versioning
Algorithm/Logic
- β’ Core business logic
- β’ Matching/Ranking algorithms
- β’ Consistency guarantees
Scaling
- β’ Horizontal scaling points
- β’ Caching strategy
- β’ Database scaling
- β’ Async processing
π‘ Senior Engineer Tips
- β’ Discuss trade-offs explicitly for every decision
- β’ Mention operational concerns (monitoring, debugging)
- β’ Consider failure modes and recovery strategies
- β’ Reference real-world implementations when relevant
Bottlenecks & Trade-offs
5-10 minutesIdentify issues and discuss solutions
Common Issues & Solutions:
β οΈ Single Points of Failure
β οΈ Scalability Bottlenecks
β οΈ Consistency vs Availability
β οΈ Cost Optimization
π‘ Senior Engineer Tips
- β’ Proactively identify issues before being asked
- β’ Quantify impact of bottlenecks
- β’ Propose incremental improvements with milestones
- β’ Consider operational cost, not just infrastructure
β Common Mistakes to Avoid
β Diving into details too early
β Start with requirements and high-level design first
β Not asking clarifying questions
β Spend first 5-7 minutes understanding the problem
β Over-engineering the solution
β Start simple, then add complexity as needed
β Ignoring non-functional requirements
β Explicitly discuss scalability, availability, consistency
β Not discussing trade-offs
β Every decision has pros/cons - articulate them
β Monologue without interaction
β Check in with interviewer, ask for feedback
β Giving up when stuck
β Think out loud, ask for hints, reason from first principles
β Not leveraging experience
β Reference relevant past projects and learnings
π€ Senior Engineering Key Phrases
Ready to design?
Put this framework to the test with our collection of real-world system design case studies.