Continuous Delivery vs Continuous Deployment.
Tags: devops, cicd
Published: 2023-05-17 17:39:38

Continuous Delivery and Continuous Deployment represent two distinct phases in DevOps. Both steps are used in the deployment of software changes into production, but both aren't the same. 

**Continuous Delivery (CD)**
This stage majorly concerns the written code and any new changes made to the code. Continuous Delivery can be defined as the deployment of software(code) changes into production environments. Code changes made comprised of

- New features

- Bug fixes

- Refactoring

- Performance enhancements

- Configuration Changes etc. 

CD allows for the seamless, frequent, and rapid deployment of code changes into production environments without running them down. It is an essential stage for any deployment process. The CD provides a flexible **manual** way of releasing the changes deployed for end users. To enhance the CD process, a set of appropriate tools are implemented, and they are:

- Version Control Systems: This is an essential part because it manages source code and enables team members to collaborate and make changes to the source code. An example is Git.

- Continuous Integration (CI) tools: A notable example, Jenkins, helps in validating the code changes made to the version control and automates the build and testing process.

- QA Testing tools: Another notable framework here is Selenium, which helps developers execute unit tests, integration tests, and performance tests.

- Configuration Management tools: Configuration Management tool like Puppet helps in facilitating consistent and flexible deployments across various production environments.

The aforementioned tools serve as a limited selection of the various tools utilized in Continuous Delivery. To ensure a complete process of CD, the right combination of toolsets must be used depending on the technology stack and project requirements.

**Continuous Deployment (CDep)**
Continuous Deployment also can be referred to as the automation of code changes released to production environments. But take note of the keyword here, **AUTOMATION**.
It can be referred to as a step further to CD because it deals with the automated deployments of the software changes into production after all the necessary criteria have been met and all tests have been passed. Manual approval is eliminated in this process because CDep deals solely with automation.
The main aim of CDep is to minimize the time the end users can be able to access the deployed software changes and updates. By automating the release process, software updates, new features, and improvements can be rapidly delivered to the end users, providing a seamless, and rapid software delivery pipeline.

The toolsets utilized in CDep are similar to CD but the emphasis of the tools may vary to accommodate the automation needs of CDep.

- Containerization tools: Notable technologies, such as Docker and Kubernetes, to run applications and their dependencies in portable containers.

- Monitoring and Alerting tools: Monitoring tools such as Datadog, are essential for monitoring software applications and infrastructure. These tools provide real-time visibility into availability, performance, and various metrics, enabling rapid issue detection and swift response.

**Conclusion**
The primary distinction between Continuous Delivery (CD) and Continuous Deployment (CDep) lies in how the release decisions are made. In CD, teams manually decide when to release the software changes whereas CDep automates the release process, once required tests are successfully passed, the changes are promptly deployed to the production environment.