continuous deployment

Share This

Continuous deployment is a software release strategy in which any code commit that passes automated testing is immediately released into the production environment. Continuous deployment pipelines are managed with tools that emphasize code testing prior to and after deployment.

During the software development process, version control and build automation tools, such as Jenkins, can help ensure the smooth delivery of code. Monitoring tools that track and report changes in application or infrastructure performance due to the new code are also important.

Ideally, monitoring and incident response for continuous deployment setups should be as close to real time as possible to shorten time to recovery when there are problems in the code. In addition, it’s important to have rollback capabilities so that any unexpected or undesired effects of new code in production can be identified and fixed quickly.

Although continuous deployment emphasizes automated testing, organizations that implement the strategy also rely on human-driven controls to safeguard against user disruption. Popular strategies for integrating human employees into QA testing in a continuous deployment environment include canary deployments in which code is released to a small number of users so its impact is relatively small and negative impact can be reversed quickly. Some applications can deploy in containers, such as Docker, to isolate updates from the underlying infrastructure.

The difference between continuous deployment and continuous delivery

The terms continuous integration, delivery and deployment are collectively referred to as continuous software development and are associated with the Agile and DevOps software development methodologies.

While continuous deployment and continuous delivery sound similar and share the same acronym, they are not the same thing. Continuous delivery typically uses a production-like staging area for quality assurance (QA) testing. In contrast, continuous deployment does not require a staging area because automated testing is integrated early in the development process and persists on a continuous basis.