Some 20 years after the advent of Agile and more than a decade into the DevOps movement, many companies still struggle with continuous integration and continuous delivery -- both key components of the rapid software delivery required to stay competitive in the digital age.
Statistics on adoption of CI/CD in enterprise IT vary, but recent surveys indicate that their use is far below universal. GitLab's 2020 survey, "Mapping the DevSecOps Landscape," found that only 38% of the 3,650 respondents said their DevOps implementations include CI/CD. Meanwhile, Codefresh, which makes a CI/CD platform, found in its 2019 survey of 130 developers that 32% were not using any CI/CD tools while roughly 60% said their organizations were not using the right amount of automation to impact the pace of software delivery.
The use of CI and CD -- also known as continuous deployment -- enables software developers to put code into use quickly and effectively. According to experts, they're considered critical enablers of digital transformation, as they allow enterprise IT to move as fast as the business and its customer needs.
"If you're not doing that, then the promise of a fast delivery isn't there," said Jayne Groll, co-founder and CEO of the DevOps Institute.
Developing an effective CI/CD operation within enterprise IT is complicated and organizations often face a range of challenges as they mature the Agile development program that both supports CI/CD processes as well as CI/CD needs to deliver code fast.
Given these challenges, experts offered the following five CI/CD best practices for CIOs to follow that can improve enterprise IT:
1. Address the distinct challenges of CI and CD
With CI, developers can merge small code changes -- whether corrective or innovative -- into a central repository in frequent intervals to test in small increments, with each merger triggering an automated build and testing sequence.
With CD, developers put code through an automated series of steps to prepare it for release to production -- the code is built, tested and pushed to a nonproduction testing environment but requires a manual approval to send it to production. With continuous delivery, the move to production is automated.
Organizations typically find it easier to establish CI -- they generally find continuous delivery/continuous deployment a harder practice to successfully stand up, according to Gartner analyst Sean Kenefick.
So, break them down. Organizations can move forward first with CI and address the narrower range of challenges there, while also working to address the different challenges associated with CD as they seek to build the environment needed for continuous delivery/continuous deployment, Kenefick said.
"There's a huge amount of moving parts in CD pipelines," he said, noting that organizations have to rearchitect to support automated configuring, orchestration, provisioning and testing, as well as adjust processes and required skills.
2. CI/CD is an ecosystem, not a linear path
CI/CD is more of an ecosystem than a linear assembly line, Groll said. "You're building an ecosystem of people, processes and automation that takes that code from the integration point and brings it into delivery. It's not a single pipeline."
According to Groll, CIOs and teams who approach CI/CD as an ecosystem can better understand how the technology and tools work with the people, processes, practices and frameworks to create an integrated, automated approach to creating and consuming new code. They're also more likely to invest in the technology, skills and process changes required to build the new ecosystem versus adding only pieces such as automated testing and thinking that's enough.
"I think the image of the software factory, something very linear, is something we've emblazoned. But there are layers in this. The layers don't have to make it more complex, but they have to be accommodated. So, looking at it as an ecosystem, with IT being a system of systems, makes people think of it from a systems point of view," she said. "And it gets out of the notion that it has to be step by step and instead recognizes that some activities can be simultaneous."
3. Build and strengthen a new mindset
CIOs need to build a new mindset in their developers as well as their operations teams as a CI/CD best practice to reinforce the expectation of more shared responsibilities over time as they shift to Agile development methodologies and mature them.
"Historically, most software engineers thought of only the functionality they're trying to achieve -- they didn't think about how it would run in the production environment. But now, developers have to take ownership of how code will run. Developers need to think about performance as well as the operation and the running of code as they're developing the code," said Steve Berez, a partner at Bain & Co. and co-author of Doing Agile Right: Transformation Without Chaos.
"And on the operations side, they have to be comfortable with passing some of their responsibilities upstream to developers, enable that and trust that developers are taking those responsibilities into considerations," he said.
4. Support teams
Similarly, CIOs must invest in the people needed to make CI/CD a reality and not only the technologies that support it, said Dave West, CEO at Scrum.org, a provider of comprehensive training, assessments and certifications. "It's about empowered teams. I'm a fan of empowering teams to take ownership of the problems and allowing the teams to fix those problems."
West said he advises CIOs to align teams -- or teams of teams -- around customers or problems and to adequately train them to take on that new role. He said switching to such a structure is difficult at first and forces rearchitecting to succeed but pays off in the long run by supporting software delivery at a higher volume and increased velocity.
"It might be more painful at first to align teams like that, where they use what they need to support the customer or that element of the business process they're responsible for. Instead of teams owning a particular application, the team members own a process and [therefore] may own lots of applications and are working on things they never did before," he said.
"But over time, if you give them enough support, the applications will evolve and change and the automation will improve with that to effectively allow the team to do this. And because the team is aligned to customers, they're much more likely to have an environment to rapidly deliver value to customers."
Kenefick said he, too, believes that CIOs must empower their teams if they're going to succeed at CI/CD. He said CIOs should incentivize teams by rewarding team success instead of awarding individual bonuses -- fund the tools and infrastructure that teams need to deliver on their objectives, allow teams to decide what they'll work on next and let teams truly manage themselves. CIOs that do all that, he said, are best positioned to mature their CI and CD capabilities.
5. Measure improvements
"There has to be measurements in place to understand the challenges that remain ahead of you," West said, noting the CIOs can opt to measure how long it takes teams to build code and how long it takes to enter production. He said such metrics help CIOs understand whether their teams are really rapidly delivering value to customers and whether they're quickly getting feedback to fuel further improvements.
Just as measurements help understand successes and deficits in other areas of the organization, West said such measurements around CI/CD best practices will help CIOs better target future investments into the CI/CD ecosystem that in turn can deliver improvements in the speed and velocity of deploying code.