Is it Continuous Deployment or Continuous Delivery
The terms
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.
Continuous Deployment
As we want
to keep things simple Continuous Deployment is nothing more then deploying
every code change to production.
Continuous Delivery
To explain
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”
Donovan Brown
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".
This really
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
release process. - Improve continuously
Conclusion
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.