Does anyone remember 15 years ago when the dot-com boom was just starting? A lot of companies were running on Sun. Sun was the best hardware you could buy for the price. It was reliable and a lot of engineers had experience with the operating system, SunOS a flavor of Unix.
Yet suddenly companies were switching to cheap crappy hardware. The stuff failed more often, had lower quality control, and cheaper & slower buses. Despite all of that, cutting edge firms & startups were moving to commodity hardware in droves. Why was this?
As more companies adopted commodity hardware and Linux, larger firms began to consider the combination too. After all, all these success stories couldn't be wrong.
Fast forward to the present and we see a very similar pattern. Everyone is moving to a crappy platform, aka the cloud. Virtualization means I can't guarantee CPU power, it means my disk I/O experiences variability that I don't like. My applications don't like it, my operations team doesn't like it. My performance team complains.
Where's the pressure coming from? There is debate between operational expenses versus capital expenses, sure. But in the end the advantages remain large:
- Zero Up Front Costs
- Instant Compute Resources - only an API call away
- Easily Scale Vertically & Horizontally
- Free Disaster Recovery - encapsulated into an infrastructure script
I would argue that the cloud will also push adoption of infrastructure automation and infrastructure as code as well. This will push tools and technologies such as Puppet, cfengine and Chef for configuration management & cloud provisioning. These tools although a paradigm shift for systems administrators who are used to doing things manually, bring a new level of quality control and best practices to web operations. It parallels the shift in software development to using version control, considered now to be an essential component of any professional software project.
It's so good that creative firms and technologists are spending time figuring out how to mitigate against the limitations of cloud infrastructure and virtualization:
- variable disk I/O
- variable CPU performance
- higher failure rate
- security challenges
- privacy concerns