Newcomers to the world of DevOps often notice that the word “continuous” gets thrown around a lot. People talk about continuous integration (CI), continuous delivery (CD), continuous testing and continuous deployment — and all that continuous-ness can get a little confusing.
It’s tempting to think that all these terms mean the same thing. After all, organizations that practice one often practice many of the others. Even some tools, such as CI/CD solutions, seem to conflate these ideas.
However, each of these terms refers to a unique concept, and DevOps practitioners need to understand the differences between them if they want to achieve maximum success with the DevOps approach.
Continuous integration comes from Agile development methodologies. It involves all the developers on a particular project merging their code into a shared code base several times a day and then doing a build to look for any integration errors. The goal is to find integration problems early in the process when they are presumably smaller and easier to fix.
CI is among the most commonly used Agile and DevOps techniques. According to the 12th Annual State of Agile Report from CollabNet VersionOne, 54 percent of organizations are using CI techniques.
Continuous delivery is also an Agile development process, but although it is related to CI, it is slightly different. In a nutshell, CD requires developers to make sure that their code is ready to deploy at any time. In order to make that possible, they make small, frequent changes to their code base and test as they go. It requires continuous integration, as well as frequent feedback cycles and project managers who are monitoring the development lifecycle.
CD stands in stark contrast to traditional waterfall development practices where organizations might spend a year or more on a major update that doesn’t become ready for release to customers until the very last minute.
Continuous deployment is very frequently confused with continuous delivery, and for good reason. Not only can they both be abbreviated CD, they both involve releasing code into production.
The difference is that while continuous delivery means that you are always ready to deploy your code, continuous deployment means that you actually are pushing code out to users as soon as it has passed testing.
That distinction is important because businesses sometimes choose not to release code continuously, even if it is ready to deploy, perhaps because of regulation concerns or other business-related reasons. In the CollabNet VersionOne survey, 37 percent of respondents said that their organizations use continuous deployment.
Continuous testing is probably the easiest of these four ideas to distinguish from the other continuous processes. It means that organizations are using test automation tools to get feedback to developers as quickly as possible. Its goal is primarily to speed up the development and deployment processes, and it’s a key ingredient to enabling continuous integration, continuous delivery, and continuous deployment.
All four of these principles are intertwined, and all four are critical to the job of the continuous delivery architect, the person responsible for designing, implementing and managing DevOps deployment pipelines and toolchains. DevOps Institute’s Continuous Delivery Architecture (CDA) certification covers all four ideas in great detail, as well as examining related people issues, automation, security, metrics, best practices and more. It’s a great learning opportunity for enterprise architects, software developers, IT managers, project managers and anyone else interested in a high-level view of DevOps processes. Click to learn more or find a certification that suits your schedule.
About the Author
Cynthia Harvey is a freelance writer and editor based in the Detroit area. She has been covering the technology industry for more than fifteen years.