The steps of system design
System Design
Step 1: Requirements clarifications
TODO: common ask questions?
- Are we focusing on the backend only or are we developing the front-end too?
- we should clarify what parts of the system we will be focusing on.
Functional/Non-functional requirements
Step 2: System interface definition
Step 3: Back-of-envelope estimation
what to care? traffic, QPS, storage, netword bandwidth. How thess things affect our decisions?
Step 4: Defining data model
SQL vs NoSQL
Step 5: High-level design
what to consider? number of read vs write
Step 6: detailed design
provide different approaches, pros and cons. why we will prefer one approach.
Step 7: identifying and resolving bottlenecks
- single point of failure.
- monitoring the performance?
Comments