Introduction
HLD represents the best way to build and scale applications to millions of users.
You can also refer here for more study material.
Tips to Approach the HLD Problem
Step-1: Deciding Requirements
- Functional Requirements: What should the system do. E.g: Uploading a video
- Non-Functional Requirements: How well your system performs. E.g: Reliability, Scale, Latency, Massive Traffic.
Step-2: Capcity Estimation
This includes estimating the following:
- Daily/Monthly Active Users (DAU/MAU)
- Throughput: requests per second
- Storage: Gb, Tb
- Network Bandwidth: Gbps
Step-3: API-Design
Writing Functional Requirements more technicially Look for the Api's/endpoints that are required to support
Step-4: High Level Design
Build a HLD covering the above requirements.
Step-5: Deep Dive
Deep Diving on any aspect the interviewer wants.