Steps of system design

1. Understand the problem and establish design scope

  • ask clarify questions
  • functional/non-functional requirement
  • QPS estumation

2. High-level design

  • API
  • Database

3. Low-level design (dive into each component)

4. Summary

  • bottlenecks
  • single point of failure
  • replicas of the data if lost
  • monitoring/alaert
  • auto-fix/ticket