Published Jun 28, 2022
[
 
]
Know the exact scope of the problems we are trying to solve.
Estimate the scale of the system. It helps later with scaling, partitioning, load balancing, and caching.
Define what APIs are expected from the system.
Defining data model will clarify how data will flow between different system components. It will guide for data partitioning and management.
Draw a block diagram representing the core components of our system.
Dig deeper into two or three major components.
Try to find as many bottlenecks as possible and different approaches to mitigate them.