Farmed, not Gardened

Cattle, not Pets

We give our a pets a name, an identity. If one gets sick, we bring it to the vet. We devote countless hours of one-on-one time to them. We form deep emotional bonds with them and some accompany us for decades. In a lifetime, we only take care of a few. If one dies, we are deeply affected. They are irreplacible. They sleep in our beds. They are family.

Historically, servers have been treated like pets. Hours of manual work is put into them, tweaking, customizing, updating, fixing things. They have a history, hold state, form an identity that is dependent on their past. No server is ever like the other even if we try hard to create a clone following step-by-step walkthroughs. We even give them names and write thick manuals containing instructions on how to treat them right. We know who knows them best, who we need to call at night if the manual is not enough to make things right again.

But we shouldn't treat our servers like pets! Even more so, our containers shouldn't be treated like pets. Containers don't have an identity, they are transient and their state is externalized. They are easily cloned using highly reproducible processes that aim to eliminate hysteresis effects. No tears are shed when a container shows symptoms of an illness. Instead, another one will be spun up to take its place. They are started and stopped at the discretion of unfeeling tools. The only proof they ever existed is found in distant log stashes. These unfeeling tools and processes are a necessity. They are required to assist us in handling many containers at scale. In a sea of containers, no individual container can be given considerable amounts of one-on-one time. No bonds can ever be formed. Containers are minions without souls.

In short, we should treat containers like cattle. Cows aren't raised for companionship but for food. They are kept in large groups and are managed as a cohort, not individually. They are bred following strategies optimized to obtain homogeneous groups of (almost?) clones. We give them care and attention to ensure their well-being. But their well-being is only a proxy for their productivity and our attention is constituted by automated management practices at scale instead of individual care. We don't call them by name but by number. We accept that they are replaced by a clone after they have lived their strictly controlled lifes.

Farmed, not gardened

Ok, so we should treat containers like cattle! But should be we treat cattle like cattle? I am not so sure. Some call the idea that cats and dogs are friends while cows and chickens are food speciesism. Whether an animal is food or not is an arbitrary human preference after all.

So how about a veggie alternative to cattle, not pets? I propose farmed, not gardened. Containers and servers should be farmed, not gardened!

Server farms have been a thing for ages (using Google Ngram I found the first usage of the term in 1978). But maybe our management of servers hasn't been true to the term up until the advent of containerization technology. Now it's finally time to stop gardening and start farming!

I am not a farmer but from personal experience I can confidently say that gardening and farming are two completely separate activities. Sure, both involve growing plants. But one is a hobby for personal enjoyment while the other is a profession that aims to produce food at scale. And yes, I feel emotionally attached to those carrots on my balcony that my kids and I have taken care of for months. They are so few, I might even give them names and grieve a little bit when it's time to cut them for a salad.

Maybe I should appreciate those carrots from a 99 cents per kg bag at Aldi the same way, but I don't. What I can appreciate, however, is the enormous amount of technology and automation required to make those 99 cents bags a reality. Heck, nowadays farming boasts deep learning and autonomous laser robots!

So for me, the analogy in farmed, not gardened still holds while being free of animal suffering. Happy farming!