One constant throughout my career at both large companies and startups has been accelerating the process of taking a product from development to production. Moving faster often comes at the expense of breaking more things, however. Every enterprise struggles with the same problem: the desire to be agile without adversely affecting customer functionality and experience.
The new mantra of DevOps is expected to solve this issue. DevOps is the process of automation that shortens the path from code development to running in production. This includes development processes, testing frameworks, continuous integration and continuous deployment pipelines.
The industry has always had methodologies, tools, scripts and frameworks to control the quality of software. Automating this process requires a significant investment in the culture of testing, automation, monitoring and scaling. Running this process with software can enable companies to quickly react to changes in technology. However, as events such as the Google Cloud outage (due to automated networking updates) have shown, this is not an easy task.
One thing I’ve realized over the years is that DevOps is a cultural process and not a magical tool. For leaders who wish to manage the pace of innovation, here are a few steps to get to the promised land:
Involve the developers
The success of the DevOps process is dependent on the full involvement of the developers. To enable agility, developers have to able to go from code changes to deployment in a fast and iterative manner. This requires investment in developer-centric frameworks to automate the testing and deployment of software. The frameworks need to reduce the friction of developers being able to make a change and have it tested without needing complex procedures.
Confidence in automation
The key to agility is confidence in the automation. Automated testing is not easy unless it is made a priority of the developer and QA teams up front in the development process. Testing, which relies on automation to achieve complete coverage rather than relying on manual testing, will build confidence. The confidence enables DevOps teams to move quickly and trust the automation to catch any regressions.
Metrics
Any good DevOps team needs to measure the automation system’s effectiveness. The objective data from the automation system needs to be used as criteria for the deployment process to continue or to abort the change being tested. The metrics of issues found in automated versus manual testing demonstrate the maturity of the DevOps process for the enterprise. If manual testing is still finding a lot of issues that automation is not then the enterprise is not ready for automation.
Phased approach
It’s not possible to move overnight from a traditionally manual process to a DevOps process. The goal should be to automate all of the testing and processes involved in taking code from development to deployment. Enterprises are best served by adopting a phase-in approach where each phase of the process is automated in stages. As an example, automation handles testing and subsequent deployment but a human pushes an approval button in between the two stages to deploy new changes.
Automation can accelerate the development process, to be sure, but it must be integrated into the DevOps process in a way that inspires confidence. By taking your time, involving the developers, applying metrics to ensure proper execution, and phasing in these new approaches, organizations can make the successful transition from manual processes.