How to write a HLD document?

justgig8
2 min readJul 11, 2020

--

  1. Requirements: gain full clarity on requirements first. Scope out what end goals are to be met by the product
  2. Estimates: estimate scale of the traffic, reads:writes ratio, storage requirements, network bandwidth usage, cache memory required etc.
  3. Interfaces: define what APIs/ functions are expected from the system
  4. Entities: define various entities and the interaction between them
  5. Data storage: define what database to use, whether to encrypt data or not, which CDN to use, which file system to use etc.
  6. Components: draw a block diagram with 5–6 boxes representing core components of the system, which are enough for solving problem E2E. Usually the components will be (in this order) clients, load balancers, application servers, databases/ caches/ file system.
  7. Details: detail out each component and list out pros and cons of each approach for each component. For e.g. for database component, list out partitioning strategies; for cache component, should it store data in a way. that it is optimised for reading recent data
  8. Bottlenecks and failure points: identify these and list out approaches to mitigate them. For e.g. is there any single point of failure? Do we need data replicas for redundancy? How to get alerts when any component goes down? What’s the backup plan in that case? And so on.
Sample components

For detailed course on HLD, please refer:
https://educative.io/signup?referralCode=arpit.go4-N8rw1XZyJPL

--

--