System Design Interview Template
REQUIREMENTS [5 min]
Functional and non-functional requirements
Use cases and scenarios that will not be covered
Who are the users
What is the expected load
Usage patterns
ESTIMATIONS [5 min]
Traffic estimates - throughout (QPS), latency
Read/Write ratio
Storage estimates
Memory estimates
DESIGN GOALS [5 min]
CP vs AP - weak/eventual/strong consistency
HIGH LEVEL DESIGN [5-10min]
Basic system components
Database schema
API design
Use cases flows
DEEP DIVE [15-20min]
Scalability and Performance Optimisations
Caching - CDN, cache invalidation, cache eviction policies, expiration policies
API Gateway
Proxies
Databases - SQL vs NoSQL, sharding
Async Processing - message queues, event driven architecture, FSMs, transactional outbox, change data capture, cqrs, saga, 2 phase commit
Fault Tolerance and Redundancy
Leader and follower - quorum/consensus
Liveness - heartbeat, gossip protocol, phi accrual failure detection
Resyncing nodes - hinted handoff, merkle trees, read repair
Nodes coming back up - split brain with fencing, split brain with generation clock
WAL
Logging, Monitoring, Observability
Metrics to track
Alerts to set up
Deployment Strategies
Rolling, blue/green, canary, A/B testing, shadow release
Examples of cloud technologies that might be used for the system
Last updated