- Determine what is your system you need to design.
- Determine the requirements and goals of the system, such as functional requirements, non-functional requirements, and extended requirements.
- Estimate the traffic, storage, bandwidth, and memory.
- Definite some APIs.
- Based on the estimation of the traffic, determine the database schema, such as the database table.
- Determine high-level schema design.
- Based on the high-level schema, focus on a certain component.
- Consider non-functional requirements, add load balance and cache, and DB cleanup.