Skip to Content
The Big Picture of System Design

The Big Picture of System Design

  • system-design
  • backend
  • architecture
4 min read System Design · Part 1 of 4 Ritik Tiwari
System Design · Part 1 of 4Part 2

System design is one of those skills that separates good engineers from great ones. You can write clean code — but can your system handle 10 users? 10,000 users? 10 million users? This series is about building that intuition from scratch.


The One Analogy That Rules Them All

Your application is a city.

If you understand this analogy, system design becomes much easier to reason about. This mental model will stay with you across every system you design.

System Design ConceptCity AnalogyMemory Anchor
Single serverA houseOne person doing everything
Load balancerTraffic cop at the city gateDistributes cars across roads
Application serversOffice buildingsWhere the actual work happens
DatabaseThe city vault / records roomPermanent, authoritative storage
CacheSticky note on your deskFast, temporary, nearby
CDNLocal shops in every neighbourhoodContent near where users live
Message queueThe city post officeDrop work, processed later
DNSCity address directoryNames → IP addresses
API GatewayCity reception deskOne entry point, routes to departments

What is System Design?

System design is:

Designing the architecture, components, and data flow of a system to meet requirements at scale.

Think of the evolution:

  • Junior dev → “Does this code work?”
  • Mid-level dev → “Does this work reliably?”
  • Senior dev → “Will this work at scale?”
  • System designer → “How do we build this so it doesn’t break under real-world conditions?”

How Real Systems Evolve

No system starts “distributed.” Everything begins simple — and grows.

Stage 1: [User] → [Server + DB]
Stage 2: [User] → [App Server] → [DB]
Stage 3: [User] → [App Server] → [Cache] → [DB]
Stage 4: [User] → [LB] → [Multiple App Servers] → [Cache] → [DB]
Stage 5: [CDN] handles static content
Stage 6: [Queue + Workers] handle async tasks
Stage 7: [DB Replication] for scaling reads

Rule:
👉 Only add complexity when a bottleneck forces you to.


Core Qualities You Design For

Every system design decision optimizes for one (or more) of these:

QualityMeaningCity Analogy
ScalabilityHandle increasing loadCity can grow — add buildings and roads
AvailabilitySystem is up and servingCity hall never closes
ReliabilityCorrect results consistentlyRecords are always accurate
LatencyTime for one requestHow fast your food arrives
ThroughputRequests per secondHow many orders the kitchen handles/hour
ConsistencyAll users see the same dataEveryone reading the same city map version
Fault toleranceWorks when components failCity functions despite one grid going down

Latency Numbers You Should Know

These help you reason about bottlenecks:

OperationLatency
L1 cache~0.5 ns
RAM (Main memory)~100 ns
SSD~100 µs
Network (same DC)~0.5 ms
HDD~10 ms
Cross-continent network~150 ms

👉 Key insight:
Network calls are expensive. Disk is slow. Memory is fast. Cache is king.


Horizontal vs Vertical Scaling

Vertical Scaling (Scale Up)Horizontal Scaling (Scale Out)
Increase machine power (CPU, RAM)Add more machines
Simple to implementRequires stateless architecture
Has a limitHighly scalable
Single point of failureNo single point of failure

Example:

Vertical:   [2 CPU, 4GB] → [32 CPU, 128GB]       ← one machine gets bigger
Horizontal: [Server] → [Server][Server][Server]  ← more machines added

👉 Modern systems prefer horizontal scaling.


Stateful vs Stateless Systems

Stateful SystemsStateless Systems
Server stores sessionNo session stored on server
User must hit same serverAny server can handle any request
Breaks scalabilityEnables scaling

👉 Any server can handle any request → enables scaling.


The RESHADED Framework (For Interviews)

Use this to structure any system design answer:

LetterStands forWhat to address
RRequirementsFunctional + non-functional
EEstimationTraffic, storage, bandwidth
SStorageSQL vs NoSQL, schema
HHigh-level designComponents + connections
AAPIsKey endpoints
DDeep divesBottlenecks, scaling
EEdge casesFailure modes
DDoneSummarise trade-offs

This alone can level up the interview performance massively.


Quick Recap

  • System design is about scale, reliability, and architecture
  • Start simple → evolve gradually
  • Think in terms of components, not code
  • Prefer stateless systems for scalability
  • Understand trade-offs — there’s no perfect system

Flashcards

Q: What are the core system qualities?

Scalability, Availability, Reliability, Latency, Throughput, Consistency, Fault tolerance

Q: Vertical vs Horizontal scaling?

Vertical = bigger machine
Horizontal = more machines

Q: What makes a system stateless?

No session stored on server

Q: Why is caching important?

Because memory is orders of magnitude faster than disk/network


Series · System Design

Part 1 of 4 · Mar 2026