Continuous Deployment (CD) is an advanced stage of the software development process, where the development team has established a high degree of confidence in their code and tests. In CD, any code changes made in the application are automatically pushed and deployed to production without human intervention (provided that they pass all tests). The goal of Continuous Deployment is to minimize the time it takes for new features, bug fixes, and improvements to reach the end-users.
Continuous Delivery, on the other hand, is a process that ensures the code is always in a releasable state. It’s an extension of Continuous Integration, where new features, bug fixes, and improvements are frequently tested, integrated, and verified. The pipeline for Continuous Delivery includes building, testing, and deployment stages. However, unlike Continuous Deployment, the actual deployment to the production environment is not automated and requires manual approval. This manual approval step is typically required for organizations that need more strict control and regulatory compliance checks on their deployments or for those that prefer human confirmation before a release.
Here’s a simple flowchart comparing the two processes:
In summary, both Continuous Deployment and Continuous Delivery aim to streamline the software delivery process, reduce risk, and ensure fast feedback cycles. The main difference is that Continuous Deployment automates the deployment to production, making it more suitable for organizations that heavily rely on frequent releases and can tolerate the risk of occasionally deploying something that doesn’t work as expected. Continuous Delivery, on the other hand, is a more conservative approach that still requires manual approval to deploy code changes in the production environment, allowing teams to maintain a higher control and review before the release.