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





