There is a false notion that spreads through the IT community that bigger is always better, but is that really true? Let’s address what horizontal and vertical scaling are, the pros and cons to both approaches, and then decide what is best for you.
- Vertical Scaling (Scale-up): Generally refers to adding more processors and RAM, buying a more expensive and robust server.
- Less power consumption than running multiple servers
- Cooling costs are less than scaling horizontally
- Generally less challenging to implement
- Less licensing costs
- (sometimes) uses less network hardware than scaling horizontally (this is a whole different topic that we can discuss later)
- PRICE, PRICE, PRICE
- Greater risk of hardware failure causing bigger outages
- generally severe vendor lock-in and limited upgradeability in the future
- Horizontal Scaling (Scale-out): Generally refers to adding more servers with less processors and RAM. This is usually cheaper overall and can literally scale infinitely (although we know that there are usually limits imposed by software or other attributes of an environment’s infrastructure)
- Much cheaper than scaling vertically
- Easier to run fault-tolerance
- Easy to upgrade
- More licensing fees
- Bigger footprint in the Data Center
- Higher utility cost (Electricity and cooling)
- Possible need for more networking equipment (switches/routers)
You all know that buying more robust systems can become exponentially expensive. When I was looking to build out my NAS I looked at the option of purchasing 4x 4TB Hard drives for a total of 12TB of usable disk space running Raid5. a 4TB WD Hard drive runs about $410 which comes out to roughly .10 cents/GB whereas a 2TB WD Hard drive runs roughly $110 which comes out to .055 cents/GB. The same ends up being true for servers when adding CPU’s and cores.
From a book I finished reading not too long ago “Scalability Rules: 50 Principles for Scaling Web Sites” (the principles still apply here) they state:
it’s an AKF Partners’ belief that scaling up is failing up. Eventually you will get to a point that either the cost becomes uneconomical or there is no bigger hardware made… a client who did have some ability to split their customer onto different systems but continued to scale up with their database hardware. They eventually topped out with six of the largest servers made by their preferred hardware vendor. Each of these systems cost more than $3 million, totalling nearly $20 million in hardware cost. Struggling to continue to scale as their customer demand increased, they undertook a project to horizontally scale.. They were able to replace each of those large servers with four much smaller servers costing $350,000 each. In the end they not only succeeded in continuing to scale for their customers but realized a savings of almost $10 million.
Obviously this is not always the case. There are legitimate reasons to scale up in an environment, however I am trying to point out that there is a better way of doing things.
When working with virtualization (specifically VMware) there is the added cost of licensing more hosts, and this should be taken into careful consideration as well.
IN SUMMARY – Whatever you feel is best for you and/or your company, weigh the pros and cons of scaling up vs. scaling out. You may surprise yourself at what you find.