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

[!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)
| Aspect | High-Level Design (HLD) | Low-Level Design (LLD) |
|---|---|---|
| Focus | Overall architecture & components | Classes, methods, algorithms |
| Audience | Architects, senior engineers | Developers, code reviewers |
| Questions answered | What services exist? How do they talk? | What classes/functions? What design patterns? |
| Example | URL shortener: Web server + DB + Cache + CDN | UrlShortener 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:
The System Design Process
In an interview and in real-world work, follow this structured approach:
Key Non-Functional Properties to Design For
| Property | Definition | How to Achieve |
|---|---|---|
| Scalability | Handle 10x more load | Horizontal scaling, sharding |
| Availability | Stay up (99.99% = 52 min/year downtime) | Replication, failover |
| Reliability | Correct results, no data loss | Durability, ACID, idempotency |
| Performance | Low latency (< 100ms p99) | Caching, CDN, indexing |
| Consistency | All users see the same data | Replication strategies |
| Maintainability | Easy to change and debug | Microservices, observability |
| Security | No unauthorized access | Auth, encryption, firewalls |
Quiz
Quiz
Question 1 of 3What is the primary difference between HLD and LLD?
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
- 📖 Designing Data-Intensive Applications (Book) — The bible of distributed systems
- 📖 System Design Primer (GitHub) — Comprehensive open-source guide
- 📖 Google SRE Book — Free online, reliability engineering at Google scale
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.