Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • System Design Tutorial
  • What is System Design
  • System Design Life Cycle
  • High Level Design HLD
  • Low Level Design LLD
  • Design Patterns
  • UML Diagrams
  • System Design Interview Guide
  • Scalability
  • Databases
Open In App
Next Article:
Difference between High Level Design(HLD) and Low Level Design(LLD)
Next article icon

What is High Level Design? – Learn System Design

Last Updated : 15 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In Developing scalable applications, proper planning, and organization play a significant role. High-level design plays an important role in this process by serving as the blueprint of the system's architecture. It provides a comprehensive view of how components interact and function together which will further help for detailed implementation.

Understanding high-level design is very crucial for developers, architects, and project managers because it allows them to make sure that all stakeholders are aligned with the project objectives. High-level design is also known as macro-level design.

What is High Level Design
What is High-Level Design

Table of Content

  • What is High-Level Design?
  • Components of High-Level Design
  • What is High-Level Design Document?
  • Purpose and Characteristics of High-Level Design
  • How HLD is different from LLD
  • How To Design Scalable High-level Design (HLD) Systems
  • Roadmap to learn HLD

What is High-Level Design?

High-Level Design is a initial step in development of applications where overall structure of a system is planned. High-Level design focuses mainly on how different components of the system work together without getting to know about internal coding and implementation. This helps everyone involving in the project to understand the goals and ensures good communication during development.

Components of High-Level Design
Components of High-Level Design

Components of High-Level Design

