Skip to main content

Command Palette

Search for a command to run...

Introduction to System Design

Updated
3 min read
Introduction to System Design
A
Software Development Engineer working on scalable backend systems and developer platforms, with experience in full-stack and quantum computing software development. Open-source contributor and Google Summer of Code mentor. Interested in system design, distributed systems, and quantum computing. I write to simplify System Design, real-world software architecture, and open-source for early-career engineers.

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)

DSALLDHLD
Brain of an applicationSkeleton of the applicationArchitecture of the application
Algorithms that solve specific problems efficientlyClasses, object models, code structure, and where algorithms fitServers, 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.

Low Level System Design

Part 1 of 1

This series explains System Design fundamentals with a focus on Low-Level Design (LLD). It is written for freshers and early-career engineers to understand code structure, UML, and design principles in simple language.