Continuous delivery and continuous deployment are two DevOps terms that sound similar, and are often confused, and are interchangeably used.
These two terms, although they sound similar and convey similar meaning are not the same. Duh! In this post, I will explain the difference between the two.
You achieve continuous delivery when you are able to auto deploy to test environments and auto test your software binaries, to a point where it can be deployed to production as needed. Normally, there will be a change management process that decides what can be deployed and what cannot.
Continuous delivery ensures that the software is delivered to an extent where it can be deployed when needed. The decision to deploy is of the business, and only the business should act as the trigger for the binaries to be deployed.
Continuous Delivery = Manual trigger needed before deploying onto production
Organizations getting into the DevOps mode of working normally begin with continuous delivery, as this process helps organizations to gain maturity and provide ample control over what goes into production and what doesn’t.
In continuous deployment, you auto deploy to test environment and auto test. When testing is successful, the software binary gets auto deployed onto the production automatically.
Continuous Deployment = Auto deployment into production after successful automation testing
In other words, if you are doing continuous deployment, you don’t wait for change management or customer’s approval to deploy onto the production box.
So am I saying that there is no place for change management if continuous deployment is employed?
Nope. You will still have change management providing the necessary approvals, but this approval stage happens before coding begins. All the approvals are sought with user stories and projects on-hand. As the team starts to develop, auto testing takes over, followed by auto deployment to production. You should note that continuous deployment works the best if the changes done are not huge, but rather tiny bits of changes that go in.
Companies like Amazon and Netflix swear by Continuous Deployment, as the changes they make are minute, and if something was to go wrong, the impact would be negligible to minimal, and rolling it back would be automated as well.
To do continuous deployment, you must be doing continuous delivery for a while, to gain maturity of automation processes, and auto deployments.