Q. Why is scaling out preferred over scaling up?
A. Many times when talking about cloud services there are discussions of scaling out vs scaling up.
- Scale up - Make an instance bigger, e.g. make a VM bigger
- Scale out - Add instances of an application
Scaling out is preferred for a number of reasons:
- Since you are adding instances of a service the existing instances are not modified therefore there is no interruption to service. With the scale up often the instances have to be restarted to have the resources added/recognized causing an interruption
- By having multiple instances you not only increase scale but add resiliency since if an instance fails the service is still running on the other instances
- With scale out the instances can be updated in groups avoiding taking down the entire service during maintenance
- Scale out generally costs the same since having two VMs with 2-cores generally is the same cost as one VM with 4-cores (with the exception of some additional storage for the OS disk)
Note that to use scale out the service has to support having multiple instances plus you likely need to front end the service with a load balancer to distribute requests between the instances. If you have a service that does not support multiple instances then you would have to use the scale up model.