Continuous Deployment and Continuous Delivery are most of the time mistaken
with each other. The abbreviation CD is sometime used for Continuous Deployment
and sometimes used for Continuous Delivery! Hack I even use the terms in wrong
situations were I forget to mention the right one, but there is a real
difference between the two.
As we want
to keep things simple Continuous Deployment is nothing more then deploying
every code change to production.
Continuous Delivery, more words are needed. Let’s start by looking at the definition of
DevOps from Donovan Brown:
“DevOps is the union of people, process, and products to enable Continuous Delivery of value to our end users”
When looking at the definition you will notice that Continuous Delivery is an enabler for the DevOps practices. Based on this we can say that Continuous Delivery is a set of tools, processes and techniques for rapid, reliable and continuous development and delivery of software a definition defined by "Martin Fowler".
means that Continuous Delivery means more than just releasing software. This
can also be extracted from the eight principles of Continuous Delivery:
- The process for releasing/deploying
software must be repeatable and reliable.
- Automate everything!
- If something is difficult or
painful, do it more often.
- Keep everything in source control.
- Done means “released.”
- Build quality in!
- Everybody has responsibility for the
- Improve continuously
Combining the eight principles and the definition of Donovan Brown makes Continuous Delivery the real enabler for the DevOps practices were the term is not only a certain form of release management but much more.