Pre-verified cloud accounts, delivered ready to use.

Cloud VPS & Servers

Scaling Up vs Scaling Out: Which One First

Horizontal scaling is the sophisticated answer and usually the wrong first move. A bigger server buys time you can spend better elsewhere.

Isometric illustration of stacked modular blocks representing cloud server infrastructure

Scaling up means a bigger server. Scaling out means more servers. Both work, they solve different problems, and the order in which you do them determines how much unnecessary complexity you carry.

The honest comparison

Scaling up Scaling out
Effort Change plan, reboot Load balancer, shared state, deployment changes
Downtime A short reboot None, once it works
Redundancy gain None Substantial
Cost curve Superlinear at the top end Roughly linear
Ceiling Largest available instance Effectively none
Application changes Usually none Often significant

The row that decides most cases is the last one. Scaling up requires nothing of the application. Scaling out requires it to be stateless, which many applications are not by accident.

Scale up first, and be unembarrassed about it

Modern instances are large. A single machine with 32 cores and 128 GB of RAM handles a substantial application, and it costs less than the engineering time needed to make a smaller system horizontal.

Scaling up is the right first move when traffic is growing steadily, a single component is the bottleneck, and the application holds local state. Doubling the server is an afternoon; making the application horizontal is a project.

When scaling out becomes necessary

  • You need redundancy. One server is one failure away from an outage, and no instance size changes that.
  • Traffic is spiky, and paying for peak capacity continuously is wasteful.
  • You have reached the largest sensible instance.
  • Users are geographically spread and latency matters.
  • You want deployments without downtime, which needs at least two of everything.

Redundancy is the strongest of these and the one most often deferred. If an outage is genuinely costly, two servers is the answer regardless of load.

What makes an application horizontally scalable

  1. No local session state. Sessions in Redis or a signed cookie, not in process memory.
  2. No local file writes that matter. Uploads to object storage, not to the instance disk.
  3. No in-process scheduler. Cron on every node runs every job several times; use a lock or a dedicated scheduler.
  4. No local cache that must be consistent. Shared cache, or accept per-node divergence deliberately.
  5. Health endpoints so the load balancer can tell working nodes from broken ones.
  6. Config from environment, so every node is identical and disposable.

Fix these before adding the second server. Adding a load balancer to an application that stores sessions locally produces intermittent logouts that are miserable to diagnose.

The database is the part that does not scale out easily

Application servers are easy to duplicate. Databases are not, because they hold the state everything else avoids.

The realistic progression: scale the database up as far as sensible, add read replicas for read-heavy workloads, cache aggressively to remove reads entirely, and only then consider sharding. Sharding is a genuine architectural commitment and should be the last option, not the first.

A sensible order of operations

  1. Measure. Find the actual bottleneck rather than the assumed one.
  2. Optimise the obvious — slow queries, missing indexes, uncached responses. This is frequently worth more than any hardware change.
  3. Add a CDN so static traffic never reaches the origin.
  4. Scale up the bottleneck component.
  5. Make the application stateless.
  6. Scale out application servers behind a load balancer.
  7. Add read replicas and caching for the database.
  8. Consider sharding or partitioning only if you get this far.

Most systems stop at step three or four, permanently. That is a good outcome, not a failure of ambition.

Common questions

Is autoscaling the same as scaling out?

Autoscaling automates it. The application still has to be stateless and disposable, so autoscaling is the reward for doing that work, not a substitute for it.

How many servers do I need for redundancy?

At least two, in different availability zones, sized so either one can carry the full load alone. Two servers each running at 70 per cent give you no redundancy at all.

Does scaling out reduce cost?

Sometimes, because you can use several smaller instances and scale down off-peak. It adds load balancer cost and operational complexity, so the saving is not automatic.

When is Kubernetes the right answer?

When you have enough services and enough people that manual orchestration is the bottleneck. For one application on two servers it adds far more complexity than it removes.

Where to go next

See load balancing basics and how to size a cloud server.

Read next

All guide articles

Chat on Telegram Contact support on Telegram (opens in a new tab)
Scroll to Top