When one is not enough.
THE SIGNS
Consistently high resource use Slowness under load rather than constantly Running out of disk Traffic growing steadily
WHAT TO TRY FIRST
The same optimisations as anywhere: caching, images, database, application configuration.
A larger server running an unoptimised application is expensive.
VERTICAL SCALING
A bigger server. Simple, and there is a ceiling.
Usually the right first step.
HORIZONTAL SCALING
Multiple servers sharing load.
Considerably more complex: shared storage, session handling, database separation.
Not a step to take casually.
SEPARATING SERVICES
Moving the database to its own server is frequently the first useful split.
WHAT TO MEASURE BEFORE SCALING
Which resource is actually the constraint.
Adding memory when the constraint is disk speed achieves nothing.
WHEN TO GET HELP
Before building anything distributed.
The failure modes are subtle and expensive.