How to Conquer Growth and Lower Costs with Scalability
13 Apr, 16 | illumisoftadmin
Simply put, Scalability is the ability of your software to grow to match the demand of your users.
There are two models of Scalability available: Scaling Up (Vertical) and Scaling Out (Horizontal). Each model addresses different scenarios depending on the type of business, and both models can be used together when necessary.
Scaling Up (Vertical)
Scaling Up, or Vertical Scaling, is accomplished by using a faster machine. An example of Vertical Scaling would be if an automobile factory has difficulty meeting their production quotas, then they may choose to speed up their production lines.
However, to be able to keep speeding up the production lines, the slowest machine in the line would need to be replaced with something more powerful. The number of automobiles produced would certainly be increased, but the manufacturer would also increasingly face diminishing returns as the cost of more powerful machinery continues to grow.
Diminishing returns is often a problem faced by Vertical Scaling as the cost of top of the line machines tends to grow exponentially, and the same is true for computer hardware as well.
Scaling Out (Horizontal)
Scaling Out, or Horizontal Scaling, is accomplished by adding more machines to the system. Keeping with the automobile factory example, the manufacturer could Scale Horizontally by adding another production line, and adding another line entirely using standard machinery would likely be cheaper than it would be to double the speed of the existing lines with more powerful machinery.
The most common problem faced by Horizontal Scaling, however, is that it is often very difficult to break complex problems down in such a way that Horizontal Scaling is effective.
A long running joke in the software world is, “No matter how many moms you have, a baby still takes 9 months.”
When to Scale Up and When to Scale Out
Generally speaking, there are two types of problems that exist for businesses. The first type of problem is larger, more complex problems that cannot easily be broken down. The other type of problem is smaller, more simple problems that are easily broken down.
The goal of Scalability is to maximize throughput while minimizing latency and, perhaps most importantly, cost.
Therefore, Vertical Scaling is typically the chosen candidate for the larger, more complex problems. Choosing Horizontal Scaling for these types of problems, while effective in maximizing throughput and minimizing cost, may not adequately minimize latency and could cause the system to feel slow, sluggish, and frustrating for its users.
Contrarily, Horizontal Scaling is typically the chosen candidate for smaller, more simple problems. Choosing Vertical Scaling for these types of problems, while accomplishing comparable throughput and latency, may prove to be more expensive than necessary.
That being said, most modern systems employ both Vertical and Horizontal Scalability models to ensure their users’ experience is the best that it can be and knowing when to employ which model makes a meaningful impact to the business’s bottom line.
Scalability and the Cloud
The most common perspective of Scalability is ensuring that your software can continue to service the needs of your users in a timely fashion as the number of users in the system continues to grow. In a traditional data center, this is accomplished by purchasing enough computational power to handle the worst possible scenario that the system is expected to encounter and can be a very expensive endeavor.
In the Cloud, however, computational power is provided as a service and any software that can be effectively scaled in a data center can also be scaled in the Cloud. The desired Scaling model is configured by an administrator and the system is continuously monitored for load and automatically scaled appropriately.
This automatic Scaling aspect of the Cloud introduces another perspective to the problem of Scalability. When the system is not running at peak load the Cloud has the ability to Scale Down or Scale In, or shrink, as is appropriate and empowers businesses to not only meet the endlessly growing demands of their customers, but to also maximize profits through cost savings in their IT infrastructure.