snake – system design principles to crack a system design in 5 steps

Here are 5 steps to crack any system design questions in general.

  1. Scenario: case/interface

    • What are the typical use cases?
    • What kind of abstraction do you provide?
    • What do the APIs look like?
  2. Necessary: constrain/hypothesis

    • How many total users and daily active users do you have?
    • How many transactions do you have?
    • How many concurrencies or parallel executions does it require?
    • How much is the peak load?
    • How fast does it have to be? Or how much latency can it endure
  3. Application: service/algorithm

    • Complexity and Big O analysis
  4. Kilobit: data

    • How much is the generated data
    • How much space does it need to persist
    • Where to store the data. File system? SQL database? NoSQL database?
  5. Evolve:

    • Optimization
    • Extensibility
    • Scalability
    • Availability