The rate of DevOps adoption shows it’s becoming a preferred method for the continuous development, deployment, and improvement of software applications. One critical success factor is the use of automation in multiple areas including testing, deployment, and configuration management.
Still, legacy systems and processes — as well as attitudes! — can impede the effective deployment of wide-scale DevOps automation. That’s why DevOps is more than just a “method.” Instead, it requires a complete rethinking of company philosophy. Even then, employing automation as a fundamental principle is not as simple as “automate everything.”
What do you need to know when implementing DevOps automation? What are common pitfalls to avoid? The three strategies below will help streamline your automation initiatives and make them more productive in both the short and long term.
Benefits of DevOps Automation
DevOps fundamentals include cross-functional teams, continuous improvement, and increased collaboration. As opposed to a linear progression of software development from coding to release, DevOps uses a recursive workflow, so continuous improvement is possible.
A key element in this improved workflow is the use of automation across a wide range of activities and processes. There are three basic benefits:
Development and deployment time is reduced.Knowledge workers are freed up to concentrate on higher-order tasks.Large volumes of testing and other reporting data can be produced more quickly.
When DevOps elements are effectively integrated, there will be a greater return on investment (ROI): Product time to market will decrease while quality increases.
3 DevOps Automation Strategies
Still, a blind rush to “automate everything” should not be your goal. Instead, to ensure the effective application of automation from initial implementation to ongoing use, these operating principles will productively guide your efforts.
1. Systems Audit
First, you need to perform a systems audit to identify repetitive activities within the continuous improvement and continuous deployment (CI/CD) pipeline. These include builds, testing, configuration, deployment, operation, and monitoring.
More narrowly, tasks within the following categories are prime candidates for automation:
occur with medium to high frequencyrequire three or more people to complete manuallyuse time-sensitive stepsimpact multiple systemsmust have audit documentation for complianceresult in bottlenecks on an ongoing basis
A systems audit is key to determining where to implement automation, but it’s also important to identify which processes are less critical to automate. Sure, it may be attractive to develop an automated tool for every single task, but when doing so diverts resources from more essential areas, the end result won’t generate a positive ROI.
2. Cost-Benefit Analysis
Once you’ve identified the processes most likely to benefit from automation, the next step as per DevOps.com is to perform a cost-benefit analysis for each one. This will calculate the net benefit for the organization in hours saved per year:
Automation time overhead = initial development hours +ongoing maintenance hours per yearAutomation time savings = (hours to do task manually - hours to do task with automation) x number of times task is done per yearNet hours benefit per year = automation time savings - automation time overhead
Still, there are intangibles to keep in mind when generating these analyses. As Scrum.org CEO Dave West says: “When deciding on what to automate … it is important to balance flexibility with removing waste. Wasteful tasks should be automated, but only if the cost of that automation is not reduced agility. Sometimes flexibility is more important than efficiency.”
3. Continuous Improvement KPIs
DevOps automation is about both streamlining processes overall as well as addressing bottlenecks in particular. Still, no solution exists in a vacuum. Just as you want CI/CD for your software products, you must apply the same concept to your automated DevOps processes. After all, one seemingly minor change can have far-reaching consequences across multiple systems.
You use application performance management (APM) for your software products, and it’s equally important to continually monitor the key performance indicators (KPIs) of your automated DevOps processes. As noted above, calculating the cost-benefit ratio in hours saved per year will help prioritize which processes to automate. In addition, careful monitoring of applications will allow you to maximize resource allocation, focus on business performance goals, and control cloud sprawl.
Here are six operational KPIs to inform the continuous improvement of your DevOps automation:
Business disruption hours: This basic metric tracks how much downtime is experienced by customers and users in particular as well as the business overall. This includes both planned and unplanned disruptions — both performance slowdowns and complete outages — in one or more affected applications.Technical debt closed: This refers to reducing — or even eliminating — the negative feedback cycle of poorly written code leading to higher costs, reduced business responsiveness, lower revenue, and ultimately less money for future software development which circles back around to create even more poorly written code.Mean time to discovery (MTTD): The amount of time it takes after an issue occurs for a DevOps team to discover the source of the problem. This metric is critical to track the efficiency of both your overall incident management processes as well as the particular tools being used.Mean time to recovery (MTTR): The amount of time required to repair an inoperative system. Not only will this measure the time necessary to have a system back online, granular incident reports will help proactively anticipate future problems.Mean time to failure (MTTF): The amount of time system-critical components take to fail. Similar to MTTR, knowing the MTTF of mission-critical systems will also help reduce downtime by predicting future failures.Mean time between failures (MTBF): A reliability metric, this helps measure how long a critical component or system will be available, and once you have established baseline values, you can work to increase MTBF over time.
Taking the Next Step in DevOps Automation
This discussion of DevOps automation up to this point has focused on big picture strategies for successful implementation. After an initial systems audit, your next step is to examine the best available automation solutions for your specific needs including infrastructure as code (IaC), CI/CD, and monitoring.
DevOps allows you to work smart as well as hard. At the same time, thoughtful deployment and use of automation will allow you to reap all the benefits of DevOps without creating additional unnecessary work for your teams.