What is High Level Design – Learn System Design

High-level design or HLD refers to the overall system, a design that consists description of the system architecture and design and is a generic system design that includes:

High-level design or HLD is also known as macro level designing .

What is High Level Design

What is High-Level Design

Important Topics for the High Level Design(HLD)

1. What is High-Level Design Document?

HLD document consists of data flows, flowcharts, and data structures to help developers in understanding and implement how the current system is being designed intentionally to function.

This document is responsible for:

HLD does not include physical requirements, port details, VLAN, and many other details.

Scope of High-Level Design Document

The High-Level Design documentation presents the structure of the system as the application/database architecture, application flow, and technology architecture. High-Level Design documentation may use some non-technical terms, unlike low-level design which should be strictly technical jargon.

Note: Making the HLD is the responsibility of solution architects . After creating HLD, now expert experienced designers move towards LLD in accordance with the HLD’s criteria. LLD will provide details about how software entities will work whereas HLD focuses only on what software entities to place in an organization for efficient operation.

Here below constraints are expected from solution architects while designing HLD:

  1. Gathering both functional and non-functional requirements
  2. Costing Limitations (It becomes an important pillar once the system for the organization scales up)
  3. Strong bounds over the degree of consistency, availability, scalability, and performance of a system.

2. Components of High-Level Design

For providing a bird’s eye view of the entire solution, HLD should be possessing 2 elements as follows:

  1. Attributes and features of software entities.
  2. Relationships between different software entities (components, modules, classes, etc)

Illustration: Let us depict a high-level design via visual aid as shown below just to visualize the components and how the relationships are defined that is as follows:

Components of High-Level Design

Components of High-Level Design

3. Purpose of High-Level Design

The purpose of this High-Level Design (HLD) is to add the necessary detailed description to represent a suitable model. This is designed to help with operational requirements and can be used as a reference manual for how the modules interact. Basically, HLD is a technical representation of functional requirements and the flow of information across assets or components.

4. Characteristics of High-Level Design

5. How HLD is different from LLD

High-level Design Low-level Design
Definition HLD is the overall architect description of a system. LLD is a designing module-level description of a system.
Designing process Overall level design process. Component-level design process.
Person involved Solution architects Designer and developers.
Conversion Client requirements are being converted from a high-level design to as-per requirements. Here it is been framed out for a detailed solution of the HLD.
Coding Involved. No coding is involved in designing HLD. Extremely detailed peculiar and specific code chunks snippets as per patterns are there while designing LLD.

Let us now discuss the HLD roadmap after having an adequate understanding of HLD and how it is different from LLD which is shown below as an infographic:

6. How To Design Scalable High-level Design (HLD) Systems

Now in order to design any high-level system, certain terms are listed in a sequential manner so as to connect the dots in order to understand, Roadmap is very important for working professionals because these help us to get a complete binding understanding of how services in real-time are getting scaled at a high level.

How To Design Scalable High-level Design (HLD) Systems

How To Design Scalable High-level Design (HLD) Systems

6.1 Capacity Estimation

Capacity estimation in system design involves predicting the resources (such as processing power, memory, and bandwidth) required to meet the expected workload. It ensures that a system can handle current and future demands efficiently, helping in the proper allocation of resources and preventing performance bottlenecks.

For example:

Twitter which is recently in newsfeeds these days, here at high-level designing we need to make sure tweets of popular influencers are reaching out to millions of people so how we need to scale our system so service should not be hampered.

We have also shown below the characteristics behavior of a server which is measured across throughput and latency within the system.

Comparison of Throughput and Latency with Concurrency : Behavior Of A Server

Comparison of Throughput and Latency with Concurrency : Behavior Of A Server

6.2 HTTP and HTTPS and their methods

Tip: These are also important as per interview perceptive as constraint bounds in interviews in API over when to use what is very important.

6.3 Web Sockets

In a client-server architecture , we are sending a request to server and server sends it back and so in this way communication takes place. But in designing the system biggest problem we face is whether we can implement the client-server model because we can not wait until the server responds.

Here Web Sockets play a crucial role that solving problems and enabling us to have real-time communication. They are more or less used in every system to be designed because we can not let our system wait for a response. They are very useful in Real-time web applications, gaming applications, chat applications.

Features of WebSocket are: