We already know what the Continuous Delivery process is and why we use it. In this section, we describe how to implement it.
Let's start by emphasizing that each phase in the traditional delivery process is important. Otherwise, it would never have been created in the first place. No one wants to deliver software without testing it first! The role of the UAT phase is to detect bugs and to ensure that what developers created is what the customer wanted. The same applies to the operations team—the software must be configured, deployed to the production, and monitored. That's out of the question. So, how do we automate the process so that we preserve all the phases? That is the role of the automated deployment pipeline, which consists of three stages as presented in the following diagram:
The automated deployment pipeline is a sequence of scripts that is executed after every code change committed to the repository. If the process is successful, it ends up with the deployment to the production environment.
Each step corresponds to a phase in the traditional delivery process as follows:
- Continuous Integration: This checks to make sure that the code written by different developers integrates together
- Automated Acceptance Testing: This replaces the manual QA phase and checks if the features implemented by developers meet the client's requirements
- Configuration Management: This replaces the manual operations phase-configures the environment and deploys the software
Let's take a deeper look at each phase to understand what is its responsibility and what steps it includes.