Pete Cheslock

DevOps, RelEng, DevTools, Automation, Randomness

Don't Name Your Systems, You'll Get Attached

I grew up in Michigan. The city was like most mid-west cities, as you drove 20-30 minutes outside in any direction you would likely hit farmland. I had a few friends over the years that grew up on farms, or simply large plots of lands where they were able to keep animals like chickens, cows, goats, deer, etc… One of my friends learned at an early age to not name the animals. One day you’re playing with Butters the chicken, the next day…well, I’m sure you get the point.

Just the other day I was listening to the excellent FoodFightShow podcast talking about HPC computing and Chef. During the conversation, James Cuff, Anthony Goddard, and Brandon Burton talked about how you should treat your systems more like cattle than pets. This podcast came at a fantastic time as I had just had a similar conversation with a friend who works at a nameless large public company. He told me how he recently attended a multi-hour meeting where they were deciding the DNS naming convention for the servers. It was one of the few times in recent memory that I was completely speechless.

A properly deployed configuration management solution should allow you the ability to disconnect emotionally from your deployed systems. Your systems should represent a series of roles or tags that define what software packages or other configuration are needed. There should be no difference between “web01”, “web02”, and “web03”.

As an example - using chef you can run searches and connect to systems based on the roles or recipes applied.

1
2
3
4
knife status -r role:webserver
1 minute  ago, ubuntu.vagrant, 10.0.2.15, , role[webserver]., ubuntu 12.04.
14 minutes  ago, ubuntu1.vagrant, 10.0.2.16, , role[webserver]., ubuntu 12.04.
12 minutes  ago, ubuntu2.vagrant, 10.0.2.17, , role[webserver]., ubuntu 12.04.

Configuration management has allowed us to move away from the world of building bespoke systems. Having multi-hour meetings to determine what to call the systems are a thing of the past. And in the current economic climate, most tech companies are understaffed and looking to add more resources to their already constrained teams. Why are you wasting your time on trivial issues? The theory of constraints teaches us that any time saved at a non-bottleneck is a mirage. The reverse is equally true, time wasted at the bottleneck essentially shuts down your entire organization. The ability for your company to be a success and win against your competitors can come down to your ability to move fast. As you and your teams decide how to best define the DNS names for your servers, your competition is pulling into the distance.

This is a rant, pure and simple. Name your systems whatever works best for you. Everyone has different requirement and needs. Remove the emotional relationship with your systems by working towards a point where you can nuke and replace your systems in the most automated and easiest way possible. Losing and replacing or rebuilding systems should be a trivial task for any member of your team