Continuous Delivery vs Continuous Deployment


This questions about what CI/CD mean often come up around folks who are just getting into Agile. Particularly each time i’ve been involved in the CSM class. So far 3 times and so far this has come up.

So, I thought this article made a nice description thats basic to understand and thought I’d share it.

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.

@ccaum @steveburnett I think many people confuse “Delivery” with “Deployment”.

— 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.

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.