What is “scaling” up vs. “scaling out?”
Scaling up and scaling out are terms that refer to methodology of design for hosted private cloud environments.
According to Techopedia, the term “scaling up” means buying and implementing better hardware that is more capable of accommodating demands that the current server cannot efficiently handle — usually by investing in a server that has greater RAM and processing capacity.
“Scaling out” is the use of multiple lower-performing machines to execute the output equivalent to that of a single, high-performing machine. This approach makes processing a more demanding workload easier because data is dispersed through disparate system trajectories.
Basically, when you’re designing an application to support a workload, there are two processes that you’ll go through.
First, when building a footprint to support a specific workload, there’s an optimal configuration for a server to do the job it’s been assigned — so, that configuration is the resources allocated to the VM and the processing and compute resources allocated to the Virtual Machine (VM) in order to carry out a specific task. That is the vertical assignment of resources, hence, “scaling up.”
Second, as your workload grows and extends beyond what a single server can accomplish effectively, you can add another server to grow out horizontally — this is where “scaling out” applies. Virtualization and cloud applications practice scaling out routinely. An organization making the use of the cloud might have a small vertical assignment for their optimum footprint, and add additional compute nodes as demand on the application increases. When the same demand decreases, the systems can be shut down.
This is what cloud has really brought to the table, and where the concept of elasticity was born. When demand is growing, five servers can be easily added; if the demand is temporary, five servers can just as easily be taken away. From a cloud perspective, this is the line of thinking supporting the “scale out” architecture.
Today, IT is a maturing process. Where there are workloads that you want to take advantage of, the cloud provides a certain amount of protection, given the fact that you can migrate your virtual server from one host to another in the event of a problem. Optimizing the utilization of hardware is useful for applications designed to grow vertically, instead of horizontally. Multi-tenant environments are designed from an infrastructure perspective to support growth on the horizontal, not the vertical.
Here’s a point-by-point example:
You can only allocate resources on a VM that fit within the physical host that that VM is running from.
If you have a host that has 256GB of RAM on it, and you’re trying to put 1TB of RAM VM on that host, it is not going to perform well, and it will be the only VM on the host since it has consumed all of the compute resources that were available for that host.
Here’s where the hosted private cloud, for example, can bring in additional flexibility to allow you to plan for that. You can have some blades that are designed for growth on the horizontal, and other blades that are designed for growth on the vertical.
There are Use Cases for Both
Scaling up and scaling out both have legitimate use cases; one is not necessarily better than the other.
Consider the following: in today’s world, there’s pretty much an app for everything. But not all applications perform the same task, or behave the same way; some applications are better for certain tasks than others. For instance, in theory, you can use a calendar app for a diet plan, to control and track what food you eat, but that’s not really the best app to meet that need.
Infrastructure is the same way. When you think about hosted private cloud, it’s the flexibility and design of the infrastructure that supports the virtualized environment. At its core, that is where the difference is.
Some applications benefit from the horizontal design, which are typical web applications. Web applications are servicing sections; they’re not so much concerned about the experience.
Same thing from a data analytics application standpoint. A data analytics application inherently needs more resources. Yet, it’s not talking to millions of people, it’s talking to 10 or 15 servers. So, the quality of the experience that all of those servers will have together is treated differently than web servers who are talking to millions of people.
There Is No One-Size-Fits-All
The biggest misconception around scaling up vs. out is the idea that there’s a one-size-fits-all solutions approach. Unfortunately, you can’t solve all problems with one type of product, and this is where a lot of organizations get confused around what hosted private cloud environments can offer.
Some IT departments may think a hosted private cloud is the ideal environment (and it may be), but don’t necessary know what the actual workload is, which is critical to designing the right setup — it’s critical to understand that the process extends beyond reviewing a simple list of VMs. A VM in environment “A” will not necessarily operate the same way as it does in your own environment. You must design the environment itself to support the specific workload.