The terms Continuous Integration (CI), Continuous Delivery (CD) and Continuous Deployment (CD) can cause confusion. Three very similar terms, all of which are used to describe a process that makes up part of the DevOps cycle. Because of this, there is often a lack of understanding of exactly what each of these three processes exactly are. Where they fit within the Agile methodology. This post will attempt to define them.
In this practice, developers integrate the code within a shared repository multiple times over the course of the development phase. Continuous Integration forms the shortest loop in the Agile DevOps cycle. CI comes into play after a code commit. CI involves code testing, and functional testing, as a precursor to full QA. The feedback from the CI loop is sent directly back to the Dev team.
CI work particularly well in a DevOps environment that has a rapid commit rate. It helps to identify core problems, often using automated testing techniques. These problems are found before entering the full testing/QA process. Lowering the testing overhead, and giving the Dev team rapid feedback.
Continuous Delivery defines a slightly larger loop in the DevOps Agile cycle. The process involves production of software code in short cycles such that it is releasable at any given moment. CD comes into play once a commit has been deployed into the test environment. Potentially after having successfully passed through a CI loop.
CD is the starting point for full testing/QA of a potential new production push. By this stage, automated testing tools have already been used, and it is time to move on to manual testing. Feedback from the CD loop, is once again, delivered back to the Dev team.
Continuous Deployment is the widest of the three loops in the DevOps cycle. It comes into play after both the CI and CD loop have been run through. To get to Continuous Deployment stage, a commit will have passed a prior CD loop, and potentially a former CI loop as well. While Continuous Delivery process ensures the code is deployable, the software changes are not actually deployed to a production environment. With continuous deployment, the code change is actually deployed into production on a continuous basis.
This is basically a production push of a new software version, which will be delivered to end users. It has been fully tested, and is ready to deploy. Feedback from the Continuous Deployment loop will usually be delivered to the whole DevOps team.
[See Also: Vertical Slicing in Agile Development]
It should be clear to see by now, that Continuous Integration, Continuous Delivery and Continuous Deployment combine into a single iterative loop. The cycle looks something like this:
Commit -> Continuous Integration -> Continuous Delivery -> Continuous Deployment.
Something else that should now be apparent, is that this kind of Agile cycle is very effective at highlighting problems with a commit. By using automated testing tools in the CI loop, and then manual testing/QA in the CD loop.
The devops.com website published a very good infographic that demonstrates how Continuous Integration, Continuous Delivery, and Continuous Deployment can drive the entire end-to-end Agile cycle.
Indeed, it could be said that these three processes combined, are the underlying functions of what is termed Continuous Testing. They provide a vehicle for verifying every commit, and proving its effectiveness all the way to a production push.
Everything you need to know about outsourcing technology development Access a special Introduction Package with everything you want to know about outsourcing your technology development. How should you evaluate a partner? What components of your solution that are suitable to be handed off to a partner? These answers and more below.