Scale-up vs. Scale-out

We’ve seen many changes over the years in the way that computers, computing power and the effects of the internet have changed the way that we do business and as a result build and scale computer systems infrastructure.  Going from large specialty machines in small quantities (scale-up) to using commodity computer equipment in large numbers (scale-out) has changed the way that companies are operating their businesses today.  It is now easier and quicker than ever for a 2-person startup to build a web-based business with little to no risk in capital and without the burden of burning hours or hiring additional manpower to focus on tasks that are not relevant to the intricacies, needs or interests of a new business.  Cloud-based services, virtualization and the move away from enterprise-grade computing equipment have made that possible and have allowed businesses to focus on what they do best.  They can spend more energy on making an idea a reality instead of worrying about how many cables they need to order.

The old school of thought was that if you wanted a computer to do a lot of work you had to acquire a machine with a very powerful CPU, with a lot of memory, with lots of storage and very fast i/o.  You also had to make sure that this system was upgradeable so that if the volume of work increased, the system would be able to scale-up to handle the additional work.  When the capacity of that system had been reached, you had to replace it with the latest (and sometimes untested) technology with similar upgradeable characteristics as its predecessor.  In addition, you had to have at least another one or more of these devices if you wanted uninterrupted service and high availability.

Google was a pioneer in utilizing commodity hardware to do the job that the aforementioned systems once did.  Instead of relying on very expensive upgradeable specialty hardware and building in expensive redundancy into every aspect of the infrastructure, why not rely on a lot of cheap machinery that was easily attainable and replaceable and when used in large numbers could just as effectively do the job?  For that matter, why even put in graphics cards and other peripheral devices that only add cost to these “disposable” resources?  Using only what you really needed and only replacing systems as they died or became obsolete was a paradigm shift.  Of course there were debates as to whether or not these systems could be relied upon.  In the end, more and more businesses began to realize that this model really made sense.

Efficiencies from parallelization and reduction of bottlenecks allow for more work to get done and with reduced risk of failure in a scale-out solution.   In a scale-up environment if a machine were to die, it would be very costly to repair or replace it.  It’s not an easy task to upgrade a large piece of equipment when there isn’t much redundancy built into the infrastructure and very costly to build in that redundancy in the first place.  During an upgrade, in most cases machinery would have to come off line.  At times tradeoff between availability and the cost of doing business had to be made.

Today you can actually lease computing power short or long term or pay as you use.  Similar to the car leasing/rental industry, there are many different offerings.  You can lease a car long-term or rent one for a single or few days.  Zipcar has taken it one step further and lets you rent it just when you need it.  Just like the car rental business has been changed by Zipcar so has the computing industry with companies like Amazon, Microsoft, Google and IBM.  Interestingly, all of these businesses started from very differing positions but soon converged on the same underlying theme.  In some cases, just offering and extending the very same infrastructure that was used to build their own businesses and in other cases offering services that were diametrically opposed to their original business models, they all seem to agree that the distributed computing model is here to stay.  The prevalence of online advertising, streaming video and content-heavy and free services necessitated a change in the way that these systems evolved.  It seems that many businesses are moving in the direction of thinking of computing resources as a utility.  It’s much easier to plug into a grid than it is to generate your own power.  Public cloud infrastructure offerings have become mainstream.

There are now technologies that allow you to combine a public cloud offering with a private cloud offering depending on how much control you want over your infrastructure.  You can also go it alone using the same technologies to offer you complete control.  Obviously having to staff up to build out your own data center may outweigh the benefits of maintaining that control.  The fact that you have this kind of flexibility makes it a business decision.

Now that the industry has established that the scale-out solution is a solid foundation to build upon, there are companies specializing in ways to make managing software on those platforms more efficient.  Beyond virtualization and utilizing only what you need, solutions are moving even further up the stack and beyond physical hardware allowing spanning of a software application across multiple machines.  It will be interesting to see how things will evolve over time in this space.

In summary, there are many choices available to build and scale a business today and many factors need to be considered before deciding upon the ultimate strategy.  That said, it’s very easy to start out in the cloud and you can always transition over to a platform and strategy that will ultimately work for you with the many tools and technologies available to make that transition easy.