How DevOps Activities Support Business Continuity
This article serves as a discussion of how suggested DevOps activities to accelerate software release activities can also enable improved business continuity — also included is a list of key performance indicators that can be used to assess the impact of DevOps practices to improving business continuity.
Many organizations pursue DevOps seeking to accelerate software release activities. DevOps accelerates software releases by improving the alignment of people and processes and creating automation to reduce variability and human errors when releasing software. Hence while these activities enable faster software releases, adopting DevOps also improves overall business continuity by enabling the following outcomes.
Understanding what activities and dependencies are essential
It is a best practice to begin a DevOps strategy by completing a value stream mapping exercise. Once mapped, the value stream serves as the source of truth regarding essential activities required to release software. Without such clarity, software release activities are often slowed due to the need to coordinate with processes and/or people that are not essential to the release process.
A value stream map allows an organization to align on what activities are essential to release software by only focusing on those activities that provide value. Understanding essential dependencies provides critical information for an organization to sustain business activities — even without developing any DevOps automation or setting up common deployment pipelines and platforms, an organization can use this valuable information refine runbooks to reflect only the essential activities necessary to release software, limiting runbooks to only the essential activities that provide value reduces time and effort.
Automating to reduce the risk of human error
Once an organization has achieved clarity on the essential activities necessary to release software, these activities inform the specific pipeline or platform automation that needs to be developed to first reduce and then eliminate manual activities necessary to release software. Full automation sustains business continuity by ensuring that an organization can update software without the need to rely on any specific person to complete a task.
With full automation, there is no need to call in a specific engineer or developer from vacation to access tribal knowledge necessary to push to production. Full automation improves upon having accurate runbooks by eliminating the risk of human error when manually executing runbook commands. It is also common that end-to-end automation reduces execution time and wait states as release activities are handed off between multiple people.
An added benefit of building pipeline and platform automation is that many of the technologies used to automate pipelines and platforms also support reverting changes that do not go as planned — hence the same automation to perform a new release can also be used to quickly revert if a release does not goes as planned.
Enabling anytime, anywhere software releases
Enabling pipeline and platform automation allows organizations to have more flexibility with how and when they perform software updates. Pipeline and platform automation can eliminate the need for engineers to have access to a specific facility to perform a software release.
A best practice is that after successful testing, developers push or tag a software release in their repository which then triggers an automated deployment to run. Deploying to standard platforms or containers reduces or can eliminate the need for downtime when performing a software update — this enables business continuity by reducing the downtime to the system’s end users. Eliminating all downtime requires a compatible systems architecture that properly manages application state and data persistence; however, it is common that some pipeline or platform automation does reduce downtime in legacy systems whose architecture cannot support a full zero-downtime model.
Recall this same automation that reduces downtime also reduces the risk of human error to further increase business continuity. A final component of business continuity that is achieved through the ability to release anytime, anywhere is enabling the business to decide when to release based upon business need, such as a competitive threat.
Consider a scenario where a new feature needs to be deployed immediately (today) in response to a competitor, vs. having IT processes and/or staff schedules (staffing for monthly maintenance windows) dictate when the business is able to provide new capabilities to users. DevOps increases business agility by overcoming the paradigm of only deploying on the second Tuesday of each month.
Overcoming the risks of tribal knowledge
Tribal knowledge is widespread in complex IT systems and relying on tribal knowledge for software release activities creates significant risk to business continuity. Tribal knowledge results in costly mitigations to sustain business continuity such as having multiple developers on-call during release activities or running war rooms during maintenance windows “just in case” something comes up. Additionally, even the most rigorous efforts to keep manual runbooks up to date can fall short when an operator skips a command because they think they know a better way.
DevOps activities to automate pipelines and platforms curb tribal knowledge by capturing all essential configuration items within automated routines, platform configurations and/or configuration repositories. Combining positive configuration control with automation greatly increases business continuity — such automation guarantees 100 percent accuracy of running specific commands with specific configuration settings to perform a software release.
Tribal knowledge can be further reduced or eliminated by relying exclusively on automation for all software release activities — this means that when a release fails, the environment is never tweaked or hot-fixed, rather the automation and configuration items are adjusted accordingly and then the release is performed again using automation. This practice guarantees an organization’s ability to restore a proper configuration using automation anytime. Rigor around DevOps best practices, including maintaining accurate automation routines and version control of all configuration items, are key enablers of business continuity.
Improving testing of software releases
Although DevOps activities to automate pipelines and platform provisioning improve the business continuity of software release activities, these activities alone do not fully enable automated testing to confirm a software release functions as desired. Hence no discussion of business continuity and DevOps would be complete without mentioning it is imperative that DevOps automation be accompanied by some degree of automated testing to confirm that a software update functions properly after release.
Automated testing, even without any DevOps linkages, provides significant business continuity benefits by improving the quality and accuracy of software developed to confirm desired functionality. Business continuity benefits of such automated testing can be amplified by DevOps leveraging existing test suites to run automated health tests each time a software release is performed. These automated health tests reduce the risk of having end users interact with a non-tested release, which could result in failed transactions or lost business.
Automated health tests can add additional benefit when integrated with other DevOps automation — consider the scenario where an automated health check may fail, automation can be set to quickly revert to the prior version to minimize end-user impacts. Moreover, strategies and tools exist that enable automated test suites that are used during development to be repurposed to enable system health tests as part of automated DevOps software releases. The business continuity benefits of activities to increase automated test coverage are amplified when combined with DevOps automation.
DevOps activities to improve alignment of people and processes as well as automating software release activities can provide significant benefits to increasing business continuity. The activities outlined in this article are intended to influence the following business continuity performance indicators as noted below. Consider these indicators to quantify how the activities outlined in this article or other DevOps practices are impacting business continuity in your organization:
- Seek to reduce the chance of human error.
- Seek to reduce down-time to end-users.
- Seek to increase the accuracy of software releases.
- Seek to increase automation of software releases.
- Seek to increase shared knowledge of software releases.
All are invited to share your feedback below with insights and ideas on how your organization is embracing DevOps to improve business continuity. Feel free to schedule a DevOps Workshop to get started today.