Scalability is a multifaceted concept that manifests in different ways for different companies. In general, cloud scalability goals and needs can be divided into three distinct categories: vertical, horizontal, and diagonal scaling.
Horizontal scaling, also called scaling out, refers to infrastructure changes to better accommodate the shifting needs of a company. This can involve implementing new servers or making changes to existing physical servers to better support a change in priorities or goals. Horizontal scaling requires use of independent web applications so that functions can be separated as the scaling process proceeds, particularly if multiple servers are employed. This can lead to a more complex process, but opens the door to virtually infinite storage space and, accordingly, growth potential.
Vertical scaling, also called scaling up, refers to adding additional cloud-based services and resources to accommodate growing needs. There is generally no infrastructure or code changes in this form of scaling, as the objective is to increase capacity rather than the actual function of the server. Vertical scaling is ideal when companies have additional users or require expanded application services but do not need to build anything out to accommodate more complex demands.
Diagonal scaling, as the name implies, is a combination of vertical scaling and horizontal scaling. In this model, vertical scaling is employed until the server’s maximum capacity, whether memory, computing resources, or any number of other scenarios, is achieved. Once this occurs, horizontal scaling takes place, expanding outward in order to maximize opportunities for growth. Most business, whether intentionally or inadvertently, favor diagonal scaling due to the increased opportunity.