Scaling up, scaling out, or horizontal scaling adds more servers or nodes to service requests, rather than resources. If you do not want to scale up your application, there is always a way to scale it out.
Scaling out is a successful strategy when the application code does not depend on the server it is running on. However, if a request needs to be executed on a specific server, that is, if the application code has server affinity, it will be difficult to scale that out. In the case of stateless code, it is easier execute on any server. Hence, scalability is improved when stateless code is run on horizontally-scaled machines or clusters.
Due to the nature of horizontal scaling, it is a commonly used approach across the industry. There areĀ many examples of large scalable systems managed in this way, such as Google, Amazon, and Microsoft.