Comparisons

Ten pairs that get conflated in real conversations. Neither column wins — what decides is the requirement. Each record leads with the confusion, because the confusion is the reason the record exists.

Horizontal vs Vertical scaling

What people get wrong about this pair

Scaling out is treated as the sophisticated answer and scaling up as the embarrassing one. Vertical scaling is often the correct next step: it requires no code change, no statelessness work and no distributed reasoning. And scaling out does nothing at all if the bottleneck is the shared database every instance queues on.

Scale out — more instances
Use it when

Stateless request handling where load grows beyond one machine, and where redundancy is itself a requirement.

Scale up — a bigger instance
Use it when

When the bottleneck is one thing that cannot be split — a primary database, a memory-resident working set, a single-writer component.

DimensionScale out — more instancesScale up — a bigger instance
Code prerequisiteStatelessness, externalised sessions and locksNone
RedundancyComes with itNone — one machine is one failure
CeilingUsually the shared dependency behind itThe largest instance available
Downtime to applyNone — add instancesUsually a restart or failover
Effect on the databaseMore connections; the pool math changesUnchanged connection count
When it fails to helpWhen the bottleneck is shared and singularWhen the work is genuinely parallel and huge