Continuous deployment
Continuous deployment is an extension of CD, but this time, with a process that automates the entire CI/CD pipeline from the moment the developer commits their code to deployment in production through all of the verification steps.
This practice is rarely implemented in enterprises because it requires a wide coverage of tests (unit, functional, integration, performance, and so on) for the application, and the successful execution of these tests is sufficient to validate the proper functioning of the application with all of these dependencies, but also automated deployment to a production environment without any approval action.
The continuous deployment process must also take into account all of the steps to restore the application in the event of a production problem.
Continuous deployment can be implemented with the use and implementation of feature toggle techniques (or feature flags), which involves encapsulating the application's functionalities in features and activating its features on demand, directly in production, without having to redeploy the code of the application.
Another technique is to use a blue-green production infrastructure, which consists of two production environments, one blue and one green. We first deploy to the blue environment, then to the green; this will ensure that there is no downtime required:
The preceding diagram is almost the same as that of CD, but with the difference that it depicts automated end-to-end deployment.
CI/CD processes are therefore an essential part of DevOps culture, with CI allowing teams to integrate and test the coherence of its code and to obtain quick feedback very regularly. CD automatically deploys on one or more staging environments and hence offers the possibility to test the entire application until it is deployed in production.
Finally, continuous deployment automates the deployment of the application from commit to the production environment.
In this section, we have discussed practices essential to DevOps culture, which are continuous integration, continuous delivery, and continuous deployment.
In the next section, we will go into detail about another DevOps practice, which is IaC.