- Published on
System Design: Step by Step
Step 1: Requirements Clarifications
Know the exact scope of the problems we are trying to solve.
Step 2: Back-of-the-envelope Estimation
Estimate the scale of the system. It helps later with scaling, partitioning, load balancing, and caching.
Step 3: System Interface Definition
Define what APIs are expected from the system.
Step 4: Define Data Model
Defining data model will clarify how data will flow between different system components. It will guide for data partitioning and management.
Step 5: High-level Design
Draw a block diagram representing the core components of our system.
Step 6: Detailed Design
Dig deeper into two or three major components.
Step 7: Identifying and Resolving Bottlenecks
Try to find as many bottlenecks as possible and different approaches to mitigate them.