Cloud Deployment Debate: Bake Or Bootstrap?

Several months ago, I said that Netflix’s push to drive the adoption of its open-source cloud-management toolkit, NetflixOSS, had the aptitude to “ruin cloud computing.”

Portion of my argument revolved across the Netflix Aminator tool, which facilitates the creation of Amazon Machine Images (AMIs). While Aminator could be a good selection for Netflix, I argued that it encourages precisely the wrong habits for almost all of businesses attempting to deploy applications within the cloud. After many long discussions about that initial article, i feel there’s still significant confusion about how one should best use AMIs (or the equivalent from other public cloud providers), and so i’m dedicating this column to what I call “the baking debate.”


Webcasts

More >>

White Papers

More >>

Reports

More >>

Let’s start with some background: Anyone who desires to use a public infrastructure-as-a-service (IaaS) provider like Amazon Web Services (AWS) should use machine images. These machine images are what they sound like — a picture of a virtual server you could launch, and once that is active (within minutes), it is your server to take advantage of as you want. The machine image has, at a minimum, an operating system on it, however it may have as much other stuff as that you must cram in. Most IaaS providers make it easy to launch one machine image, make changes to the picture (like installing and configuring software), after which “save” the resulting machine as a brand new image. The “baking debate” revolves around the way you should use machine images. Essentially, wrong choices will bite you down the street.

[ Make no mistake: Your Cloud Provider Isn’t the Boss. ]

There are three positions during this debate: the “bootstrappers,” who specialise in having the ability to orchestrate the creation and management of servers throughout their lifecycles; the “bakers,” who concentrate on building machine images for speed and consistency; and the “babes within the woods,” usually developers who’ve found that building machine images is a short-and-dirty method to construct backups of servers that may then be cloned and replicated.

Bootstrappers want to use a small choice of machine images — core, base operating system images which are fairly easy to set up across multiple IaaS providers. Then, after launching the bottom image, they run configuration management/orchestration software (like Puppet or Chef) to instantiate the total server environment — installing and configuring software, installation connections to other servers, even restoring data from a backup and establishing replication between database servers.

Then, an analogous orchestration software can be utilized to change already-running instances; as an instance, by rolling out software updates (take a server out of the weight balancer, update code/software/configuration, run the test suite and, if it passes, add it back to the burden balancer).

Within the view of the Bootstrapper, every instance is versatile and dynamic, and machine images are frequently taken directly from experts (read: the IaaS provider).

Bakers desire to make their very own machine images in order that they would not have to accommodate installs or configuration after launch. Configuration management is a part of the picture-baking process. Running instances are perfect copies of machine images; whenever bakers have the desire to make changes to these instances, they make new machine images, launch new instances and kill off the instances running the old image.

Babes within the woods are on one other planet entirely. They do not read much documentation, preferring to leap headfirst into the cloud without understanding exactly what configuration management is or the way it works. They pick a machine image at random, start manually installing and configuring software and loading data onto it, and discover that baking images feels like if you want to back up their servers. This works well — until they must install a new version of a core piece of software or the underlying operating system, or relaunch a complete deployment with data spread across multiple resources … you get the theory. At that time, the poor babes find themselves having to reinvent the wheel, usually without the posh of getting saved any documentation. They could find some solace in thinking themselves bakers. They’re wrong.

So, accepting that, the question is that this: Is it better for many cloud deployments to be bootstrapped or baked?