In some previous post I’ve described what kind of methodology are DevOps and what are the main differences between Development and Operations. In this post I’m going to describe the main differences between Continuous Deployment and Release Management and how does the absence of each of them interacts with other.
Pushing to production new versions of software under development is called Continuous Deployment. In big organizations, software is deployed thousands of times each day. Continuous Delivery involves some manual steps as in this practice the software is always release-ready, yet it is to be decided by the business personnel the timing of when to push it into production and so the final deployment is a manual step. On the other hand, everything is automatic with Continuous Deployment. Any updated working version of the application is automatically pushed to production. Continuous Deployment mandates Continuous Delivery, but the opposite is not required.
In both cases agility is of the greatest importance, but continuous delivery allows businesses to manually decide when changes are implemented to applications and services. In an ideal world, continuous deployment would be adopted by majority of companies, but sometimes due to some constraints this is not possible. In some scenarios, the IT department must wait before a feature goes live, making continuous deployment unworkable.
Release Management helps automate the deployment and testing of software in multiple environments. Using Release Management, we can either fully automate or semi-automate the delivery of our software. It is an essential element of DevOps that helps our team continuously deliver software to our customers at a faster pace and with lower risk.
Release Management takes Continuous Deployment to the next level and allow you to automate the movement of your code from a build all the way to production.
You could have Continuous Deployment without Release Management, you could have Release Management without Continuous Deployment. You could have an entirely manual process, without continuous deployment but you have a release management pipeline where you got a bunch of manual tasks that you execute, where you can see where things actually are. So even though Continuous Deployment is a fully automated process – absence of Continuous Deployment does not in any way mean absence of Release Management.