In DevOps methodologies, Continuous Delivery and Continuous Deployment are vague terms that we mostly took for granted and often compared as similar.
Let's discuss first about the well known term in DevOps called the CICD - Continuous Integration and Continuous Delivery/Deployment.
This is considered as one of the best practices for DevOps teams to implement. This is a method to frequently deliver applications to customers by introducing automation into the stages of application development.
It also integrates with the Agile Methodology best practice as it will enable developers to focus on providing code quality, and meet business requirements.
Now, let's break down these terms into chunks.
Continuous Integration (CI) is a practice where developers frequently merge the changes to the main repository (such as Github, AWS CodeCommit, etc.), after which automated builds and tests are run.
CI most often refers to the build or integration stage of application development. Successful CI means new code changes to an app are regularly built, tested, and merged to a shared repository.
When the code changes have been built, tested. Continuous Delivery and Deployment (CD) stage will prepare the changes for production release. In simple terms it is an extension of the Continuous Integration stage by deploying all code changes to a testing environment, a production environment, or both after the build stage has been completed.
We tend to misinterpret Continuous Delivery as after the code has been built, tested in Continuous Integration stage is that every change will immediately be applied to the destination environment such as QA, PROD, etc. but it is not.
The point of Continuous Delivery is to ensure that every change is ready to deploy to the destination environment which involves reviews or manual integrations from non-technical team members to control the process.
Enabling a non-technical team as part of the process reduces the burden on the development team so they may continue to execute subsequent application improvements.
On the other hand, Continuous Deployment is an improved version of the Continuous Delivery where all of the changes are ready to deploy to the destination environment without the manual integration, this process is completely automated, and only failed verification step will prevent pushing the changes to the environment.
You can achieve Continuous Deployment when your pipeline is mature enough where the involved teams are confident in the applied automation inside your pipeline.
With all of the stages automated, it means that the developer's change could go live within minutes of writing it, you can deliver to customers quicker and start to do iterations base on their feedbacks. It's easier to release changes to apps in small pieces, rather than all at once.
Building a pipeline base on your business needs could be difficult, having these terms clear can help the planning much easier.
Remember that DevOps is a journey, not the destination. Feedback to the pipeline is continuously collected and metrics are still needed to be in place to monitor the critical parts of the pipeline.
Hey! You can reach me at: