---
type: "article"
title: "Introduction to System Design"
summary: "System Design often feels intimidating at first - big diagrams, fancy terms, and interviews that expect you to “just know” how large systems are built.\nThis blog series is my attempt to make Low-Level System Design (LLD) simple, practical, and approachable, especially for freshers and undergrad students.\nMost of the concepts shared here are based on my learning from Rohit Negi and Aditya Tandon’s “Low-Level Design (LLD) Masterclass” on YouTube, combined with my own notes and understanding.\nThis series is for you if:\nYou want a quick and structured revision of LLD concepts\nLong video courses feel hard to follow (language, pace, or time issues)\nYou’re starting system design from scratch and want clarity\nYou’re preparing for SDE interviews and want strong fundamentals\nI’ll be publishing a new article every 1–2 weeks, keeping things crisp and focused.\nIf you find this useful, consider liking the blog and subscribing to the newsletter so you don’t miss upcoming posts.\nLow‑Level Design (LLD)\nLow-Level Design focuses on the internal structure of an application.\nIt answers questions like:\nWhat classes should exist?\nHow do objects interact with each other?\nHow does data flow inside the system?\nWhere do algorithms and data structures fit into the code?\nIn simple terms:\nLLD is about how your code is organised internally.\nIt covers:\nclass design\nobject relationships\ninterfaces and abstractions\nclean separation of responsibilities\nCore Principles of Low-Level Design\nLLD mainly focuses on three things:\n1. Scalability\nThe system should handle large numbers of users easily\nCode structure should allow easy expansion (new features, more servers, new requirements)\n2. Maintainability\nAdding new features should not break existing functionality\nCode should be easy to debug, read, and modify\n3. Reusability\nWrite loosely coupled, plug-and-play modules\nExample:\na notification system\na matching or recommendation algorithm\n    These can be reused across apps like Zomato, Swiggy, Amazon Delivery, etc.\nHigh-Level Design (HLD)\nWhile LLD focuses on code structure, High-Level Design (HLD) focuses on the big picture - the overall system architecture.\nHLD deals with:\noverall system architecture\ninteraction between major components\ntech stack choices\ndatabase selection (SQL / NoSQL / Hybrid)\nscaling strategies (load balancers, auto-scaling)\ndeployment and cloud cost optimisation (AWS / GCP)\nIn short:\nHLD explains how the entire system works at scale.\nDSA vs LLD vs HLD (Quick Summary)\nDSALLDHLD\nBrain of an applicationSkeleton of the applicationArchitecture of the application\nAlgorithms that solve specific problems efficientlyClasses, object models, code structure, and where algorithms fitServers, databases, infrastructure, tech stack, and scaling\nAll three are important—and they work best together.\nWhat’s Ahead\nBefore diving into LLD design patterns, we need a standard and structured way to represent our designs. In the industry, designs are often explained using simple, well-defined diagrams that everyone understands. This is where Unified Modelling Language (UML) comes in.\nUML is a general-purpose modelling language used to visually represent system designs.\nIts goal is to provide a standard way to visualise how a system is built, similar to blueprints in civil or mechanical engineering.\nIn the next article, I will deep-dive into UML diagrams, explain their different types and components, and show how they help us represent system design concepts clearly—so that we can discuss and apply design patterns efficiently.\nFinal Note\nIf you’re learning system design or preparing for interviews, you’re not alone—it does take time.\nThe goal of this series is to build strong fundamentals step by step, without overcomplicating things.\nFeel free to drop questions or feedback in the comments—I’ll try to address them in future posts."
newsletter: "Engineering With Ashmit"
newsletter_handle: "engineeringwithashmit"
newsletter_url: "https://usecommune.com/n/engineeringwithashmit"
author: "Ashmit JaiSarita Gupta (@ashmitjsg)"
published: "2026-01-27T16:50:33.000Z"
canonical_url: "https://usecommune.com/n/engineeringwithashmit/a/introduction-to-system-design-2"
markdown_url: "https://usecommune.com/n/engineeringwithashmit/a/introduction-to-system-design-2.md"
chat_url: "https://usecommune.com/n/engineeringwithashmit/a/introduction-to-system-design-2/chat"
source_url: "https://engineeringwithashmit.hashnode.dev/introduction-to-system-design"
body_source: "imported"
likes: 0
replies: 0
body_words: 647
---

# Introduction to System Design

System Design often feels intimidating at first - big diagrams, fancy terms, and interviews that expect you to “just know” how large systems are built.

This [blog series](https://engineeringwithashmit.hashnode.dev/series/low-level-system-design) is my attempt to **make Low-Level System Design (LLD) simple, practical, and approachable**, especially for **freshers and undergrad students**.

Most of the concepts shared here are based on my learning from [Rohit Negi and Aditya Tandon’s “Low-Level Design (LLD) Masterclass” on YouTube](https://youtube.com/playlist?list=PLQEaRBV9gAFvzp6XhcNFpk1WdOcyVo9qT&si=67cXAzKxfb0zQf5j), combined with my own notes and understanding.

This series is for you if:

- You want a **quick and structured revision** of LLD concepts
- Long video courses feel hard to follow (language, pace, or time issues)
- You’re starting **system design from scratch** and want clarity
- You’re preparing for **SDE interviews** and want strong fundamentals

I’ll be publishing a new article **every 1–2 weeks**, keeping things crisp and focused.

> If you find this useful, consider **liking the blog and subscribing to the newsletter** so you don’t miss upcoming posts.

## Low‑Level Design (LLD)

Low-Level Design focuses on the **internal structure of an application**.

It answers questions like:

- What classes should exist?
- How do objects interact with each other?
- How does data flow inside the system?
- Where do algorithms and data structures fit into the code?

In simple terms:

> **LLD is about how your code is organised internally.**

It covers:

- class design
- object relationships
- interfaces and abstractions
- clean separation of responsibilities

### Core Principles of Low-Level Design

LLD mainly focuses on three things:

**1. Scalability**

- The system should handle **large numbers of users** easily
- Code structure should allow **easy expansion** (new features, more servers, new requirements)

**2. Maintainability**

- Adding new features should **not break existing functionality**
- Code should be easy to **debug, read, and modify**

**3. Reusability**

- Write **loosely coupled, plug-and-play modules**
- Example:

  - a notification system
  - a matching or recommendation algorithm

These can be reused across apps like **Zomato, Swiggy, Amazon Delivery**, etc.

## **High-Level Design (HLD)**

While LLD focuses on code structure, **High-Level Design (HLD)** focuses on the **big picture -** the **overall system architecture**.

HLD deals with:

- overall system architecture
- interaction between major components
- tech stack choices
- database selection (SQL / NoSQL / Hybrid)
- scaling strategies (load balancers, auto-scaling)
- deployment and cloud cost optimisation (AWS / GCP)

In short:

> **HLD explains how the entire system works at scale.**

## DSA vs LLD vs HLD (Quick Summary)

|   |   |   |
| --- | --- | --- |
| **DSA** | **LLD** | **HLD** |
| Brain of an application | Skeleton of the application | Architecture of the application |
| Algorithms that solve specific problems efficiently | Classes, object models, code structure, and where algorithms fit | Servers, databases, infrastructure, tech stack, and scaling |

All three are important—and they work best **together**.

## **What’s Ahead**

Before diving into **LLD design patterns**, we need a **standard and structured way** to represent our designs. In the industry, designs are often explained using **simple, well-defined diagrams** that everyone understands. This is where **Unified Modelling Language (UML)** comes in.

UML is a **general-purpose modelling language** used to visually represent system designs.
Its goal is to provide a **standard way to visualise how a system is built**, similar to blueprints in civil or mechanical engineering.

In the **next article**, I will deep-dive into **UML diagrams**, explain their different types and components, and show how they help us represent system design concepts clearly—so that we can discuss and apply **design patterns efficiently**.

## Final Note

If you’re learning system design or preparing for interviews, you’re not alone—it *does* take time.
The goal of this series is to **build strong fundamentals step by step**, without overcomplicating things.

Feel free to drop questions or feedback in the comments—I’ll try to address them in future posts.

***

## Discussion

No replies yet.
