🔥 0
0
Lesson 1 of 10 15 min +100 XP

What is High Level Design?

Twitter processes 500 million tweets per day. Netflix serves 232 million subscribers across 190 countries. How do you even begin to design systems that operate at this scale?

That's exactly what High Level Design teaches you.

HIGH LEVEL DESIGN

  • System architecture
  • Component interactions
  • Data flow between services
  • Scaling strategies
  • Technology choices

LOW LEVEL DESIGN

  • Class structures
  • Method signatures
  • Design patterns
  • Object relationships
  • Code organization

The System Design Iceberg

Think of system design like an iceberg. HLD is what's visible above water - the architecture that everyone can see and discuss. LLD is below the surface - the implementation details that make it work.

System Design Iceberg - HLD above water, LLD below water

Requirements: The Foundation

Before designing anything, you need to understand what you're building and how big it needs to be.

Functional Requirements (What)

These define what the system does:

  • Users can post messages
  • Users can follow other users
  • Users can see a feed of posts from people they follow

Non-Functional Requirements (How)

These define how the system performs:

Latency

Response time < 200ms

📈
Throughput

10K requests/second

🔄
Availability

99.99% uptime

🔒
Consistency

Data accuracy guarantees

The Architect's Framework

When you're faced with any system design problem, follow this framework:

The Architect's Framework: CLARIFY → ESTIMATE → DESIGN → DEEP-DIVE

1. Clarify Requirements

Never assume. Ask questions like:
  • What are the core features we need to support?
  • How many users are we designing for?
  • What's more important: consistency or availability?
  • Are there any specific latency requirements?

2. Estimate Scale

Back-of-the-envelope calculations help you understand the magnitude:

Example: Twitter-like system

Daily Active Users: 200 million
Tweets per user/day: 2
Total tweets/day: 400 million
Tweets per second: 400M / 86400 ≈ 4,600 TPS

Read:Write ratio: 100:1
Reads per second: 460,000 RPS

3. Design the Architecture

Sketch the major components and how they interact:

  • What services do we need?
  • How do they communicate?
  • Where does data live?
  • How does data flow through the system?

4. Deep-Dive

Pick critical areas to explore in detail:

  • Database schema design
  • Caching strategy
  • How to handle failures
  • Scaling bottlenecks

Real-World Example: Twitter's Journey

Twitter didn't start as a massive distributed system. In 2006, it was a simple Ruby on Rails app with a single MySQL database.

2008: The Fail Whale Era

Twitter became famous for its "Fail Whale" error page. The simple architecture couldn't handle viral moments. A single celebrity tweet could bring down the entire site.

2010-2017: The Transformation

Twitter migrated to a distributed architecture with "hundreds of thousands of servers" across multiple data centers on five continents. They went from constant outages to handling World Cup traffic spikes without breaking a sweat.

Source: [Twitter Infrastructure Blog](https://blog.x.com/engineering/en_us/topics/infrastructure/2017/the-infrastructure-behind-twitter-scale)

What You'll Learn in This Course

📐
Scaling

Vertical vs horizontal, stateless design

⚖️
Load Balancing

Distribute traffic efficiently

🗄️
Caching

Speed up reads dramatically

🗃️
Databases

Sharding, replication, consistency

📬
Message Queues

Async processing at scale

🎯
Case Studies

Real designs from tech giants

Key Takeaways

  • HLD = 30,000 foot view - System architecture, not code details
  • Requirements first - Functional (what) + Non-functional (how)
  • Framework matters - Clarify → Estimate → Design → Deep-dive
  • Start simple, then scale - Twitter started with one server too

Next up: Scaling Basics - Understanding vertical vs horizontal scaling and when to use each.

🧠 Quick Quiz

Test your understanding of this lesson.

1

What does High Level Design focus on?

2

Which is a Non-Functional Requirement?

3

What's the first step when tackling a system design problem?