Introduction to Continuous Delivery

As mentioned in Key Concepts in Modern Application Development, continuous delivery (CD) is a practice where teams make use of automated processes so that any code changes result in the building and testing of new software that can then be deployed to production (if appropriate).

Continuous delivery does not mean that every code change is deployed to production. Instead, a continuous delivery environment typically includes a number of different environments for deployment, where deployments to some environments happen automatically but deployment to other environments requires some manual input or approval.

For example, a continuous delivery environment could include deployment environments for development, testing, staging, and production, where deployment happens automatically for the development and testing environments, but manual intervention is required to approve deployment to the staging or production environments.

Using continuous delivery in this way enables you to deliver application changes quickly and more reliably, leading to improved product quality and user experience.

Note: Continuous delivery is very similar to continuous deployment, with the only difference being the existence (or lack) of manual validation steps. With continuous delivery a code change results in automated building and testing followed by at least one manual validation step before the changes are deployed to production, whereas with continuous deployment there are no manual validation steps, so a code change always results in automated building, testing, and deployment to production.