//
When your application starts receiving more traffic than a single server can handle, you have two options: make that server bigger, or add more servers.
Vertical scaling means increasing the capacity of a single machine by adding more CPU cores, RAM, or faster storage (SSD).
Horizontal scaling means adding more machines to your pool of resources. Instead of one massive server, you run your application across 100 smaller commodity servers.
| Scenario | Recommended Approach |
|---|---|
| Small application, low budget | Vertical Scaling |
| Predictable, limited growth | Vertical Scaling |
| Unpredictable, explosive growth | Horizontal Scaling |
| Zero downtime requirement | Horizontal Scaling |
| Real-world tech companies (Google, Netflix) | Horizontal Scaling |
In practice, most large-scale systems use both. They vertically scale each individual server to a reasonable level, and then horizontally scale by adding more of those servers behind a load balancer.