Ranger4 DevOps Blog

Continuous Delivery & Continuous Integration: What's the difference?

Posted by Tejinder Sehgal on Thu, May 22, 2014 @ 13:05 PM

Let's look at the difference between Continuous Delivery and Continuous Integration - two terms which we find people often get mixed up. Let's start by looking at some of the industry's experts' definitions - the two below are the ones that I found made the terms easiest to understand.

Continuous Integration (CI)

“Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.”

Martin Fowler, 2006 (http://martinfowler.com/articles/continuousIntegration.html)

Continuous Delivery (CD)

“Continuous delivery is about putting the release schedule in the hands of the business, not in the hands of IT. Implementing continuous delivery means making sure your software is always production ready throughout its entire lifecycle – that any build could potentially be released to users at the touch of a button using a fully automated process in a matter of seconds or minutes”

Jez Humble, 2010 (http://continuousdelivery.com/2010/08/continuous-delivery-vs-continuous-deployment/)

For you more visual learners:

Visualizations of Continuous Delivery resized 600

Continuous Integration and Continuous Delivery interrelate which is probably where most of the confusion stems from - Continuous Integration is often referred to as being part of Continuous Delivery and Continuous Delivery is referred to as being an extension of Continuous Integration. It is not possible to be doing Continuous Delivery without Continuous Integration although it is possible to be doing Continuous Integration without Continuous Delivery.

CD, CI and DevOps

Continuous Delivery is often mentioned by DevOps practitioners as an ultimate goal of a DevOps strategy or implementation.

One of the benefits of Continuous Integration is that it forces developers and developer teams to integrate their work as soon as possible, which eventually increases developer communication and makes the integration process a lot quicker since issues can be detected a lot earlier.

Practicing Continuous Delivery should enable companies to release changes to their customers much sooner since testing happens at every step. How often a company does this is dependent on the type of company; an internet based company like Netflix is likely to perform multiple releases daily whereas a more traditional enterprise, like a building society for example tend to have much less frequent release cycles.

All clearer now or do you have a view on how these terms differ and interrelate?

Topics: continuous delivery