In previous posts, I’ve described the different kinds of methodology used, DevOps and what the main differences are between Development and Operations. In this post I’m going to describe the main differences between Continuous Deployment and Release Management and how the absence of each of them interacts with the other.
Part 1: Continuous Deployment DevOps Practice
Pushing new versions of software under development to production is called Continuous Deployment. In big organisations, software is deployed thousands of times each day. Continuous Delivery involves some manual steps as in this practice the software is always release-ready, the timing of when to push it into production are decided by business personell, 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 the 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.
Part 2: Release Management DevOps Practice
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 allows 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 would have a release management pipeline where you have a lot of manual tasks that you execute and you can see exactly 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.