Automate everything!

What to Automate?

In a previous blog I discussed the reasons for automating IT infra. I can see how one could think that I am in favor of automating everything, just because that makes life better, saves money and avoids errors. But as with everything in life there has to be a balance between robots and humans. So in this post we’ll dive into the question “What to automate?”. Would you get on a plane without a pilot? Writing these blogs about automation made me think about something Jeremy Clarkson said in a Top gear episode a few years back. They were discussing the fact that most accidents were caused by human error. This is true for car accidents as well as for plane crashes. So in theory we would be safer when computers are driving or flying our means of transportation. So the all important question Jeremy asked: Would you get on a plane without a pilot? I’m sure I am not the only one who wouldn’t do that. I know a plane is perfectly able to fly itself but still I won’t get on a plane without a flesh and blood pilot on board. Why? Because I want a human to be there who can take control in case a situation arises the computer was not programmed to handle. Or when the computer fails. And being an IT guy I know one thing: computers fail all the time. And that’s mainly because they are programmed by humans. Would you use a IT infra without a pilot? I think the same is true when it comes to automating IT operations. You want to have some kind of autopilot which flies your IT so you can run a lot of “IT stuff” with just a few people. The IT operators are just checking if the autopilot is still functioning correctly, checking in with airtrafficcontrol, aka the business, to see if they need to change course. When something fails they take control of the aircraft and guide it safely to a stable situation. What do we automate? So we established that we still need human beings to manage and operate our IT infrastructure. So what exactly do we automate and what do we not automate. I think at first this simply comes down to cold hard cash. The math is simple. If: (Hours spend on task) * (Number of times task executed) * (your hourly rate) Is higher than: (hours spend on automating the task) * (hourly rate of the guy automating the task) than you should automate the task. In other words, if it’s cheaper to automate it instead of doing a task manually then automate it. I think that is the right starting point because it saves money and time. That time is then available to automate more tasks. As you start doing this you will notice that it’s not about automating tasks but about automating processes. Let me give you an example to illustrate this. You might want to automate the deployment of new virtual machines. It saves a lot of time when you can just kick off a workflow that deploys a template, puts the VM in the right DRS group and powers it on. But it would be a shame to stop there. Because the deployment of a new VM is probably part of a much larger process. That process may start with the need of the business for a new application. They request the machine, someone approves it. Then a hostname is choosen, an IP is assigned, a datacenter is selected and finally the machine will be deployed. After some time the machine is scaled up with two more CPU and finally when it is no longer needed it is destroyed, the IP is released back into the pool, the hostname is made available and so on. I think you are getting my point by now: Do not just automate en single task. When you’re at it, try to automate the whole process. So as to answer the question “What to automate” the answer is “IT Operations Processes”.