DevOps has proven to be a vital practice to streamline software development, delivery and maintenance. Ideally, DevOps enables businesses to create better software in less time for lower costs. But a successful DevOps paradigm is far from certain.
DevOps success requires cultural, procedural and technical shifts that some organizations struggle to accommodate -- sometimes leading to DevOps failure. Organizations that seek to adopt DevOps should remember what DevOps is, what it does and what goals to set for successful adoption.
What is DevOps?
DevOps is, at its simplest, a set of Agile-supported practices to improve collaboration and eliminate silos between developer and IT operations teams across a business. By eliminating traditional silos, IT teams can develop software faster and with far more agility than traditional waterfall development paradigms. Better communication leads to better understanding, fewer defects, less rework, and easier testing and deployment. The software development process becomes more efficient, and development costs shrink.
For example, a traditional siloed business might impose a delay of days -- if not weeks -- for IT operations staff to approve and provision the infrastructure to deploy a new build. With DevOps, the mechanisms are in place to provide that infrastructure in a matter of hours -- or even enable developers to handle the provisioning and deployment directly in production. This saves time for each CI/CD iteration.
Businesses are rarely designed and managed as agile, collaborative groups. Instead, many organizations evolve into complicated ecosystems of varied teams, systems and policies that lead to inefficient communication channels. These channels impose unnecessary formalities and delays into everyday business processes. Agile and iterative development adoption, combined with development and operations integration, can bring an array of benefits to the business, including the following:
- Reduce or eliminate dependence on individuals, such as managers, for approval.
- Use automation and orchestration to streamline software delivery and deployment workflows.
- Accelerate build testing.
- Provide consistent policy and practice across development, operations and other business areas.
- Bring better monitoring to the development process.
- Reduce development and operations costs.
But these benefits don't happen automatically: Deciding to use DevOps does not guarantee its success. DevOps adoption faces an array of common challenges, such as the following:
- Fuzzy definitions. CI/CD can mean different things to different businesses; adopting different definitions can cause misunderstandings and failed projects. There is often a lack of education and ongoing learning with DevOps strategies and practices.
- Deeply rooted silos. Developers seek to innovate and make changes, while IT operations staff seek to maintain availability and performance levels. It's a natural silo caused by different goals, and businesses are often resistant to change that setup with its long-demonstrated success.
- Legacy commitments. Big companies grapple with legacy workloads that might be unstable, lack support or impose high operational costs. DevOps and Agile paradigms don't serve legacy environments well, so businesses must commit to replacing these legacy environments.
- Lack of actionable metrics. Businesses collect metrics about the development process, but all metrics should be actionable and facilitate process improvements. Collecting metrics with no actionable value bogs down a DevOps environment.
- Automation isn't automatic. DevOps depends on the CI/CD workflow's speed and agility, which relies on high levels of automation and orchestration in the CI/CD tool set, such as automated testing strategies. Manual processes lead to delays and errors, undoing much of the Agile paradigm's benefits.
- DevOps isn't tools. DevOps is a way of working. Tools can facilitate DevOps, but only if teams can deploy and use them properly with adequate training. Focusing on tools can cause business leaders to overlook the team -- which is the real DevOps foundation.
Steps for smooth DevOps adoption
When DevOps initiatives fail, it's typically because of the wrong business mindset. Organizations often treat DevOps like a framework or a tool, which is a straight road to DevOps failure. Although tools play a vital role in DevOps, organizations achieve success by implementing both technical and cultural changes together. Aspiring DevOps adopters should consider six broad universal issues:
1. DevOps training
DevOps is a complex cultural and technical issue, especially when Agile workflows are not yet implemented. Invest in DevOps training to help developers, operations staff and business leaders understand the policies and processes necessary to set up and run a successful DevOps environment.
2. Develop policy and process
A business cannot enable, orchestrate or automate undefined activities. The business must first rely on training and staff expertise to decide how the DevOps process should work for the business, and then put the policies and procedures in place to remove silos, streamline workflows and support interactions between development and operations. Consider policies and processes upfront, but leave room to refine those workflows as business needs evolve and change in the future.
3. Focus on collaboration
Ensure DevOps team members have open and mutually supportive opportunities to communicate and collaborate across the entire workflow. For example, developers might reach out to operations -- ahead of the project -- to ensure resources are available for an incoming build.
4. Remove silos
DevOps has little benefit when traditional silos and manual processes stay in place. Any DevOps initiative must build on collaboration and work to eliminate the traditional silos that slow development and releases. Work to create flexibility and agility that enables releases and maintenance to proceed quickly and efficiently. It takes time to ease deeply ingrained silos, so use opportunities to meet and work together to help break down unnecessary separations.
As discussed above, DevOps is not about tools, but tools play a key role in facilitating rapid iterative development and delivery. Tools provide automation and orchestration to shepherd the process, and provision resources in operations for deployment and release. The entire tool set must work together seamlessly to optimize the DevOps experience.
6. Measure success
Use metrics to measure the performance of the DevOps environment. Individual metrics can range from code commit frequency to defect rates in a build or release. While no two businesses use the same set of metrics, create a means to measure the DevOps environment to ensure best performance and results.
Set DevOps goals
Initiatives fail when businesses set unrealistic or overly ambitious goals, and DevOps initiatives are no exception. The cultural and technical changes that must take place across a business can be daunting, and businesses must set realistic goals. When setting those goals, ask questions such as the following:
- How long should it take for a DevOps initiative to form and take hold?
A business with a large developer staff and effective CI/CD pipeline can expect to implement DevOps faster than a business just starting to develop software in house, with few developers and little resources to invest.
- What metrics should be adopted and what should those metric values be?
If the goal of DevOps is to improve software quality, metrics might focus on bug and ticket frequency or time to remediation. Similarly, if the goal is to accelerate the CI/CD cycle, metrics might include delivery and deployment frequency.
- What ROI should DevOps provide?
DevOps lowers costs by accelerating development cycles, but ROI can be a tricky parameter to gauge. Time-reduction benefits can be offset by the cost of new tools and the oversight of new workflows. Companies seeking DevOps and cost-reduction measures should consider less-tangible returns, such as software quality and customer satisfaction improvements, due to DevOps.
Ultimately, the answers to these questions depend on the business's size, CI/CD pipeline maturity and reasons for implementing DevOps in the first place. Regardless of how a business sets goals for DevOps, it's vital to get departmental leaders on board, track the goals over time, and prepare to reassess and adjust as necessary.