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