Have you heard the one about 'Pets vs Cattle' in the cloud?
In our cloudy world, there are two dominant philosophies around IT operations and management, they can be confusing to get your head around, but the ‘Pets vs Cattle’ analogy is a great starting point.
A ‘cattle’ approach is the more cutting edge (for better or worse) operational model for IT Ops. Cattle typically leverage Cloudy IT, be it *aaS or on-prem to achieve burstable resources through horizontal scalability, and high availability through mass deployment of smaller, homogenous resource instances and shared storage. You’d better be using some kind of automated provisioning and management system to maintain health and homogeneity (Puppet and Hiera/Ansible/Salt, etc.) or you’re about to get buried under a landslide of issues. For extra points, add in some containerisation and talk about Infrastructure as Code…
The analogy for cattle goes like this:
You’ve got a herd of cattle. You care for them responsibly but the relationship is one founded on an agricultural reality. There are lots of them, they’re all broadly similar and you look after them on an at least partially industrialised basis. When one of them gets sick, you undertake a level of diagnostics (bring in the large animal vet) and, if they’re not trivially treatable, you put them down and get another.
It doesn't matter if you lose some cattle because you've got lots, and their loss is built into your model.
Systems go offline. Depressingly, everything in life has a MTTF (Mean Time To Failure). Whether through a deliberate action for maintenance purposes or because of an application or hardware issue, any given bit of business-supporting IT will not be there at some point. One could go so far as to say that, if a given box has never gone offline, it’s likely that its patch history is horribly out of date and it’s about to fail utterly.
You can’t have Netflixian chaos monkeys without a cattle approach to your infrastructure. When you are comfortable that portions of your infrastructure will go down and come up, perhaps even of their own accord, you can afford to have tools or people running around killing off processes or systems. If you’re operating on a pets model, that’s just called ‘unplanned downtime.’
Whilst OpenStack is perfectly capable of supporting other operation models including pets, it’s particularly suited to running lots and lots of cattle. The stable, open-source APIs allow for easy and often pre-existing integration with the majority of orchestration tools and components such as Heat and Ceilometer. Both of which are directly aimed at making the administration and operation of big, elastic infrastructure blobs easier.
The billing models normally associated with OpenStack IaaS, primarily on a utility ‘pay as you use’ basis similarly lend themselves towards cattle. ‘Few of my customers use my product at night, so let’s turn them off and stop paying when it’s dark,’ ‘Oh god, my user demand just doubled, I need more resources,’ etc.
The thing is, cattle are great if you’re operating on the scale of a large farm and your business needs mirror the benefits provided by that model, but what if you’re a smallholder or your revenue is provided by a small number of high-value assets? (Wool alpacas or a trained stunt dog, anyone?) What if your actually-quite-small-in-the-scale-of-things ultra-high performance, highly secured database really needs bucket-loads of IOPS instead of horizontal scalability? All that farmyard infrastructure is expensive and, to be honest, that kind of system isn’t designed to keep something critical healthy at all costs so much as just replace it without user downtime when it fails.
There are some serious overheads associated with operating elastically auto-scaling infrastructure. The change velocity can become crushing without investment in integrating complex auto-provisioning, configuration management and monitoring capabilities. None of these skills has conveniently available pools of hireable talent and they don’t come cheap. Even application development requires more discipline to maintain the service-oriented, loosely coupled horizontally scalable instances that are required (I’m no fan of lazy or monolithic application architecture, but there’s a reason that development efforts tend to start with that model without active efforts to the contrary. It’s easier and, within a certain scope, simpler).
If your business just needs a few boxes, perhaps with greater IOPS or CPU performance, operating in a generally sensible non-redundant fashion, don’t go cattle. Instead of the farm:
Buy pet insurance, pay a really good vet a retainer and make lots of preventive check-up visits. Your pet is important, its loss would really hurt, so love it and invest in its happiness specifically.
Arguably it’s a lot easier and more cost-effective to monitor, manage and secure a few beloved pets than a giant, shifting herd of cattle. It’s certainly a more familiar and established approach, so the off-the-shelf products and employee skills are readily available to support it.
Dedicated Servers, packed full of multi-core CPUs, lots of RAM and in-chassis SSDs are the obvious home for pets. They’re expensive per-unit, but you need a fraction of the units to support the right business cases. Similarly, IaaS products like our Cloud VPS (Virtual Private Server) offering with its suite of advanced monitoring, security and managed support services are ideally suited to a smaller number of higher value, higher performance instances that avoid the administrative difficulties of mass automation in favour of a more conventional, established approach.
We ourselves make extensive use of automation and centralised orchestration to manage our large number of Cloud hypervisors and the massively parallel innards of our OpenStack service, but we also make use of conventional techniques for our (suitably redundant) CMDBs, mail infrastructure and other such services. It’s not a case of better vs. worse, but more suitability for a demand.
The question is, which would you rather manage? ‘Pets or Cattle’? If you’re still unsure or have questions get in touch with our technical sales team on 0800 634 9270 or email us
Keep up to date with all the ‘Pets and Cattle’ news from Memset by signing up to our newsletter
blog comments powered by Disqus