Introduction to High Level Design

2026.10.11

High-level design or HLD is an initial step in the development of applications where the overall structure of a system is planned. Mainly focuses on how different components of the system work together without getting to know about internal coding and implementation.

  • Helps everyone involved in the project to understand the goals and ensures good communication during development.
  • Crucial for developers, architects, and product managers because it allows them to make sure that all stakeholders are aligned with the project objectives. That’s why it is also known as macro-level design.
  • The common request flow most applications follow from user to data and back.

Users

CDN/Edge

Load Balancer / API Gateway

Application Services

Identity / Access

Datastores

Async Queue & Workers

Logs & Metrics

Components of High-Level Design

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

  • System Architecture: System architecture is an overview of the entire system that represents the structure and the relationships between various components. It helps to visually represent how different parts interact and function.
  • 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 the entire system, helping in developing an efficient system.
  • Data Flow Diagrams (DFDs): Data Flow Diagrams demonstrate the data movement within the system. They help to understand how information is processed and pass from one end to another.
  • Interface Design: It includes the design of application programming interfaces (APIs) for system integration and user interfaces (UIs) for user interaction, ensuring seamless functionality and communication between components.
  • Technology Stack: The technology stack is various technologies and tools that will be used in the development of the system. This includes programming languages, frameworks, and databases.
  • Deployment Architecture: It includes how the system will be hosted and accessed. It includes server configurations, cloud infrastructure, and network considerations.

High-Level Design Document

The HLD document consists of data flows, flowcharts, and data structures to help developers understand 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

HLD provides a structured technical view by translating functional requirements into an overall system design model, helping visualize how components interact and how data flows.

  • 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.

Difference of HLD 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.

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 reading: Differences between High Level Design (HLD) and Low Level Design (LLD)

Designing 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. Roadmaps are 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.

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.

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 do we need to scale our system so service should not be hampered?

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

Behaviour of a ServerThroughputLatencylowmedhighv-highoverload1009080706050403020100

Throughput flattens then drops; latency spikes after high load.

2. HTTP Methods

HTTP (HyperText Transfer Protocol) is used for communication between clients and servers. HTTP methods define the type of operation a client wants to perform.

Common HTTP methods include:

  • GET: Retrieves data from the server.
  • POST: Creates or submits new data.
  • PUT: Updates or replaces existing data.
  • PATCH: Partially updates existing data.
  • DELETE: Removes data.

Understanding HTTP methods is important when designing APIs and deciding how clients and servers communicate.

3. Web Sockets

ServerClientServerClientRequestHand ShakeHello Server, how are you?Hi!

There are two ways to send data from server to clients, which are websockets and polling. In a client-server architecture, we are sending a request to the server, and the server sends it back, and so in this way communication takes place. But in designing the system, the biggest problem we face is whether we can implement the client-server model or peer-to-peer model.

  • WebSockets enable real-time, two-way communication between clients and servers.
  • WebSocket is a full-duplex communication protocol that allows both the client and server to send and receive data over the same persistent connection.
  • They are useful when an application needs low-latency, real-time updates without repeatedly creating new requests.
  • Common use cases include chat applications, online gaming, live notifications, and real-time dashboards.

4. Polling

Another way of sending and receiving data from a server, just like we do with the above case of web sockets, is polling. There are mainly 2 types of polling:

  • In short polling, the client sends a request to the server at fixed intervals, and the server immediately sends data, 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.

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

Short polling

ServerClientServerClientPoll (t=0)No updatePoll (t=5s)No updatePoll (t=10s)New data!

Client polls at fixed intervals; server replies immediately even with no update.

Long polling

ServerClientServerClientPoll (hold open)Reply when update readyPoll again (hold open)Reply when update ready

Server holds the request open and replies only when an update is ready.

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 connections. SSE enables the server to send data automatically as it becomes available.

6. Filtering

Filtering is the process of selecting only the data that matches specific conditions from a larger dataset. It helps reduce unnecessary data processing and allows users to retrieve only the information they need.

For example, in an e-commerce system, users can filter products based on:

  • Category: Electronics
  • Price: ₹10,000–₹50,000
  • Brand: Samsung
  • Rating: 4 stars and above

Filtering is commonly used in APIs, databases, search systems, and data-processing applications to reduce the amount of data returned and improve efficiency.

Example: GET /products?category=electronics

This request returns only products that match the specified filters.

7. 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, it now further blocks the incoming requests.

Success

Rate Limited

Option 1

Option 2

Client

Rate Limiter Middleware

Cached Rules

Rules Server

Rules

API Servers

Redis

Request Dropped

Message Queues

429: Too Many Requests

8. 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 start with open-ended designing of a specific system, which later is bounded with constraints at multiple levels. In order to clear dealing with these bounds, in layman’s language, it is known as resiliency via implementing common tradeoffs in the system. Hence, providing resiliency is very crucial in designing complex system designs and also in clearing interviews.

9. Paging

Paging, also known as pagination, is the process of dividing a large set of data into smaller pages and returning only a limited amount of data at a time. It helps reduce the amount of data transferred in a single request and improves performance and user experience.

For example, instead of returning 10,000 products in one response, an API can return 20 products per page.

Common approaches to paging include:

  • Offset-Based Paging: Uses an offset and limit to determine which records to return.
  • Cursor-Based Paging: Uses a cursor to identify the position of the next set of records and is useful for large or frequently changing datasets.

Example: GET /products?page=2&limit=20

This request retrieves the second page with up to 20 products.

10. Logging

A log file records events in an application, including details like transactions, service actions, and system flow. Logging is essential for monitoring behavior, tracking system health and performance, and debugging issues in distributed systems.

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