TechCoder.io / System Design

What is System Design?

Understand the scope of system design, the difference between HLD and LLD, functional vs non-functional requirements, and how to approach FAANG-level design interviews.

By TechCoder TeamLast updated: 2026-10-17
In a Nutshell

Understand the scope of system design, the difference between HLD and LLD, functional vs non-functional requirements, and how to approach FAANG-level design interviews. This hands-on tutorial focuses on practical implementation of what is system design? concepts.

What is System Design?

System design is the process of defining the architecture, components, modules, interfaces, and data flow of a system to satisfy specified requirements. It is both an art and a science — combining engineering rigor with architectural creativity.

System Design Overview — from requirements to architecture

[!IMPORTANT] System design is the most heavily weighted skill in senior engineer and staff engineer interviews at Google, Meta, Amazon, Apple, Netflix, and Microsoft. A weak design round is the #1 reason experienced engineers fail FAANG interviews.

Why Does System Design Matter?

Writing code that works is necessary but not sufficient. At scale, a system that is not designed well will:

  • Crash under load (poor scalability)
  • Lose data during outages (poor reliability)
  • Respond slowly to users (poor performance)
  • Cost 10x more than it needs to (poor efficiency)
  • Become impossible to change (poor maintainability)

Real companies operate at massive scale:

  • Google Search — 8.5 billion searches per day
  • WhatsApp — 100 billion messages per day
  • YouTube — 500 hours of video uploaded every minute
  • Twitter — 350,000 tweets per minute at peak

Designing systems that handle this requires deliberate architectural thinking.

High-Level Design (HLD) vs Low-Level Design (LLD)

AspectHigh-Level Design (HLD)Low-Level Design (LLD)
FocusOverall architecture & componentsClasses, methods, algorithms
AudienceArchitects, senior engineersDevelopers, code reviewers
Questions answeredWhat services exist? How do they talk?What classes/functions? What design patterns?
ExampleURL shortener: Web server + DB + Cache + CDNUrlShortener class with encode/decode methods

[!NOTE] This course focuses on HLD — the architectural decisions. Low-Level Design (OOP patterns, SOLID, design patterns) is covered in the LLD course.

Functional vs Non-Functional Requirements

Before drawing a single box in a diagram, you must understand what the system must do and how well it must do it.

Functional Requirements

These define what the system does:

  • "Users can post tweets"
  • "Users can search for videos"
  • "The system generates short URLs"

Non-Functional Requirements (NFRs)

These define how well the system performs:

PYTHON PLAYGROUND
⏳ Loading editor…

The System Design Process

In an interview and in real-world work, follow this structured approach:

Key Non-Functional Properties to Design For

PropertyDefinitionHow to Achieve
ScalabilityHandle 10x more loadHorizontal scaling, sharding
AvailabilityStay up (99.99% = 52 min/year downtime)Replication, failover
ReliabilityCorrect results, no data lossDurability, ACID, idempotency
PerformanceLow latency (< 100ms p99)Caching, CDN, indexing
ConsistencyAll users see the same dataReplication strategies
MaintainabilityEasy to change and debugMicroservices, observability
SecurityNo unauthorized accessAuth, encryption, firewalls

Quiz

Quiz

Question 1 of 3

What is the primary difference between HLD and LLD?

HLD uses diagrams, LLD uses code
HLD defines overall architecture and components, LLD defines classes, methods, and algorithms
HLD is for backend, LLD is for frontend

Key Takeaways

✅ System design is about architectural decisions that determine how well a system scales, performs, and survives failures.
✅ Always distinguish Functional (what the system does) from Non-Functional (how well it does it) requirements.
✅ Back-of-the-envelope estimation is a core skill — practice calculating QPS, storage, and bandwidth from DAU numbers.
✅ Follow a structured design process: Requirements → Estimation → API → HLD → DB → Deep Dive → Scale.

Official Resources

What's Next?

Now that you understand the why of system design, let's understand the foundation all systems are built on.
Next: Client-Server Architecture — How the Internet Actually Works.