@ccaum: Continuous Delivery doesn't mean every change is deployed to production ASAP. It means every change is proven to be deployable at any time.
IT:AD:Continuous Delivery is about ensuring ensure code is always in a deployable state (built, tested, packaged) in order to get changes of all types – new features, configuration changes, bug fixes and experiments – into the hands of users on demand, safely and quickly in a sustainable way.
IT:AD:Continuous Delivery recognizes that coded Unit and Static Tests cannot catch all business logic – unfortunately process maturity ends up dictating how much of the functional testing is automated (as opposed to IT:AD:Continuous Deployment which depends on all functional testing being automated).
Many projects are still somewhere on the continuum between barely more than IT:AD:Continuous Integration (with packaging added to the mix, but all functional testing still being manual) and the upper more mature practices ensuring that all functional testing is automated.
When implemented maturely, IT:AD:Continuous Delivery can completely eliminates the code freeze, integration, testing and hardening phases that traditionally follow “dev complete”.
Either way, in a IT:AD:Continuous Delivery based project, deployment to PROD remains a decided operation – unlike IT:AD:Continuous Deployment.
A key concept of IT:AD:Continuous Delivery is small batches of work continually fed to the next step – automated or manual – will be consumed more easily and issues found earlier. This system is easier for the developer because issues are presented to the developer before the task has left their memory.
The fundamental difference is that IT:AD:Continuous Delivery is when you make your software product available to the customer but the decision to upgrade/install it is manual. In the case of desktop apps, they have to download/install the update, and in the case of a web service, someone has to authorize it's deployment to live.
IT:AD:Continuous Deployment is when the upgrade is automatically deployed.
In other words, with IT:AD:Continuous Delivery, a product can be automatically delivered to production at the touch of a button, once approved – whereas with IT:AD:Continuous Deployment it is automatically deployed to end production.
The second fundamental difference between the two is that whereas IT:AD:Continuous Delivery can use some IT:AD:Continuous Testing IT:AD:Continuous Deployment relies on using IT:AD:Continuous Testing to test the totality of the solutions's functionality.
* http://electric-cloud.com/resources/continuous-delivery-101/continuous-deployment/ * https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff * http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment * https://www.quora.com/What-is-the-difference-between-continuous-delivery-and-continuous-deployment * http://stackoverflow.com/questions/28608015/continuous-integration-vs-continuous-delivery-vs-continuous-deployment * https://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continuous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait-huh.aspx