What’s system design?
The process of defining the architecture, components, modules, interfaces and data for a system to satisfy specified requirements.
If we break down the design process, you can see the flow is like below:
What’s good design?
- Healthiness
- Execution: Every component works fine without issue
- Communication: Communication between components are smooth and low latency
- Simplicity
- No more; no less
- Understandable
Funamental questions in system design
- Please design a specific system
- Please evaluate query per second (QPS)
- Please scale the system
How to crack a design?
We can follow SNAKE principle
- Scenario: case/interface
We need to break down the system and list out the core features that we need to deal with.
- Necessary: constrain/hypothesis
We need to know what daily active user (DAU), query per second (QPS), transaction per second (TPS) and peak usage etc. we target for.
- Application: service/algorithm
We need to design what service or algorithm we’re going to implement.
- Kilobit: data
How will we store data and provide data to users?
- Evolve
Check if there is any new constrains, or use cases or performance issue etc.
搶先發佈留言