We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Core Fundamentals
Free preview: the first 2 parts of this 8-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Core Fundamentals
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
You launched your app. People are using it. Life is good. Then one Tuesday afternoon, traffic doubles because someone posted about you on Reddit. Your server CPU is pegged at 98%. Response times go from 200ms to 4 seconds. Users are leaving.
You have two choices: make your existing server bigger, or add more servers. The first option, making your server bigger, is vertical scaling. And it's almost always the right first move.
Here's why this matters: every major tech company started by scaling vertically. Instagram ran on a single server for longer than you'd expect. Basecamp still runs on beefy individual servers. Stack Overflow, a site serving millions of developers daily, famously runs on just a handful of powerful machines.
Vertical scaling is the simplest, fastest, and most underrated scaling strategy in system design. It's also the one with the clearest ceiling. Understanding both sides is what separates someone who can actually build systems from someone who just memorizes buzzwords.
Vertical scaling, also called "scaling up", means adding more resources to your existing machine. More CPU cores. More RAM. Faster SSDs. A beefier network card.
Think of it like upgrading your laptop. Your current one has 8GB of RAM and things are sluggish. So you swap in 32GB. Same laptop, same operating system, same applications, but now it breathes easier because it has more room to work.
The server equivalent looks like this:
| Before | After |
|---|---|
| 4 CPU cores | 64 CPU cores |
| 16 GB RAM | 512 GB RAM |
| 500 GB SSD | 4 TB NVMe SSD |
| 1 Gbps network | 10 Gbps network |
In the cloud, this is even simpler. On AWS, you literally click a dropdown and change your EC2 instance from a t3.medium (2 vCPUs, 4GB RAM) to an r6i.8xlarge (32 vCPUs, 256GB RAM). Restart the instance. Done. Your app didn't change a single line of code.
That last part is the killer feature: zero application changes. Your code doesn't know or care that it's running on a bigger machine. It just runs faster because it has more resources available.