System Design Flashcards
System Design things to remember
Step 1 — Understand the Goals
—————————————————————————————————-
Spend 5-8 min clarifying the requirements
1 ) What is the goal of the system?
2) Who are the users of the system?
3) What do they need it for?
4) How are they going to use it?
5) What are the inputs and outputs of the system?
6) Do we want to discuss the end-to-end experience or just the API?
7) What clients do we want to support (mobile, web, etc)?
8) Do we require authentication? Analytics? Integrating with existing systems?
By the end of this you should have cleared up MVP requirements.
Step 2 — Design for the Right Scale
—————————————————————————————————-
Spend 5-8 min estimating the traffic, load and come up with an storage/CPU estimate.
1) Whats the expected traffic?
2) Bring it down to one second data.
3) What is the expected read-to-write ratio?
Tell if its a heavy read or heavy write system
4) How many concurrent requests should we expect?
5) What’s the average expected response time?
6) What’s the limit of the data we allow users to provide?
7) How long do you want to store the data
Step 3 — Start High-Level, then Drill-Down
—————————————————————————————————-
Spend 5-8 min estimating the traffic, load and come up with an storage/CPU estimate.
1) Design the API first and how will this API be called
2) Design a data model, how will data look in the database and how it will used to fetch records
3) What kind of protocol should we use for communication
4) Detailed design of how query would be fetched and the response will be returned
Future discussions
—————————————————————————————————-
* Discuss trade off later on and alternative design solutions , their pros and cons
* Talk about cross region data transfer if applicable