This post has been contributed by Graeme Caldwell — Graeme works as an inbound marketer for InterWorx, a revolutionary web hosting control panel for hosts who need scalability and reliability.
When businesses are planning their infrastructure deployment strategy, there are a couple of high level ways they can think about preparing for future expansion.
Vertical scaling is the addition of extra resources to the servers in a network. For example, perhaps a business runs up against storage capacity limits, so they choose to add extra or larger hard drives to their existing servers.
Vertical scaling is the old fashioned approach, and it tends to be significantly more expensive than the horizontal scaling we’re going to look at below. If a company expects to be vertically scaling their existing hardware, then that hardware has to be built with the possibility in mind. It has to have excess capacity, extra drive bays, and so on, that will end up sitting idle until the moment of expansion comes. Such hardware tends to be significantly more expensive than commodity hardware: hardware prices don’t scale linearly.
Each node in the system contains progressively more value as it scales vertically. This can be undesirable for a number of reasons. It’s generally better to spread the cost of infrastructure across many inexpensive and relatively disposable nodes than concentrate it in a few very high value components. Single or few points of failure are best avoided.
Vertical scaling is also fairly inefficient when it comes to resource reallocation. Because servers tend to be dedicated to particular tasks, it can be hard to reallocate the spare resources of a server to other, more pressing tasks. That’s why virtualization has become so popular.
Horizontal scaling, on the other hand, involves adding more nodes to the system as it scales, rather than beefing up the existing nodes. This is by far the most popular scaling strategy in modern times.
Google, Facebook, and other huge enterprises rely on using many nodes of relatively inexpensive commodity-class hardware, which they can add to and retask as the need arises. Because horizontal scaling is the growth method of choice for very large Internet enterprises, software has been developed that makes distributing file serving, databases, and virtualization across an expanding pool of nodes practical. For example, Google’s Spanner is a distributed database that is designed to scale at globally. The increasingly popular Hadoop software framework has horizontal scaling as a key design principle.
For a small business considering how they should organise their infrastructure, going the way of vertical scaling is inadvisable. Using a cluster of less powerful, easily replaceable, and inexpensive machines can be far more cost effective.
Businesses that choose not to think about scaling horizontally at the initial stages of their infrastructure planning frequently encounter problems when their business begins to grow.
When Pinboard, the bookmarking service, originally launched, it used a couple of large servers to do everything. Those servers adequately handled the load in the initial stages of the business, but when they had a huge influx of new traffic because of a lack of confidence in their competitor, their servers were unable to cope, new customers had a poor experience, and they had no room to grow. Had they originally launched with a scalable cluster infrastructure, the expansion could have been easily –– or more easily –– handled with the addition of extra nodes.
The cost of horizontal expansion is one of complexity and the necessity for increased management of the connections between the individual nodes. However, much of that added complexity overhead can be mitigated with the use of software solutions that are specifically designed to leverage the benefits of horizontal scale, while also simplifying and abstracting some of the complexity without limiting the amount of control a system administrator has over individual machines.