Understanding the components of high-level design is very important for creating effective systems that meets user needs and technical requirements. Below are the main components of high-level design:

  1. System Architecture: System architecture is an overview of the entire system which represents the structure and the relationships between various components. It helps to visually represent how different parts interact and function.
  2. Modules and Components: High-Level design breaks down the systems into modules or components each with specific roles and responsibilities, and has a distinct function that contributes to entire system helping in developing an efficient system.
  3. Data Flow Diagrams (DFDs): Data Flow Diagrams demonstrates the data movement within the system. They help to understand how information is processed and handled.
  4. Interface Design: This component focuses on how different modules communicate with one another. It details the application programming interfaces (APIs) and user interfaces necessary for seamless interaction between components.
  5. Technology Stack: The technology stack are various technologies and tools that will be used in the development of the system. This includes programming languages, frameworks, databases.
  6. Deployment Architecture: It includes how the system will be hosted and accessed. It includes server configurations, cloud infrastructure, and network considerations.

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 explaining the connections between system components and operations which depict the logic. The architecture design needed (for the system's functionality and flow) for each and every module of the system as per the functional requirements.

Purpose and Characteristics 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 will help to understand how the modules interact. Basically, HLD is a technical representation of functional requirements and the flow of information across components. Characteristics of High-Level Design include:

  • A diagram representing each design aspect is included in the HLD (which is based on business requirements and anticipated results).
  • Description of hardware, software interfaces, and also user interfaces.
  • The workflow of the user's typical process is detailed, along with performance specifications.

How HLD is different from LLD

High Level Design or HLD is a general system design where we do tradeoffs between different frameworks, components, and different databases and we choose the best considering what the business needs and how the system should work, both in terms of functional and non functional aspects.

Whereas LLD(Low Level Design), translates the HLD into smaller and more specific details, It includes class diagrams, methods, data structures, and algorithms, focusing on how each part will be implemented.

Further Read: Differences between High Level Design(HLD) and Low Level Design(LLD)

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

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

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

2. HTTP and HTTPS and their methods

HTTP(HyperText Transfer Protocol), is used to transfer the data over the web, which enables the communication between clients and server, that helps user to requests resources like HTML pages, messages, videos or images while HTTPS(HyperText Transfer Protocol Secure) is an extension of HTTP which adds a extra layer of security through SSL/TLS encryption. Methods of HTTP include GET, PUT and POST.

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

Tip: There are 2 ways to send data from server to client:

  • Using Websockets
  • Using Polling

3. Web Sockets

There are two way to send data from server to clients which are websockets and polling. 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.
  • WebSocket is a full-duplex protocol as it allows the application to send and receive data at the same time.
  • 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.
WebSocket-Connection
WebSocket Connection

4. Polling

Another way of sending and receiving data from a server just likely as we do we doing above in the case of web sockets Polling. There are mainly 2 types of polling:

  • In short polling, we sent the request. In short polling, the client sends a request to the server and the server immediately sends data at fixed intervals whether the data is updated or not.
  • In long polling, the server waits for the client's request to respond and responds only and only if some new data is available or if some data is being updated.
Short polling vs long polling
Short polling vs long polling 

Tip: Long polling is preferred over short polling because lesser number of requests are sent in a system.

5. Server-Sent Events(SSE)

It is purposely built as one-way communication from servers to clients in specific design systems. SSE is a technology that helps to push real-time updates from the server to the clients over HTTP connection. SSE enables server to send data automatically as it becomes available. Example of SSE include real-time streaming.

Server-Sent Events(SSE)
Server-Sent Events(SSE)

6. Rate limiting

A rate limiter restricts the number of events that can be done in a timeframe by restricting the number of requests a sender can send in a given period of time. Here once the threshold limit is reached now further it blocks the incoming requests as can be seen below media as follows:

Rate limiting
Rate limiting

7. Resiliency

No matter how great a system we design there is always a chance of faults and failure which could be because of hardware issues or software issues(such as running low on memory) or there can be some human error. In such cases we need to provide resiliency through replication, redundancy and availability.

Note: System design interviews starts with open ended designing a specific system which later is bounded with constraints at multiple levels. In order to clear dealing with these bounds in layman language is known as resiliency via implementing common tradeoff in the system. Hence providing resiliency is very crucial in designing complex system designs and also in clearing interviews. 

8. Paging

Paging in High-Level Design (HLD) refers to the method of dividing large datasets or content into smaller, manageable pages. This approach improves user experience by allowing users to load data incrementally, reducing initial load times and enhancing performance.

Paging
Paging

9. Logging

A log file records details of events occurring in a software application. The details may consist of microservices, transactions, service actions, or anything helpful to debug the flow of an event in the system. Logging is crucial to monitor the application's flow. This can also be useful for tracking the health and performance of a distributed system, as well as for debugging issues that may arise. There are several approaches to implementing distributed logging, including:

  • Using a centralized logging service
  • Using a distributed logging system
  • Using a cloud-based logging service

Roadmap to learn HLD

1. Basics of HLD

  • Difference between HLD and LLD
  • What is the goal of High-Level Design(HLD)?

2. Core Components of HLD

  • Load Balancer
  • Content Delivery Network(CDN)
  • Caching in System Design
  • What is API Gateway
  • Message Queues
  • Consistent Hashing
  • Communication Protocols
  • Network Protocols and Proxies

3. Design Principles for HLD

  • Scalability and How to achieve it
  • Availability in System Design
  • Consistency in System Design
  • Reliability in System Design
  • Fault Tolerance in System Design
  • CAP Theorem
  • Performance Optimization Techniques for System Design
  • How to Draw High Level Design Diagram?

4. Types of HLD Diagrams

  • Component Based Diagram
  • Sequence Diagrams
  • What is DFD(Data Flow Diagram)?
  • Deployment Diagram

5. Architectures and Patterns

  • Monolithic Architecture
  • Microservices Architecture
  • Event-Driven Architecture
  • Client-Server Architecture
  • Peer-to-Peer (P2P) Architecture
  • Serverless Architecture
  • Circuit Breaker Pattern
  • Event Sourcing Pattern
  • CQRS Design Pattern

6. Interview Preparation for HLD

  • How to Crack System Design Interview Round?
  • Top High-Level Design(HLD) Interview Questions 2024



Next Article
Difference between High Level Design(HLD) and Low Level Design(LLD)
author
solankimayank
Improve
Article Tags :
  • System Design

Similar Reads

  • What is High Level Design? – Learn System Design
    In Developing scalable applications, proper planning, and organization play a significant role. High-level design plays an important role in this process by serving as the blueprint of the system's architecture. It provides a comprehensive view of how components interact and function together which
    9 min read
  • Difference between High Level Design(HLD) and Low Level Design(LLD)
    System design involves creating both a High-Level Design (HLD), which is like a roadmap showing the overall plan, and a Low-Level Design (LLD), which is a detailed guide for programmers on how to build each part. It ensures a well-organized and smoothly functioning project. High-Level Design and Low
    4 min read
  • What is Load Balancer & How Load Balancing works?
    A load balancer is a crucial component in system design that distributes incoming network traffic across multiple servers. Its main purpose is to ensure that no single server is overburdened with too many requests, which helps improve the performance, reliability, and availability of applications. T
    9 min read
  • What is Content Delivery Network(CDN) in System Design
    These days, user experience and website speed are crucial. Content Delivery Networks (CDNs) are useful in this situation. It promotes the faster distribution of web content to users worldwide. In this article, you will understand the concept of CDNs in system design, exploring their importance, func
    8 min read
  • Caching - System Design Concept
    Caching is a system design concept that involves storing frequently accessed data in a location that is easily and quickly accessible. The purpose of caching is to improve the performance and efficiency of a system by reducing the amount of time it takes to access frequently accessed data. Table of
    10 min read
  • What is API Gateway | System Design?
    An API Gateway is a key component in system design, particularly in microservices architectures and modern web applications. It serves as a centralized entry point for managing and routing requests from clients to the appropriate microservices or backend services within a system. Table of Content Wh
    9 min read
  • Message Queues - System Design
    Message queues enable communication between various system components, which makes them crucial to system architecture. Because they serve as buffers, messages can be sent and received asynchronously, enabling systems to function normally even if certain components are temporarily or slowly unavaila
    9 min read
  • Consistent Hashing - System Design
    Consistent hashing is a distributed hashing technique used in computer science and distributed systems to achieve load balancing and minimize the need for rehashing when the number of nodes in a system changes. It is particularly useful in distributed hash tables (DHTs), distributed caching systems,
    10 min read
  • Communication Protocols in System Design
    Modern distributed systems rely heavily on communication protocols for both design and operation. They facilitate smooth coordination and communication by defining the norms and guidelines for message exchange between various components. Building scalable, dependable, and effective systems requires
    6 min read
  • Network Protocols and Proxies in System Design
    In the system design, the effective functioning of networks is essential for seamless communication and data transfer. Network protocols and proxies play important roles in shaping the structure of the system, ensuring efficient data transmission, and improving security. This article explores the si
    13 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences