What Do Ghosts, Cattle, and Pets Have to Do with Modern Engineering?
In the late 90’s and early 2000’s I worked as a desktop support technician. I’d take dispatches from the help desk on my pager and fix computer issues. Ghost was a ubiquitous tool in those days for re-imaging a computer back to the standard gold image. Ghost wasn’t just a product. It became a verb.
I distinctly recall that there were two types of desktop support technicians:
- The Troublehooter: This person would work extensively to figure out the root cause of the problem, and resolve the issue, no matter how long it took. This person would research and experiment until it was fixed.
- The Ghoster: This person’s troubleshooting repertoire consisted of one action: Ghost it. Printer issues? Ghost it. Can’t get to the internet? Ghost it. Virus? Ghost it. Blue Screen? Definitely ghost it. Still doesn’t work after I ghosted it? Better ghost it again!
I was the first type. Ghosting it felt like giving up. I didn’t want to be bested by anything. Ghosting was an absolute last resort.
The ghoster didn’t invest any time in the troubleshooting process. Sure, they got the user back up and running quickly, but there was usually a nasty side effect of lost data and personalization. Oh well, if that’s the case, then it serves the user right for not saving their stuff on the server.
Now that our trip down memory lane is complete, let’s fast forward to present day.
In DevOps and Cloud Computing there is a new ubiquitous concept out there: treating servers as cattle instead of pets. This concept is just as common today as ghost was in 2001. For those of you that aren’t familiar with it, I’ll give you a brief overview.
- Pre-DevOps/Cloud we treated our servers like pets. We named them. If they got sick, we nursed them back to health. If one of them died, it was a tragic event.
- Post-DevOps/Cloud we treat our servers like cattle. We number them. If one gets sick, we take it out back and shoot it. Then we get another one to take its place.
This is the quick version of cattle vs. pets. If you’d like a more thorough explanation, read this.
An interesting reversal
As you can tell, I had a negative attitude toward the “just ghost it” style of troubleshooting, but I must admit that this method is pretty much exactly how modern server farms are managed today. This is absolutely necessary to embrace DevOps and Cloud Computing.
There is a change of focus that is needed. The running server node has very little value and it should have no unique qualities. What is valuable is the configuration. The configuration is managed as code and continuously enforced on the running server nodes.
Redirected engineering
How does an engineer live in a ghost world? We no longer need skilled engineers to hand-build application servers and carefully troubleshoot them if they degrade. We do need plenty of skilled engineers that can build systems that deploy, scale, and heal automatically. Those systems are really difficult to design. It takes a lot of talent and persistence. It takes someone with the tenacity to stay with problems for a long time, and not just give up the ghost and go back to the manual way of doing things.
It’s interesting. The automated re-image used to be the easy way out. Now, doing things manually is the easy way out. It takes a lot longer to automate something than just doing it the old way, if you are only counting that one time. The return on investment is huge over time, but you have to expend the effort to get the flywheel turning before you can reinvest those savings.
Have you made the leap in your engineering practices? Perhaps a throwback to the ghost days is just what you needed to rethink your current approach.