Consider this scenario. You’re the founder of a web startup, and like most startups you begin with a low-spec server — maybe in your apartment or the prototypical garage as in the early days of Google, or perhaps you choose a frugally priced VPS or dedicated server. Your business slowly grows and traffic to the site increases. After a few months, your creaky old server can no longer cope with the load, so you lease a bigger dedicated server, and spend the considerable amount of time it takes to migrate your site. Another few months pass, and your business is becoming very successful. Again, you need to upgrade your server to a powerful dedicated machine, with all the pain and risk of downtime that server migration entails.
It’s a scenario that’s frequently repeated. For startups, what matters is that everything works now — the future will take care of itself. But, that’s a shortsighted perspective. Without planning for future growth from the start, a business is signing on for a world of pain as their business grows. When a business starts to become successful, the last thing founders want is to be left waiting for the moment when their server gives up the ghost — delaying the inevitable upgrade because they know how much effort and expense is involved in migrating servers. There are many such real life stories, with Twitter’s being the most famous — we all remember the “fail whale.”
The alternative is to scale horizontally. Rather than “leveling up” to new servers when the old one becomes insufficient — vertical scaling — a business plans their growth from the start and implements their infrastructure as a scalable cluster on relatively inexpensive hardware. As the business grows, instead of moving the whole system to a more powerful server, they simply add more of the same.
There are many benefits to horizontal scaling using clusters of moderately powered load balanced servers. The most obvious is that scaling is smooth rather than occurring in leaps. Businesses aren’t afraid to expand: they aren’t nervously waiting for the pain point where their technology is no longer sufficient to support their business goals.
Server clusters are also more easily managed to ensure there is sufficient redundancy to account for both traffic spikes and hardware failures. In a vertical scaling all-the-eggs-in-one-basket scenario, traffic spikes can kill a site. There’s a hard limit to the amount of traffic it can handle and once traffic exceeds that limit the only option is to migrate to a bigger server. Horizontally scaled server clusters don’t have this problem because it’s relatively easy to add new capacity.
Planning for scaling at the start of a new venture is as important as ensuring that a business has its taxes in order. It may not seem like a priority in the heady and exciting early days, when all thoughts are focused on creating a great product, but if it’s ignored, the consequences can be very unpleasant.