System Design 101: The Core Concepts You Need to Know
In our last post, we talked about why system design matters — not just in interviews but also in the real world.
Now, let’s begin unpacking the core building blocks every developer needs to understand. Whether you're designing a small app or architecting a massive distributed system, these concepts will show up again and again.
1. Latency vs Throughput
Latency is the time it takes to process a single request.
Think: “How fast can I get a response?”Throughput is how many requests your system can handle per second.
Think: “How much traffic can I handle?”
Both are crucial — but optimizing one often affects the other. We'll explore how in real-world cases.
2. Load Balancing
You’ve probably heard of it — but what does a load balancer really do?
Distributes traffic across multiple servers
Prevents any single machine from becoming a bottleneck
Adds fault tolerance by rerouting if a server goes down
In future posts, we’ll show how services like NGINX, HAProxy, or even cloud-native ones (like AWS ELB) help keep systems reliable.
3. Caching
When performance matters, caching saves the day.
Avoids hitting the database for the same data
Can be done at multiple levels: browser, CDN, backend
Tools: Redis, Memcached, Varnish
We’ll cover when caching helps — and when it can cause hard-to-debug issues.
4. CAP Theorem (Consistency, Availability, Partition Tolerance)
You can’t have all three in a distributed system. You must pick two:
CP systems prioritize accuracy even if some nodes are down
AP systems prioritize being always available, even with stale data
We’ll explore how databases like MongoDB, Cassandra, and SQL behave under this model.
5. Scaling: Vertical vs Horizontal
Vertical Scaling: More power (CPU/RAM) to one machine
Horizontal Scaling: Add more machines
Why most large systems prefer horizontal scaling — and how it leads to distributed architecture.
Wrap-Up:
These aren’t just buzzwords. These are the mental models that help you:
Predict bottlenecks before they happen
Understand trade-offs when designing systems
Communicate confidently in design interviews
In the next posts, we’ll apply these ideas by designing a simple system — a URL shortener — and walk through the real decisions behind it.