“Old MacDonald had a server farm…I/O I/O I/O.”
Quick. Please save me from spending any more time rewriting this song.
You remember how the nursery rhyme goes. Perhaps it's time for an updated version - one we can start teaching the future leaders of IT. Well, unless we can get the syllables to match up with the original this probably won't come into existence - but don't get too upset, the jingle still makes for a good analogy that Duncan Epping reminded me of last week on his blog. He resurfaced an idea that’s been around for a while now in regards to the types of applications that live in your datacenter – Pets vs. Cattle. If you’re not too familiar with the terminology, Massimo has a quick read from a few years back that sheds some light on the differences.
To summarize, you care and love for your pets. You give them names, you give them a pretty collar, and you take them to the vet. Cattle are branded, given a number, and if one runs away you simply go and buy another one…and don’t worry about putting up “Missing Cow” posters in your neighborhood.
“...and on that farm he had a _______”
Insert any application above. Do you treat it like a pet or more like cattle? If we go through the whole song listing different apps (skipping over the noises they make of course), I’m sure we’ll come up with many examples of both. From an architecture standpoint, Duncan makes a fantastic point: pets and cattle can all co-exist on the same infrastructure – and that’s the “true strength of virtualization.”
He’s totally right. The hurdle that still exists today is our tendency to silo our environment based on types of applications. Virtualization is great. But virtualization with more and more constraints is totally counterintuitive. And when you cut to the core of it, the real reason we started adding these constraints is because we needed some way of applying some sort of quasi-control. We think of silos leading to guaranteed performance. But that’s not even guaranteed, and you lose out on the big picture goals of hardware efficiency, scalability, and operational efficiency (since operators are required to remember how to treat each silo uniquely). So how do you actually move forward with instrumenting an environment where your applications can live freely?
In order to have the ideal “farm” where your pets and cattle all live in harmony, you need a dedicated ranch hand - your own vCowboy or vCowgirl that is always around to care for your pets and cattle knowing that they will have different resource demands. Your vCowboy makes sure your pets aren’t being affected by your cattle and vice versa. At the end of the day, as long as your pets and cattle are getting the resources they need when they need them, then who cares where they live?! You can now get the most out of your farm – no longer having to create boundaries between your pets and cattle.
The only real problem you have now is finding a ranch hand that’s capable of doing all this. Bringing our analogy back to the datacenter, it is impossible for anyone to constantly be reviewing the demands of all your workloads (pets and cattle) and continuously make the correct resource management decisions to keep them all healthy. Or can software handle this for us?