Cattle that fail, not pets that purr – the future of servers
Four paws bad! Time to break the emotional attachment
Microsoft, Amazon, Google, others all telling us to move server loads to the cloud. Most of us with on-premise servers haven't designed things in a cloud friendly way and - call us old sentimentalists - have heaped time, love and workloads on our tin.
Thus, today, we talk of such servers as “pets” while cloud providers talk of “cattle,” the great, unloved mass of machines, nameless and easily replaced in the event of loss.
Why, after years of work, would you send your pets to the cloud and suffer the potential accompanying grief of losing loved ones?
Here's one way it might go down:
Son: Daddy, where did Spot01 go?
Father: Son, he's gone to a better place, the cloud.
Son: Daddy, Will I ever see Spot01 again?
Father: Son, that's not how the cloud works. Spot01 is now mixing bytes with lots of other pets, but in a highly secure and encrypted fashion. You see, it's the economy of scale...
Son: Can we get another Spot then, Spot02?
Father: I don't think you're getting the concept here Son, we will never have a pet on premise again and that's my final word on it.
Fifteen years later, the son became a printer technician to spite his father.
Historically, servers have HAD to be pets. That's what made you a good sys admin. Knowing that Benji02 was the file server for the east cost of the US, and that if users in that area had a network disk space issue, you could react quickly by going to the right location on the right server and delete the Linux distros downloaded by the work experience kid, who was using his dad's login. Knowing your environment this way made you a digital ninja.
In the 1990s, it was commonplace for the single IT guy to name their servers after planets, or even characters of a TV show. Replacing BartSimpson for NedFlanders was a major event in itself.
Infrastructure resources were also very limited. Doubling the amount of servers you needed was often seen as an unnecessary expense, and if it was needed, only those systems deemed “business critical” by the high-ups had any sort of high availability infrastructure as part of the solution.
Thus, this has bred farms of servers all unique in many ways, each a pet being the sole performer of a particular task.
Why would you want to give up your pets?
Putting aside the cloud marketing that's been shoved down our throats, there's a lot of benefits that apply to both public and private cloud already widely debated and discussed. Let’s just take it as a given, as this particular point.
Rather, let’s talk “how”: the move to cloud can be approached in a few different ways. One option is to move all your VMs to an Infrastructure as a Service. In this scenario, you'll still have your pets - and you probably won't even need to learn any new names.
The two big players – Amazon Web Services and Microsoft Azure both have native and third-party methods of moving virtual machines. Although there will be caveats and gotchas at its most basic you’re only swapping out your tin hosting for someone else’s. Taking a bigger step into cloud cattle is going to require a much larger investment of time and resources – enough to make most techs shudder with fear. Beyond redesigning how everything is currently set up you’ll discover all the issues that have been swept under the rug – weird, undocumented solutions to problems you never even knew existed.
Simple things like moving a SQL database into an Azure PaaS instance might work technically but your third-party vendor of choice may require the use of some small utility that sits on the same box that hosts the SQL database. You might be able to hack your way around some issues, but expect the worst and be as thorough as possible to find these roadblocks early on.
These other approaches beyond lift and shift are where you no longer need to remember the names or faces of your creatures. Think of yourself as a rancher, overseeing your vast investment in the lucrative cow market. PaaS and SaaS are what you live by, where these services are not reliant on an operating system that you installed. There'll still be cases for IaaS, but designed in such a way that an outage should not occur. Randy Bias's blog covers the pets versus cattle analogy quite clearly. To quote part of the “Cattle?” explanation:
"Arrays of more than two servers, that are built using automated tools, and are designed for failure, where no one, two, or even three servers are irreplaceable."
Like a T-1000 unit, your systems need to be able to heal rapidly with little to no user impact. Netflix is a great example of the extreme a company can go to. Its Chaos Monkey goes around breaking stuff to prove that your self-healing design actually self-heals.
Tools now exist in the mainstream that make this self-healing easier to achieve - for example, Chef and PowerShell Desired State Configuration (DSC), which let you specify the exact configuration you require and are a key part of redesigning your pets to be cattle. Infrastructure as code is mostly self-documenting too, and much more fun to write than a 120-page Word document on how to create VMs in your environment. Without this self-healing, you’re going back to manual processes of repeatable tasks that have room for human error – the whole point of automation.
What all this comes down to is the two big technical benefits that cloud offers. Firstly, the elastic style of resourcing so you don’t have to worry about how much RAM to buy. A box will let you adjust your RAM requirements on the fly, or go up and down on demand. Servers, networking, firewalls and other infrastructure become almost pure software, where you won't need to worry about the cleaner pulling the plug to vacuum at night.
The second main benefit is really the crux of sending your pets to the cloud and forgetting their names: designing for a fully self-managed herd in day-to-day operations.
As ever in tech, though, there’s no ”one size fits all" option. The cloud provides a huge amount of benefits, but you’re working with someone else’s plan on how things should be done. That isn’t going to work for everyone in all scenarios, and cloud vendors have the ability to change services in a way that you may not like, and have no control over.
It might be that the cloud is a more stable platform than what you had before, but you're still stuck with old Fido who's 12 years old, has a bung leg and has the occasional fit. It's a good start though, and may still get you out of coughing up a briefcase full of unmarked bills for new servers, storage and related infrastructure.
The person who knows your environment best is you, so - at the end of the day - it may well be that you have pets and they need the kind of special love and attention that can’t be found in the greenest of cloudy fields. Those pets, though, will become rarer and rarer as the inevitable financial benefits that the scale of cloud provides makes for very inexpensive cattle. ?