In the age of DevOps, conventional software development and delivery methods are becoming obsolete. Software and infrastructure have become more complex as many companies move towards a microservices architecture and automated processes have become more critical than ever. Alarmingly, 50% of respondents in a recent survey reported finding issues in production after code is released.
For companies interested in improving their development methodologies and advanced testing practices, we've turned to DevOps industry experts for advice.
What Is a CI/CD Pipeline?
Modern software companies are automating their development lifecycle with a process known as continuous integration and continuous delivery (CI/CD).
Manish Mathuria, CTO of Infostretch, describes continuous integration as "the process of creating builds that are tested and ready to deploy to the next stage, whatever that stage may be, in a completely automated and touchless way." Continuous integration tightens the feedback loop for developers, so that code can be built and tested more frequently. By constantly integrating and testing code, companies can ensure that each code change is in a release-ready state.
Continuous delivery, explains Brian Nash, director of product marketing at CloudBees, is "extending the same principles of CI further to the right (downstream) in the software delivery process. Nash believes this is the key to delivering code changes to users in a rapid, repeatable and reliable way.
Related Article: 7 Key Principles for a Successful DevOps Culture
Benefits Over Traditional Software Delivery
There are significant benefits for companies to automate their software delivery process. Mathuria explains, "advanced software development shops can put releases into production multiple times a day." However, 10-15 years ago, it would take a few weeks at a minimum to do that, he explains.
Similarly, Glenn Sullivan, co-founder of SnapRoute, alludes to the emergence of CI/CD as the move from a classic "waterfall" approach to an "agile" model of software development.
The main problem with traditional software delivery was the lack of accountability, according to Sullivan. Traditional software development processes can’t keep up with the market demands of the digital age.
CI/CD “stops engineers from throwing stuff over the fence,” he said and moves towards software development that’s “process-oriented with clearly defined gates, with constant communication between teams and a short jump back to the 'starting' point to triage and assess issues.” The decreased time to market is enormous, but the approach also eliminates the common mistakes associated with manual testing. Shorter development cycles, Nash added, “make it possible to fix defects faster, close security vulnerabilities faster and pivot to meet changing market needs with less wasted effort.”
Learning Opportunities
With an automated and documented process there is a "low reliance/dependence on tribal knowledge, as well as [a reduced dependence] on those who hold knowledge, which can be a liability if they leave," said Mathuria. Clearly defined DevOps methodologies allow companies to remove the silos and create an environment of collaboration and communication.
Related Article: Agile vs DevOps: What's the Difference?
How to Get Started
Although the benefits of an automated CI/CD pipeline are clear, it can be challenging for many companies to know how to get started. “Change management is a big one. You are changing the operating structure, and getting your organization ready for that change is a big step,” said Mathuria. Your organization needs to be ready to move towards the culture necessary to embrace DevOps.
As a first step, Sullivan suggests companies "clearly define what the process is today for deploying into production." Once that's in place, which may take several iterations, "part of building a rock solid CI/CD pipeline is knowing who owns which piece and giving those teams the tools that they need to resolve issues quickly," he said.
Getting into the specifics, Nash said to focus on easily automated steps first, and proposes that "early targets for automation include: an automated, central build with validation; unit and non-functional testing; environment provisioning (using containers wherever possible); non-gated deployment to preproduction environments."
“Deciding on the tools and determining how reliable they are, or how self-healing they are, is a big part,” said Mathuria. He explained that companies need to consider a wide range of tools for tasks like basic CI, software development management, static and dynamic analysis, unit testing, configuration management, security and performance. “There are market leaders in all of these categories; each individual organization needs to decide which is best for them, including open source. And, this is just for CI; CD has another set of tools.”
Setting up a CI/CD pipeline is not easy. There are so many technologies out there and it'll likely take multiple iterations. In the end, Sullivan concludes, "this isn't about building silos, this is about giving teams the autonomy and agency to do their jobs and move quickly in their swim lane."