Beyond Automation: How to Succeed with DevOps
Feb 17, 2020
We've heard the message of DevOps: Automate Everything.
Automate code testing. Automate workflows. Automate infrastructure. Create the no-touch deploy. Empower the application developer to deploy directly into production. Sounds simple enough, right?
As your organization begins its DevOps transformation, you may become preoccupied with automation, forgetting that there are other DevOps concepts to address in your environment. The Scaled Agile Framework® references CALMR (Culture, Automation, Lean Flow, Metrics, Risk & Recovery) to highlight the importance of more than automation in DevOps. In this article, we'll address the other concepts to keep in mind while on the DevOps journey.
The evolution to a shared responsibility for delivering value fast across the entire Value Stream is different for every company. The journey each company makes is specific to them and their own challenges. Their mindset change is unique. The development and operations teams need to design a better approach together; however, all need to acknowledge that the process must continuously change and improve. The silos must come down and responsibilities must be shared.
The importance of resource investment can't be overstated. Adding Operations team-members to agile teams will encourage sharing of knowledge and insight. Training on the new automation tools will accelerate adoption and success.
Acknowledgement that new tools are required along with identical test and production environments is critical. The cost of having identical environments prohibits many companies from achieving successful automation; however, the cost of unstable environments and/or the cost of the time to troubleshoot bugs due to different configurations far outweighs the cost of the identical environments. Stop the fight and just provision identical environments. This step alone is crucial to changing the perception of DevOps in your organization. If features are successfully demonstrated at the end of sprints but result in bugs in production, then the culprit is probably a difference in the environments.
Also, partnerships with InfoSec will result with all deploys going through the security checks regardless of batch size (or batch criticality), which may not have been the case in the past.
Effort is required to mature the organization to embrace and champion DevOps.
In the past, prior to agile, we've seen application developers write hundreds or thousands of lines of code over multiple months before passing the code to the Operations team to deploy. Even agile teams, without DevOps, could have complex and intrusive deploys. The focus for a successful DevOps environment is to have small deploys. Smaller deploys ensures less intrusive changes. A shorter batch window results in more frequent deploys. DevOps encourages smaller batches and more frequent deploys to ensure a lean flow. Teams need to rethink what they include in their deploy packages; the smaller, the better.
DevOps is not a one-and-done proposition. Constant evaluation and improvement is foundational within agile; DevOps is not an exception. From the inception of your DevOps journey, it's important to have metrics and measures in place so improvements can be recognized, evaluated, and celebrated.
In one company I worked with, we were able to shorten a 6-week environment-provisioning process to less than 5 minutes. Without gathering the base metrics upfront, we would not have been able to measure our progress. It took time, and the culture was greatly impacted, but it wasn't the end of the journey. We continued to look for further improvements. We continued to ask ourselves what else we could automate. DevOps, as with agile, is about constant change and improvement. Monitoring and optimization is almost real-time.
As with all parts of Agile, transparency is paramount to success. DevOps will require many test-and-learn iterations; sharing the successes and failures will communicate progress and ensure buy-in. Showing the metrics will help demonstrate the maturity of DevOps in the organization.
Risk and Recovery
To succeed with DevOps, your organization will need to develop a tolerance of failure and rapid recovery. Since DevOps is designed to deploy small pieces of code quickly and automatically, it also automates backing out those changes. Instead of multi-hour downtime to implement a huge package of code and then multi-hour recovery time if the code doesn't work, DevOps quickly deploys smaller packages, automatically validates the code, and—if necessary—has a small, quick backout procedure.
In Conclusion ...
To fully recognize the benefits of agile, every company needs to begin the DevOps journey...and every company will uncover challenges along the way. These challenges come from many different parts of the company and may show themselves in different ways. It may be an agile team not embracing the new tools, or the business not approving the funding for a robust test environment, or InfoSec not approving the automated solution. However these challenges present themselves, it's important to spend time upfront uncovering areas of resistance and the root causes. DevOps takes time, effort, and persistence—automation is the easy part.
You need the DevOps benefits: to innovate faster, to be more responsive to the business needs, to see better collaboration, to experience better quality, and to have more frequent releases. The effort needed to adopt DevOps is worth the journey.