When is vertical scaling the better answer, and what makes horizontal inevitable eventually?
Show the full answer Hide the answer
What is being tested
Whether you recognise that vertical scaling is under-used and that availability, not capacity, is what eventually forces horizontal.
When vertical is better
When it is simply enough. A larger machine is a configuration change; horizontal scaling of a stateful component is an architecture change with cross-node coordination, partitioning and consistency consequences.
Modern instances are very large, and a great many workloads that "need to scale out" fit comfortably on one machine with room to grow.
When state is expensive to partition. A workload with a rich relational model and cross-entity transactions pays enormously to distribute, and the price is paid in every future feature.
When licensing inverts the economics. A per-core database licence can make horizontal scaling more expensive than vertical, which is a commercial constraint producing a technical decision — and it should be recognised as such rather than rationalised.
When the team is small. Operating one large instance is dramatically simpler than operating a distributed system.
What makes horizontal inevitable
Availability, before capacity. A single machine is a single failure domain. However large it is, it can fail, be rebooted for patching, or sit in a zone that goes down.
That is what forces horizontal even for workloads whose capacity fits vertically — and it means the first horizontal step is usually about redundancy rather than throughput, which changes what you optimise for.
Then, eventually: the largest available machine is a ceiling.
The order that works
Scale vertically first, further than fashion suggests. Then add redundancy horizontally for availability. Then partition only when a measured constraint demands it — and choose the partition key as though you cannot change it, because in practice you cannot.
What a strong answer adds
That the two are not exclusive. The common mature shape is a small number of large instances: horizontal enough for availability and rolling deployment, vertical enough to avoid the coordination cost of a large fleet.