continuous deployment (original) (raw)

Continuous deployment is a strategy for software development and releases in which every code change is automatically run through a pipeline of tests and inspections before being pushed into production.

Continuous deployment eliminates the human safeguards against unproven code in live software. It should only be incorporated when the development and IT teams rigorously adhere to production-ready development practices and thorough testing as well as when they apply sophisticated, real-time monitoring and metrics in production to discover any issues with new software releases.

How does continuous deployment work?

The purpose of continuous deployment is to accelerate development and reduce the time it takes for changes to reach end users.

To apply continuous deployment, a continuous integration (CI) system is typically used to automatically build and test changes to the codebase. Once the changes have passed all tests, they're automatically deployed to a production environment. This can be achieved using deployment pipelines, which automate the process of building, testing and deploying updates. The continuous delivery pipeline includes various steps, such as building the code, running automated tests, deploying to staging environments, testing in those environments and deploying to production.

Continuous deployment relies heavily on automation to ensure that changes are deployed consistently and reliably. Development teams can quickly discover and correct issues, reduce the risk of introducing defects, and ultimately deliver value to end users at a faster pace by continuously deploying code updates.

Benefits of continuous deployment

Continuous delivery offers development teams the following advantages:

Continuous deployment vs. continuous delivery

Continuous integration, delivery and deployment are collectively referred to as continuous software development, and they're associated with the Agile and DevOps methodologies. Continuous delivery and deployment originate from continuous integration, a method to develop, build and test new code rapidly with automation so only code that's known to be good becomes part of a software product.

Continuous deployment isn't the same thing as continuous delivery, although the two terms are often confused.

Continuous delivery occurs when developers frequently hand off new code to the quality assurance and operations teams for testing. Continuous delivery usually involves a production-like staging area, and there's often a time lag between a release and when it's reviewed, when changes are manually accepted and when the new code is released to production.

In contrast, continuous deployment doesn't require a staging area for code changes to be manually reviewed and verified. Automated testing is integrated early in the development process and continues throughout all the phases of the release. One of the main benefits of continuous deployment is that there's no time lag between when a code change passes application- and platform-level testing and when it moves into live production.

continuous delivery process vs. continuous deployment chart

Although the two terms are often confused, continuous delivery and continuous deployment differ in how code changes are released to production.

Both continuous delivery and continuous deployment rely on real-time infrastructure provisioning and application monitoring tools to discover any problems that weren't caught in the testing feedback loops before deployment. Testing and monitoring are more crucial in the continuous deployment process because there's no human intervention for performance verification.

Regulatory compliance or other restrictions can prevent an IT organization from adopting continuous deployment. Other considerations, such as the maturity of DevOps processes and best practices within the IT organization, should also influence the decision of whether to deploy code on a continuous delivery basis, a continuous deployment basis, or some combination of the two approaches based on the application and users.

Continuous deployment tools

Continuous deployment pipelines use tools like those used in continuous delivery, with an enhanced emphasis on code testing prior to and after deployment into production.

The following are some of the most important tools in a continuous deployment workflow:

Rollback capabilities are necessary in the deployment tool set so that any unexpected or undesired effects of new code in production can be caught and mitigated quickly. Organizations can rely on canary deployment, sharding, blue/green deployment, feature flags or toggles, and other deployment controls to safeguard against user disruption from continuous deployment.

When deciding to implement a CI/CD pipeline, there are many factors to consider. Discover the various stages involved in a CI/CD pipeline, the advantages and difficulties, and recommended approaches.

This was last updated in June 2023

Continue Reading About continuous deployment

Dig Deeper on DevOps