System Design Framework – A Simplified 6-Step Method

RajdeepRajdeep
3 min read

🧠 Welcome to Episode 2 of our series – High-Level System Design: A Simplified Guide
🎥 Watch the episode on YouTube

In this post, we’ll explore a 6-step mental model that simplifies any system design problem — whether you’re preparing for interviews or building scalable, real-world products.


🚀 Why You Need a System Design Framework

System design interviews are intentionally vague.

You're told:

“Design a pastebin”
“Design a ride-sharing app”

But where do you even begin?

The mistake many engineers make is to jump directly into databases, APIs, or buzzwords. That’s like starting a building by placing bricks without a blueprint.

You need a framework — a repeatable approach that brings clarity and structure.


🧩 Step-by-Step: The 6-Step System Design Framework

1️⃣ Clarify Requirements

Start by understanding what you're building — not how.

Ask:

  • What are the functional requirements?

  • What are the non-functional constraints (latency, availability, scale)?

  • What are the edge cases, user types, and data retention policies?

🧠 Example: Designing Pastebin? Ask:

  • Can pastes expire?

  • Are they private/public?

  • How many pastes per second?

👉 The quality of your design starts with the quality of your questions.


2️⃣ Define APIs

Before diving into architecture, define the interfaces.

This makes the problem smaller and modular.

🧱 For Pastebin:

POST /paste
GET /paste/:id

Also address:

  • Idempotency – Should retries create duplicates?

  • Versioning – How do you evolve APIs?

  • Rate limits – How do you prevent abuse?

We'll go deeper into these topics later in the course.


3️⃣ Design the Database

Now decide:
→ Should it be SQL or NoSQL?
→ Do you need joins or flexibility?

📌 General rule:

  • Use SQL when: data is relational, needs strong consistency (e.g., orders, billing)

  • Use NoSQL when: flexible schema, massive scale, high write load (e.g., Pastebin content)

🧠 Pastebin Schema (NoSQL):

jsonCopyEdit{
  "id": "xyz123",
  "content": "Text content",
  "expires_at": "timestamp"
}

4️⃣ Estimate & Handle Scale

This step separates junior engineers from senior ones.

Estimate:

  • QPS (queries per second)

  • Storage (daily/weekly/monthly growth)

  • Bandwidth (data in/out)

🧠 Pastebin:

  • 10M pastes/day × 1 KB = 10 GB/day

  • 100K reads/sec = requires caching

Design for scale using real numbers, not assumptions.


5️⃣ Add Async Components

Offload non-critical operations to background workers.

🧠 Examples:

  • Archiving expired pastes

  • Sending notifications

  • Pre-processing data

Use tools like:

  • Kafka, SQS (queues)

  • Cron jobs

  • Event-driven microservices

This helps:

  • Improve responsiveness

  • Isolate failure

  • Allow retries and decoupling


6️⃣ Identify Bottlenecks & Tradeoffs

Good design is not perfect design. It’s well-balanced design.

👉 Key trade-offs to consider:

Trade-offExplanation
CachingSpeed vs. Stale Data
ConsistencyAccuracy vs. Latency
ShardingScalability vs. Complexity
ReplicationRead scale vs. Update lag
Eventual ConsistencyThroughput vs UX Confusion

Great engineers don’t avoid trade-offs. They make conscious choices with full awareness of their impact.


🧠 Recap: The 6-Step Framework

Here’s a quick recap of the framework:

  1. Clarify Requirements

  2. Define APIs

  3. Design the Database

  4. Estimate & Handle Scale

  5. Add Async Components

  6. Identify Bottlenecks & Tradeoffs

This framework applies to almost every backend system — from Uber to Instagram to UPI.

📢 Coming Up in Episode 3:
We’ll go deeper into breaking down requirements, using real-world examples.

Thanks for reading. Let’s simplify system design — one concept at a time.


✍️ Written by Rajdeep Dutta
🎓 TechSimplified by Rajdeep

#SystemDesign #SoftwareEngineering #Backend #FAANGPrep #Microservices #Architecture #TechSimplified

0
Subscribe to my newsletter

Read articles from Rajdeep directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Rajdeep
Rajdeep