Building and testing an application in testing and staging environments ensures that the code is compatible with production infrastructure. When done manually, subtle differences between environments can make this a complicated process that is prone to human error. Continuous delivery addresses this issue through automation.
Continuous delivery is the automated process of preparing new versions of an application to be deployed into the production environment. Picking up where continuous integration left off, continuous delivery automates:
- Environment configuration through containerization and infrastructure as code
- Deployment to intermediary environments (testing, staging, etc…)
- Further testing (acceptance and end-to-end tests)
Sometimes, an application that runs well in the development or testing environment will crash if deployed to production. DevOps practices, such as containerization and Infrastructure as Code (IaC) can be incorporated into continuous delivery to resolve these issues.
Through continuous delivery, developers can be confident that the application has been thoroughly tested and is ready to be deployed at any time.
Watch the animation to see how the application is moved through intermediary environments.
What are the three main aspects of the deployment process that continuous delivery automates?
See the answer!
The automated continuous delivery system controls server configuration, deployment to intermediary servers, and automated testing (acceptance and end-to-end tests).
After continuous delivery has been set up, many companies would consider this to be a complete pipeline. The main goal of the pipeline is to have a thoroughly tested application that is ready to be used. Automatically deploying is an optional step that is up to the business instead of the engineering team. At this point in the pipeline, the goal has been achieved, but to enhance it further, Continuous Deployment can be incorporated.