Continuous Delivery doesn't mean every change is deployed to production ASAP. It means every change is proven to be deployable at any time
— Carl Caum (@ccaum) August 28, 2013
I tweeted this out around the middle of the day last Wednesday. It kicked off an active conversation on Twitter, and by 5:00 Thursday, it had been retweeted 87 times, and favorited 25 times.
Clearly, it’s a hot topic, and there’s some confusion between continuous delivery and continuous deployment. It’s worth spending a few more characters than Twitter allows to define these terms.
Continuous delivery is a series of practices designed to ensure that code can be rapidly and safely deployed to production by delivering every change to a production-like environment and ensuring business applications and services function as expected through rigorous automated testing. Since every change is delivered to a staging environment using complete automation, you can have confidence the application can be deployed to production with a push of a button when the business is ready.
— Magnus Hedemark (@Magnus919) August 29, 2013
Continuous deployment is the next step of continuous delivery: Every change that passes the automated tests is deployed to production automatically. Continuous deployment should be the goal of most companies that are not constrained by regulatory or other requirements.
There are business cases in which IT must wait for a feature to go live, making continuous deployment impractical. While application feature toggles solve many of those cases, they don’t work in every case. The point is to decide whether continuous deployment is right for your company based on business needs — not on IT limitations.
Inspired by Yassal Sundman's blog post on Crisp's Blog.
While continuous deployment may not be right for every company, continuous delivery is an absolute requirement of DevOps practices. Only when you continuously deliver your code can you have true confidence that your changes will be serving value to your customers within minutes of pushing the "go" button, and that you can actually push that button any time the business is ready for it.
- You can now do continuous delivery with Puppet and Jenkins Pipeline
- Continuous delivery talks at PuppetConf
- Why continuous delivery is good for your business
- Continuous delivery depends on continuous integration — and continuous integration depends on automation
- Continuous integration for your Puppet code
- Read the 2016 State of DevOps Report to learn how DevOps improves IT and business results.