high-level diagrams
High-Level Diagrams in System Design
Learn how to transform requirements, constraints and request flows into clear architecture diagrams that communicate system boundaries, major components, data stores, external dependencies and important interactions.
Introduction
A high-level diagram provides a simplified visual representation of a system's architecture. It shows the major components, their responsibilities and the important connections between them without including source-code, class or function-level implementation details.
A useful high-level diagram helps a reader answer:
- Who or what interacts with the system?
- Where does external traffic enter?
- Which components implement the main capabilities?
- Where is data stored?
- Which interactions are synchronous?
- Which work is performed asynchronously?
- Which systems or providers are external dependencies?
- Where are important trust and ownership boundaries?
- Which path handles each major request?
Core idea: A high-level diagram should explain the architecture, not merely display unrelated boxes. Every major component should have a clear responsibility and every important connection should have an understandable meaning.
In your System Design curriculum, high-level diagrams appear as Topic 1.5 under System Design Process and Estimation. The topic follows requirements discovery, functional and non-functional requirements, constraints and request flow. This order ensures that diagrams represent discovered needs instead of an arbitrary collection of technologies.
Prerequisites
| # | Prerequisite | Why It Is Needed |
|---|---|---|
| 1 | Requirements discovery | The diagram must represent a known problem and agreed system scope. |
| 2 | Functional requirements | Required capabilities help identify the major logical components. |
| 3 | Non-functional requirements | Performance, availability and security requirements influence architecture structure. |
| 4 | Constraints | Existing platforms, regional rules and legacy integrations affect boundaries and placement. |
| 5 | Request flow | The component connections should support the documented read, write and background flows. |
| 6 | Basic client-server knowledge | Most diagrams include clients, entry points, services and data stores. |
What Is a High-Level Diagram?
A high-level diagram presents the macro-level structure of a system. It focuses on major subsystems, services, storage components, interfaces and external dependencies.
High-level design is commonly described as an overview of a system's major components and their interactions, without going into internal coding and implementation details.
High-Level vs Low-Level Design
| Area | High-Level Design | Low-Level Design |
|---|---|---|
| Focus | Overall architecture and major components | Internal implementation of a component |
| Typical elements | Clients, gateways, services, databases, queues and external systems | Classes, functions, algorithms, methods and data structures |
| Main question | How is the system organized? | How will a component be implemented? |
| Primary audience | Architects, engineers, product teams, operators and reviewers | Engineers implementing a specific component |
| Example | Redirect Service reads mappings from cache or database | Classes and algorithms used to perform the lookup |
| Level of detail | Conceptual and architectural | Implementation-oriented |
Purpose of a High-Level Diagram
A high-level diagram supports several activities:
- Communicating the proposed architecture
- Confirming the system boundary
- Connecting requirements to components
- Tracing important request flows
- Identifying external dependencies
- Reviewing trust and data boundaries
- Finding missing responsibilities
- Discussing bottlenecks and failure points
- Comparing architecture alternatives
- Guiding later detailed design
The diagram is a communication and reasoning tool. It does not replace requirements, request-flow descriptions, API contracts, data models or operational documentation.
Core Elements of a High-Level Diagram
| Element | Purpose | Example |
|---|---|---|
| Actor or client | Initiates a request or consumes an output | Web application, mobile application or external client |
| System boundary | Shows what the team owns | URL Shortener Platform |
| Entry component | Receives and routes incoming traffic | Load balancer, gateway or reverse proxy |
| Application component | Performs a major business or technical responsibility | Link Service or Redirect Service |
| Data store | Preserves or retrieves system state | Link Database |
| Cache | Provides faster access to eligible data | Redirect Cache |
| Messaging component | Transfers asynchronous commands or events | Queue or event stream |
| Worker | Processes background or asynchronous work | Analytics Consumer |
| External dependency | Provides functionality outside the owned system | Identity provider |
| Connection | Shows communication or data movement | HTTPS request or event publication |
| Trust boundary | Shows a change in trust or security control | Public internet to protected service network |
Basic Diagram Notation
A diagram does not need complicated notation, but it must remain consistent. Include a legend when symbols or line styles have special meanings.
[Rectangle] Application or service
[(Cylinder)] Database or durable store
[[Rounded box]] Queue or event stream
[Person/Client] Human or client application
[Dashed boundary] Ownership, trust or deployment boundary
Solid arrow Synchronous request or direct call
Dashed arrow Asynchronous message or event
Double arrow Request and response when explicitly needed
Notation rule: The exact shapes are less important than consistency, clear labels and a legend that prevents readers from guessing what an arrow or boundary means.
Show the System Boundary
The system boundary separates components owned by the proposed system from users, external services and existing platforms.
External Actors and Systems
[Web Client] [Identity Provider]
| |
| |
v v
+----------------------------------------------------------+
| URL Shortener Platform |
| |
| [API Gateway] -> [Link Service] -> [(Link Database)] |
| |
+----------------------------------------------------------+
A clear boundary helps readers distinguish internal architecture from external dependencies.
Identify Major Components
Components should be derived from important responsibilities, not from fashionable technology categories.
Responsibility-first Method
- Review the functional requirements.
- Review the important request flows.
- Identify major responsibilities.
- Group related responsibilities.
- Separate responsibilities that have different scale, security or availability needs.
- Define data ownership.
- Add only the components required to support the selected design.
API Gateway
Microservice A
Microservice B
Kafka
Redis
NoSQL
Kubernetes
Link Service
- Creates and manages short-link mappings
Redirect Service
- Resolves active short codes
Analytics Consumer
- Processes redirect events
Safety Service
- Evaluates destination and abuse rules
Link Store
- Owns authoritative mappings
Technology choices can be added after the responsibilities and design pressures are understood.
Label Important Connections
An unlabeled arrow can mean an HTTP call, database operation, event, replication stream or administrative dependency. Label connections that influence design understanding.
[Client]
|
| HTTPS: create link
v
[Link API]
|
| synchronous command
v
[Link Service]
|
| transactional write
v
[(Link Database)]
[Redirect Service]
|
| asynchronous RedirectRecorded event
v
[[Event Stream]]
Useful connection labels include:
- Protocol or communication style
- Request, command or event name
- Read or write direction
- Synchronous or asynchronous behaviour
- Authentication or trust requirement
- Important data category
Synchronous and Asynchronous Connections
| Connection | Meaning | Design Questions |
|---|---|---|
| Synchronous call | The caller waits for a response | What timeout applies? What happens when the dependency fails? |
| Asynchronous message | The producer transfers work or publishes an event | What are the delivery, retry, ordering and duplicate rules? |
| Batch transfer | Data moves according to a scheduled or grouped process | How fresh must the result be? How are incomplete batches recovered? |
| Replication | State is copied between storage locations | What lag and consistency behaviour are acceptable? |
Show Data Stores Clearly
A high-level diagram should identify major data stores and their purpose. Avoid placing a generic database icon without explaining which data it owns.
[Service] -> [(Database)]
[Link Service]
|
| Create or update authoritative mapping
v
[(Link Mapping Store)]
[Analytics Consumer]
|
| Append processed redirect event
v
[(Analytics Store)]
For each major store, clarify:
- Which component owns the data
- What type of data is stored
- Whether the store is authoritative or derived
- Which components may read or write it
- Whether data is cached, indexed or replicated
- Which retention or residency constraints apply
Represent Caches Carefully
A cache is not merely a performance box. The diagram and supporting notes should explain how cached data relates to authoritative data.
+--------------------+
| Redirect Cache |
+--------------------+
^ |
| hit | miss
| v
[Redirect Service] ------------> [(Link Store)]
|
| redirect response
v
[Visitor]
Document:
- The key and value being cached
- The authoritative source
- Cache population strategy
- Expiration or invalidation strategy
- Acceptable staleness
- Behaviour when the cache is unavailable
Represent Queues and Event Streams
Use queues or streams in the diagram only when asynchronous work, buffering, decoupling or event distribution is required.
[Redirect Service]
|
| RedirectRecorded event
v
[[Redirect Event Stream]]
|
+------------------+
| |
v v
[Analytics Worker] [Abuse Worker]
| |
v v
[(Analytics Store)] [(Safety Signals)]
Supporting notes should define:
- Producer
- Message or event meaning
- Consumers
- Ordering needs
- Duplicate-handling policy
- Retry policy
- Failure or dead-letter handling
- Retention and replay rules
Show Trust Boundaries
Trust boundaries identify locations where data or requests move between environments with different security assumptions.
Untrusted Network
------------------------------------------------------------
[Public Client]
|
| HTTPS
v
Public Edge Boundary
============================================================
[Edge Protection] -> [API Gateway]
Protected Service Boundary
============================================================
[Link Service] -> [(Link Store)]
Important trust-boundary questions include:
- Where is external input first received?
- Where is identity validated?
- Where is authorization enforced?
- Where is transport encryption terminated?
- Which components can access sensitive data?
- Which calls cross network or organizational boundaries?
- Where are quotas and abuse controls enforced?
Logical vs Deployment Diagram
Keep logical responsibilities separate from deployment details unless the diagram has an explicit deployment purpose.
Logical Diagram
[Client]
|
v
[Link Service]
|
+----> [(Link Store)]
|
+----> [[Event Stream]]
This diagram explains responsibilities and interactions.
Deployment Diagram
Region A
+--------------------------------------------------+
| |
| Public Subnet |
| [Load Balancer] |
| | |
| Private Service Network |
| [Service Instance 1] [Service Instance 2] |
| | | |
| +-------+--------+ |
| | |
| [(Managed Data Store)] |
| |
+--------------------------------------------------+
This diagram explains placement, network boundaries and runtime topology. Avoid combining every logical and physical detail into one unreadable view.
Recommended Diagram Views
| View | Purpose | Typical Content |
|---|---|---|
| Context diagram | Define the system boundary | Users, system and external dependencies |
| Container or component diagram | Show major internal building blocks | Services, applications, stores and messaging |
| Sequence diagram | Show ordered interactions for one flow | Caller, services, data stores and response order |
| Data-flow diagram | Show how information moves and changes | Inputs, transformations, stores and outputs |
| Deployment diagram | Show runtime placement | Regions, networks, nodes and managed services |
| Failure diagram | Explain resilience behaviour | Failed component, fallback, retry and degraded path |
Context Diagram
The context diagram is often the first architectural view. It shows the complete system as one unit and identifies external actors and systems.
[Identity Provider]
|
|
[Link Creator] ---> +---------------------------+ <--- [Administrator]
| |
[Visitor] --------> | URL Shortener System |
| |
+---------------------------+
|
v
[Safety Provider]
The context view should not display internal databases, caches or service instances. Its primary purpose is to communicate scope and external relationships.
Component Diagram
A component diagram opens the system boundary and shows major internal responsibilities.
+----------------------------------------------------------------+
| URL Shortener Platform |
| |
| [API Gateway] |
| | |
| +--------> [Link Service] -------> [(Link Store)] |
| | | |
| | +-------> [Safety Service] |
| | |
| +--------> [Redirect Service] ---> [Redirect Cache] |
| | | |
| +--------------------+ |
| | |
| +------> [(Link Store)] |
| | |
| +------> [[Redirect Events]] |
| | |
| v |
| [Analytics Consumer] |
| | |
| v |
| [(Analytics Store)] |
| |
+----------------------------------------------------------------+
Sequence Diagram
A sequence diagram shows the order of interactions for one important request flow.
Redirect Sequence
Visitor Edge Redirect Service Cache Link Store
| | | | |
| GET /abc | | | |
|----------->| | | |
| | Forward | | |
| |--------------->| | |
| | | Lookup abc | |
| | |---------------->| |
| | | Cache miss | |
| | |<----------------| |
| | | Read mapping |
| | |------------------------------->|
| | | Mapping |
| | |<-------------------------------|
| | | Populate cache | |
| | |---------------->| |
| | Redirect | | |
| |<---------------| | |
| 302 | | | |
|<-----------| | | |
Separate sequence diagrams should normally be created for the create-link flow, redirect flow, deactivation flow and important failure flows.
Complete URL Shortener High-Level Diagram
+-------------------+
| Identity Provider |
+---------+---------+
|
| Token validation
|
+---------------+ +---------v---------+
| Web / Mobile |---- HTTPS ------>| Edge / Gateway |
| Client | +----+----------+---+
+---------------+ | |
| |
Create / Manage | Redirect
| |
+--------v--+ +---v--------------+
| Link | | Redirect |
| Service | | Service |
+----+------+ +----+---------+---+
| | |
Validate URL | | | Cache lookup
| | v
+----v------+ | +-------------+
| Safety | | | Redirect |
| Service | | | Cache |
+-----------+ | +------+------+
| |
Store mapping | | Miss
| | |
v v v
+-----------------------------+
| Link Mapping Store |
+-----------------------------+
Redirect Service
|
| RedirectRecorded event
v
+---------------+
| Event Stream |
+-------+-------+
|
v
+---------------+
| Analytics |
| Consumer |
+-------+-------+
|
v
+---------------+
| Analytics |
| Store |
+---------------+
Diagram Explanation
- Web and mobile clients send link-management and redirect requests through the system entry point.
- The edge or gateway handles routing and applicable cross-cutting controls.
- The Link Service owns link-creation and management operations.
- The Identity Provider participates in authenticated owner workflows.
- The Safety Service evaluates destination or abuse rules defined by the requirements.
- The Link Mapping Store is the authoritative store for short-code mappings.
- The Redirect Service handles the read-heavy redirect path.
- The Redirect Cache reduces repeated access to eligible mappings.
- Redirect events are transferred asynchronously.
- The Analytics Consumer processes redirect events separately from the critical redirect response.
Show Important Failure Behaviour
The main diagram should remain readable, but critical failure and fallback behaviour must not be ignored. Use annotations or a separate failure view.
[Redirect Service]
|
| Cache lookup
v
[Redirect Cache]
|
+-- Hit -----------------> Return mapping
|
+-- Miss ----------------> Read Link Store
|
+-- Cache unavailable ---> Read Link Store when policy permits
[Link Store unavailable]
|
+-- No safe cached value --> Controlled error
|
+-- Eligible cached value -> Follow approved stale-read policy
Annotate Quality Requirements
Quality requirements can be connected to the architecture using concise annotations rather than overcrowding the diagram.
[Redirect Service]
- Read-heavy path
- Redirect latency target applies
- Must remain independent from analytics completion
[(Link Store)]
- Authoritative mapping data
- Durability requirement applies
- Regional data constraint applies
[[Redirect Events]]
- Duplicate-tolerant consumer required
- Backlog monitoring required
Use requirement identifiers where possible:
[Redirect Service]
Supports: FR-02, FR-04, FR-06
Quality: NFR-PERF-01, NFR-AVAIL-01
[(Link Store)]
Supports: FR-01, FR-02
Quality: NFR-DUR-01
Constraint: CON-DATA-01
Observability in High-Level Diagrams
Logs, metrics and traces can be represented as one cross-cutting observability capability unless the architecture requires more detail.
[Gateway] --------+
|
[Link Service] ---+----> [Observability Platform]
|
[Redirect Service]+
|
[Worker] ---------+
Signals:
- Request rate and latency
- Failure rate
- Cache hit ratio
- Queue backlog
- Database errors
- End-to-end trace context
High-Level Diagram Creation Process
- Define the diagram's audience and purpose.
- Confirm the system boundary.
- List external actors and dependencies.
- Select the important functional requirements.
- Review the major request flows.
- Identify major responsibilities.
- Group responsibilities into logical components.
- Identify authoritative and derived data stores.
- Identify synchronous and asynchronous connections.
- Add trust, ownership or deployment boundaries where relevant.
- Label important connections.
- Trace successful and failure paths.
- Review the diagram against non-functional requirements and constraints.
- Remove implementation detail that does not support the diagram's purpose.
- Add a title, scope, legend, version and unresolved decisions.
Diagram Review Checklist
Review Before Approval
- The diagram has a clear title and purpose.
- The system boundary is visible.
- External actors and dependencies are outside the boundary.
- Every major component has a clear responsibility.
- Component names describe responsibility rather than implementation fashion.
- Important data stores are identified.
- Authoritative and derived data are distinguished.
- Important arrows are labeled.
- Synchronous and asynchronous interactions are distinguishable.
- Arrow direction is clear.
- Trust boundaries are shown where relevant.
- The main read and write flows can be traced.
- Critical failure behaviour is documented.
- External dependencies are not shown as internally owned components.
- Non-functional requirements are reflected in the architecture.
- Confirmed constraints are reflected in boundaries and placement.
- The diagram does not contain unnecessary code-level details.
- Unresolved decisions are recorded separately.
- A legend explains non-obvious notation.
- The diagram version and review status are recorded.
Common High-Level Diagram Mistakes
Drawing Before Understanding Requirements
The diagram should represent confirmed capabilities, quality needs and constraints rather than a memorized architecture template.
Adding Every Known Technology
A component belongs in the diagram only when it solves a documented architectural need.
Using Unlabeled Boxes
Names such as Service A and Service B do not explain responsibilities or ownership.
Using Unlabeled Arrows
Important connections should communicate the direction and type of interaction.
Mixing Logical and Physical Detail
Create separate logical and deployment views when combining both makes the diagram difficult to understand.
Showing a Database Shared by Every Service
Clarify data ownership and permitted access instead of using a generic shared store without boundaries.
Showing Only the Success Path
Include critical failure, timeout, fallback and degraded-mode behaviour in annotations or supplementary views.
Ignoring External Dependencies
Identity, payment, messaging and other external systems affect latency, availability and failure behaviour.
Creating One Diagram for Every Audience
Executives, engineers, security reviewers and operators may need different views of the same system.
Treating the Diagram as the Complete Design
A diagram requires supporting text for responsibilities, contracts, failure behaviour, assumptions and trade-offs.
Using Inconsistent Notation
The same shape and line style should have the same meaning throughout the diagram.
Failing to Update the Diagram
Keep architecture views aligned with approved requirements and design decisions.
Diagram Documentation Template
Diagram title:
<Descriptive architecture view name>
Diagram ID:
HLD-<number>
Purpose:
<Question answered by this diagram>
Scope:
<System, feature or workflow included>
Audience:
<Reviewers who should use this view>
Related requirements:
<Requirement identifiers>
Related constraints:
<Constraint identifiers>
Included components:
<Major actors, services, data stores and dependencies>
Excluded details:
<Implementation or deployment information intentionally omitted>
Notation:
<Meaning of shapes, lines, colors and boundaries>
Key flows:
<Important request or event flows visible in the diagram>
Important decisions:
<Architecture choices represented>
Open questions:
<Decisions that remain unresolved>
Version:
<Diagram version>
Status:
Draft / Reviewed / Approved / Superseded
Practice Exercise
Create high-level diagrams for a notification platform that supports email, SMS and mobile push notifications.
Required Views
- Create a context diagram showing clients and external delivery providers.
- Create a component diagram showing the API, store, queue and workers.
- Create a sequence diagram for submitting a notification.
- Create a sequence diagram for asynchronous delivery.
- Create a failure view for a temporary provider outage.
- Identify trust boundaries.
- Label synchronous and asynchronous connections.
- Link major components to requirements and constraints.
Model Component Diagram
[Identity Provider]
|
v
[Client] ---> [Notification API] ---> [(Notification Store)]
|
| Accepted delivery command
v
[[Delivery Queue]]
|
+-----------+-----------+
| | |
v v v
[Email Worker] [SMS Worker] [Push Worker]
| | |
v v v
[Email Provider] [SMS Provider] [Push Provider]
| | |
+-----------+-----------+
|
v
[(Delivery Status)]
Review Questions
- Is the identity provider inside or outside the owned boundary?
- Which component owns notification status?
- Does one queue serve every channel?
- How is channel-specific retry behaviour represented?
- What happens when a provider is unavailable?
- How does the caller retrieve final status?
- Where are templates stored and rendered?
- Which components handle sensitive recipient information?
- Which signals detect growing delivery backlog?
- What must be changed if data residency differs by region?
Frequently Asked Questions
What is a high-level diagram?
It is a macro-level representation of a system's major components, boundaries, data stores, external dependencies and important interactions.
How much detail should a high-level diagram contain?
Include enough detail to explain responsibilities, interactions, ownership and important design decisions. Exclude code-level details that do not affect architectural understanding.
Should technologies appear in the first diagram?
Begin with logical responsibilities and interactions. Add technologies when they are confirmed constraints or approved decisions relevant to the diagram's purpose.
Is a flowchart the same as a high-level architecture diagram?
No. A flowchart emphasizes processing decisions and sequence. An architecture diagram emphasizes components, boundaries and relationships. Both can support the design.
Should databases and caches use different symbols?
Yes, when the distinction helps the reader. Include a legend and clarify which store is authoritative.
Should every service have its own database?
Not automatically. Data ownership, consistency, coupling, migration and operational requirements should determine storage boundaries.
Should failure paths appear in the main diagram?
Show critical fallback or degraded paths when the main view remains readable. Use a supplementary failure diagram when more detail is needed.
How are asynchronous interactions shown?
Use a consistent dashed arrow or another clearly documented line style, and show the queue, stream or messaging boundary involved.
How many high-level diagrams should a system have?
Create the views needed to answer important architectural questions. Context, component, sequence, data-flow and deployment diagrams commonly serve different purposes.
What comes after the high-level diagram?
Validate the design against latency, throughput, availability and reliability requirements, then estimate traffic, storage and bandwidth before developing detailed component designs.
Key Takeaway
A high-level diagram translates requirements, constraints and request flows into a shared architectural view. Define the system boundary, identify major responsibilities, show authoritative data stores, separate synchronous calls from asynchronous events and label important connections. Keep the main diagram readable, use supplementary views for sequence, deployment and failure details, and ensure every component exists for a documented reason.