Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

The Value of Systematic Approaches to Automation

DZone's Guide to

The Value of Systematic Approaches to Automation

We all know automation saves time for IT, but fully implemented automation leads to positive change for your whole system, not just a few people or processes.

· DevOps Zone
Free Resource

“Automated Testing: The Glue That Holds DevOps Together” to learn about the key role automated testing plays in a DevOps workflow, brought to you in partnership with Sauce Labs.

There is no doubt that automation is a widely used descriptor and often triggers some interesting conversations around what the goal of any automation is trying to achieve. Automation delivers the ability to remove repeatable and potentially mundane tasks from the day-to-day for an IT operator. The reality is that it stretches beyond that and this is why I want to explore the value of a systematic approach to automation and what it gives to more than just a single IT operator.

A rather important quote from the recently released Site Reliability Engineering helps to highlight this: “If a human operator needs to touch your system during normal operations, you have a bug.  The definition of normal changes as your systems grow.” – Carla Geisser, Google SRE.

Let’s look at how this maps to some specific value that we gain from automation.

Automation for One = Automation for All

The first thing that we know is that automation of any process has a primary benefactor. That single person that automates some task that they are doing on a regular or semi-regular basis will gain immediately from the benefits of bringing automation to that process. The real value for a single person is already significant, but it gets even better. Automating a task for a single person on a team of 10, for example, really means that we are automating that task for all 10 people.

The raw time recovery for a single person on the team is already profound. Let’s take an example of a single touch that is needed to trigger or react to an event that occurs once a day and requires around 5 minutes for each iteration. 5 minutes may seem long for a single touch, but there is prep time, confirmation time, and the static nature and requirement to stop other tasks to perform this manual process.

If the person who normally covers that process or task is unavailable, we have two problems. First, the task is not happening and the risk is increased because the process is effectively single-threaded because it doesn’t just require a human operator, but it requires a specific human operator. Secondly, even if the one person who takes the task on is consistently able to perform the task, it still needs it to happen in a timely fashion.

Systematic automation of these processes means that you remove the dependency on timing, and on the single operator to perform the tasks. That means you have given back the direct time to your operations person. Assuming it’s during business hours and weekday process, that translates to (5 minutes per day, 25 minutes per week, 22 hours per year. It is the same is having that single person take half of a week off per year. If you have a 10-person team, the value and time recovery is now multiplied by some factor because there will always be a downstream effect to other team members from manual processes.

Automation = Consistency

The truth is that time is paid back in another way by automation. Not only do you get the initial time back for removing the manual process or task, but you also remove the variances on the process that result in unaccounted technical debt that is incurred as results from the process also vary.

An automated system will produce the same results because the input, the process automation, and the output are consistent. Variances within that are only caused by the change in input or output.  Human interaction means that there is a consistent opportunity for variance throughout the process. If the input is fixed and the process is potentially variable, the opportunity for failure and downstream technical debt is high.

When mundane processes are automated, we can move our focus to measuring the consistency of the input. As we discover the measurable variances on the input into an automated process, we can simply adjust the process to handle the variances. This is the Theory of Constraints in action and will continue to derive positive results with every tuning and tweaking as we go. You can only move further in recovering value when you have systems that deliver consistency of the value you have gotten up to that point.

Automation = Audit-Friendly

Even if you aren’t into the full ITIL process, you should be ensuring that the tasks that your team is doing are able to be audited to correlate with events, outages, performance changes, and other important criteria. The ideal situation that we want is to tie the automation into some other system which is logging, auditing, or measuring the changes and processes to ensure that we can track and correlate changes.

There are a lot of ways to handle the centralization of audible event handling and process handling. Using a systematic approach to automation means that the focus moves from the process to the auditing system. Systems that feed systems further the consistency. Systems can be audited consistently. For those of you that have had to deal with IT audits, you will know the value of being able to point to a system of record to ensure an audit-friendly process means that it’s a nearly immediate checkbox. That leads to happy auditors, and a happy CIO and CISO.

In the next article, we will explore further into the value of a systematic approach to automation in the context of multi-platform environments.

Learn about the importance of automated testing as part of a healthy DevOps practice, brought to you in partnership with Sauce Labs.

Topics:
devops ,automation

Published at DZone with permission of Eric Wright, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}