Originally published by New Context.
鈥
Pets vs. cattle is an analogy with modest beginnings that has grown into an industry staple. A simple Google search will spawn more than four million results and a myriad of developer memes. It鈥檚 important because of the way infrastructures have changed since the early days of the internet, and it encompasses the critical nature of automation, orchestration, and flexibility.
Putting the idea to practical use requires rethinking traditional infrastructures. Organizations need to eliminate their tendency to rely on one large, monolithic entity鈥攖his strategy forces technology leaders to go against their instincts, and culture often will act as one of the most significant barriers. However, if they can overcome that, they can enjoy the increased security and flexibility of modern infrastructures. Here鈥檚 how to put pets vs cattle to practical use.
Pets vs. Cattle is not the original analogy; the actual quote was 鈥渃attle, not pets.鈥 Microsoft Engineer Bill Baker used it during a discussion about SQL deployments to explain how server treatment changed over time. Management styles would depend on the grouping:
鈥
鈥
While the treatment of pets sounds more positive, it鈥檚 the cattle approach developers need to target. After all, cattle are essential; pets are less so. That鈥檚 not to say the cattle approach will work all the time. Not everything is disposable, and when an asset isn鈥檛, it requires pet treatment. The goal is to minimize the number of pets and maximize cattle to create an easy to protect and manage infrastructure.
We need to add another important analogy to the mix, and it involves chickens. In 2015, Bernard Golden used this concept to describe the containers necessary in such a flexible environment. Chickens, unlike cattle, are small and require little space. That means you can use a lot more of them while minimizing the resources they consume. On top of that, chickens have much shorter lives than cattle. Cluster (cattle) instances have lifespans of days. The longevity of containers (chickens) is measured in minutes.
There鈥檚 also a speed element involved. Physical servers take the longest amount of time to provision and configure, followed by VMs (with appropriate automation in place) and then Containers. The closer you move to a well-architected container model, the faster it is to remove and replace one of the components. All of this comes together with could-native providers to enable the organization to scale rapidly in both directions (up and down) to meet the demands of the consumer of the application.
Over time, other industry experts added their own entities to the cattle, not pets analogy. Insects may be used to refer to a serverless environment that makes use of ephemeral applications and services. Snowflakes was a term coined to describe highly delicate, detailed servers that developers try to avoid. All these additions serve a single purpose: to help developers put the analogy to practical use.
鈥
The practical application of pets vs. cattle centers on minimizing the systems which require individual attention. Automation is a crucial component, as the sheer number of cattle is unsustainable without it. Another is the deployment of an immutable infrastructure.
At first glance, the immutable infrastructure鈥攚hich cannot be changed鈥攕eems counterintuitive to the cattle approach. However, it鈥檚 immutable because the server is disposable. If there鈥檚 something wrong with it, it鈥檚 not reconfigured or patched. It鈥檚 replaced with a new server built from a standard image, with necessary changes incorporated.
Patches and updates are an unavoidable reality of operations at scale; they ensure the ongoing security and compliance of the infrastructure. Legacy operations apply these patches in-place, often in a non-consistent fashion, which can result in further issues. Immutable systems move this responsibility to the image creation process, and optimize for replacing the running image quickly, reducing the scope of change to a single, well developed and well tested image that can be deployed repeatedly, and often without interruption to ongoing operations. These systems also cut configuration drift cases, where changes aren鈥檛 mapped effectively, making reproduction into a backup or secondary source near impossible.
Infrastructure as code is a crucial component of building these immutable systems. Establishing the IaC code base ensures rapidly configured replacement servers. Accessible IaC repositories are essential. Users should be able to understand the code provisioning to troubleshoot problems and run applications. IaC also helps eliminate the need for extensive documentation. Changes are visible within the code itself. Excessive or dated documentation increases error risk, so this is a definite benefit.
Container orchestration is another vital component of the cattle environment, as microservice architectures require the deployment of granular level services. This process allows teams to automate tasks related to provisioning and deploying containers, allocating resources between them, and monitoring their health.
Essentially, the cattle philosophy minimizes changes to the configuration, breaks programs down to their smallest possible components, and leverages automation to control all these moving parts. The result is an infrastructure that is scalable, secure, and flexible.
Organizations shouldn鈥檛 eliminate pets in the pets vs cattle analogy entirely. Instead, they can be isolated to instances of absolute need. This strategy ensures administrators can concentrate their efforts on irreplaceable pets while taking a more turn-key approach to disposable assets. Working with a team of infrastructure experts who leverage decades of experience can help you keep your cattle grazing on green pastures.
听
听
Level up your Salesforce DevOps skills with our resource library.