The Value of Automation

I've been doing more and more work around automation, as have a lot of people in our industry.  But, why do we do it?  Many of the tasks that we automate are trivial, easy things that an administrator can do with very little thought, yet we still invest days, weeks or even months in creating automated systems to do those tasks instead.

Well, first lets look at why we automate those trivial tasks.  It turns out that very few tasks are actually trivial, we are just really good at glossing over details.  That's just part of being human and is how we manage to get by in the world.  Take an activity as simple as typing this blog post - trivial, right?  Just type some things into the interface. 

Well, discarding any difficulties in figuring out what to type, think of the pure mechanics of getting it into the interface.  Every character in this post corresponds with a keystroke on my keyboard (and, given how many typos I make and how often I change my mind about what I want to say, it probably represents several keystrokes).  Each one of those keystrokes involves me reaching out a finger to the correct spot on the keyboard, then contracting the correct muscles to depress that key, then move on to the next... and I do that in a fraction of a second.  It's fast and it doesn't take conscious effort, but that doesn't necessarily mean that it's actually simple.

IT work does that same thing.  We think of a simple task that requires almost no thought, like applying Windows updates to a VM template, but when you actually express that task in sufficient minutiae for a computer to do it (aka: automation), it turns out that there's a ton of stuff going into that simple process.  And, that's when leveraging a tool like VMware Orchestrator that is designed to interact with VMs and takes care of a lot of the minutiae automatically.  So, why do we automate the trivial?  Because even that stuff isn't so trivial as we might initially think it is, and because it's the low hanging fruit.

That opens up the bigger question: since it's so much work to automate a process, why automate things at all?  By my estimation, there are three major reasons to automate a process: time savings, error reduction, and time shifting.

Time savings is pretty self explanatory.  If it takes me 1 hour to do the task, but my automation system can do it in 15 supervised minutes, I have freed up 45 minutes of my day.  Of course, that time saving needs to be weighed against the amount of time that it takes to automate the process in the first place... but you get the idea.

Error reduction is one of my favorite reasons to automate a task.  Even if my automation efforts fall outside the "is it worth it" cells in that comic, it can still be well worth automating a highly repetitive task as a quality control measure.  If I need to make some easy configuration change to 50+ VMs, I am much more confident in a script's ability to go through and make that change accurately than I am in my own (aforementioned typo-ridden) keyboarding ability.  The thing about repetitive tasks is that they're boring, and it's very difficult for a person to focus on a boring activity for a long period of time.  When that person's focus slips (and it's definitely a "when"), that introduces the potential for errors, and those errors can create unexpected downtime, missed maintenance windows, and just extra work for everyone.

Time shifting is the third reason that I like automation, and I'll admit that I wasn't entirely sure what to call this one, so let's just look at that previous 1 hour task automated down to 15 minutes example again.  If it takes me 8 hours to write those scripts and I'm only ever going to run that process once, it doesn't make sense to automate it from a time savings perspective (I'm spending 8 hours to save 0.75 hours, which is a bad investment of time).  However, not all time is created equal.  If this process must be run at 1:00 AM, it very well could be worth spending 8 hours during the day (especially if those hours can be spread out to fill downtime over the course of a longer period) to get the automated version working.  Another situation would be where the customer is losing money during the maintenance window - in that situation, it's well worth spending some extra effort upfront, while the system is still fully functional, in order to minimize the duration of the actual maintenance window.  Those are examples of time shifting - we are using automation to shift the work effort for a process away from an undesirable time.

So, that's why I love automation.  When I can save time overall, that's great... but I think that the real benefits are far more profound than that.  Disagree with any of my points or have even better reasons to automate?  Let me know in the comments below!

Comments

Popular posts from this blog

PowerShell Sorting by Multiple Columns

Clone a Standard vSwitch from one ESXi Host to Another

Deleting Orphaned (AKA Zombie) VMDK Files