https://www.techtarget.com/searchitoperations/definition/continuous-delivery-CD
Continuous delivery (CD) is an approach for software delivery in which development teams produce and test code in short but continuous cycles to improve software quality. This process helps development teams build, test and deploy software quickly by encouraging more incremental updates as opposed to spending a large portion of time on a complete overhaul of a given product.
Continuous delivery is a popular approach for software delivery, especially for teams that practice DevOps. It is typically paired with continuous integration to form a chain of processes for software development, deployment and feedback loops called a CI/CD pipeline. CD processes normally have high degrees of automation.
In continuous delivery, code is delivered on a regular basis to user acceptance testing or to a staging environment. Code is tested for all aspects of functionality to reduce unexpected performance problems in production. Any component that passes the automated tests is a valid candidate for release. At this final stage, continuous delivery triggers a final human check and then a push to deployment. Alternatively, the build can be automatically deployed, a step called continuous deployment.
With continuous delivery, testing occurs early -- a concept sometimes referred to as "shift left." This lets developers work on fixes before they move on to other aspects of development.
There is not one standard continuous delivery pipeline. The common denominator between typical pipelines is the focus on subjects like automated builds, tests and staging deployments into one continuous process. The following are general stages in a CI/CD process:
Pairing continuous integration with continuous delivery ensures code worked on by multiple developers from multiple locations is integrated into a single repository. Note that this requires continuous testing to keep up with workflows.
Continuous delivery offers several benefits over traditional application development and deployment, including Waterfall:
CI/CD environments are an important security concern to watch out for, however. Misconfiguration could expose sensitive data and create an entry point for malicious actors.
Continuous delivery is commonly used in the DevOps paradigm. DevOps is meant to be a collaborative approach to the tasks performed by application development and IT operations teams, often with an emphasis on automation. The goals of DevOps and continuous delivery align to allow a continuous workflow. One of the main focuses in continuous delivery is to build, test and release software quickly, which DevOps teams also strive for.
Large and small DevOps organizations use continuous delivery for benefits such as faster and higher quality software development, release processes and code commits. DevOps and continuous delivery can be overlapping processes, and having these processes happen in shorter cycles helps make this possible.
Continuous delivery is an extension of continuous integration, a software development practice in which frequent, isolated changes are immediately tested and added to a larger code base. Whereas CI deals with the build and initial code test part of the development cycle for each release, CD focuses on what happens after committed changes are built.
CI is a way to merge all developers' copies of code into a code base frequently. Isolated changes are tested and integrated quickly with unit and integration tests. Continuous integration gives a development team specific feedback on changes or additions to the code base. If a bug is introduced, the code tests in CI should reveal it before the code moves closer to release.
With continuous delivery, any commit that passes the automated tests is potentially a valid candidate for release. CI lets an organization have automated testing and staging processes, which help developers decide when and how often to deploy their code into production.
It is important to note, however, that the CD in CI/CD might also refer to another phrase that is closely related: continuous deployment.
Continuous delivery and continuous deployment are similar concepts that are commonly confused with each other. Both are used in concert with continuous integration, which is why the term CI/CD is also commonly confused.
The key difference is what happens during the deployment process. In continuous delivery, code flows automatically through multiple steps to prepare it for production deployment, but does not automatically go live. The code changes must first be manually approved, potentially involving manual testing and quality assurance to do so.
In continuous deployment, code can be automatically tested, vetted and released into a production environment, where it is automatically scaled with user demand and monitored for any problems that would necessitate a rollback.
Continuous delivery also usually involves a production-like staging area. There is often a time lag between a software review and software release (when changes are manually accepted) and when new code is released to production.
This is where the advantage of continuous deployment comes in. The time lag found in continuous delivery is eliminated. Continuous deployment also does not require a staging area for code changes. Instead, automated testing is integrated early in the development process and continues throughout all the phases of the release.
Both continuous delivery and deployment rely on real-time infrastructure provisioning and application monitoring tools to discover problems not caught in the testing feedback loops.
Continuous integration, delivery and deployment are collectively referred to as continuous software development. They are all also associated with the Agile and DevOps methodologies.
There is a plethora of open source and commercial tools available at each stage of continuous delivery. Some tools offer functionality across aspects of both CI and CD.
Generally, software teams that practice CI/CD use various tools:
These tools all integrate within a continuous pipeline, and some offer capabilities that are useful in multiple steps. Organizations also rely on monitoring tools for production and capacity management as well as containers for consistent software deployment in different environments. These different environments include development, test, production and integrated development environments.
Public cloud providers such as Amazon Web Services (AWS) and Microsoft Azure also offer integrated sets of continuous delivery tools. Developers and IT operations can use these tools for code development, deployment, and production as well as for monitoring and scaling.
An incomplete list of CI/CD tools that perform some aspect of continuous delivery -- and, in some cases, other CI/CD steps -- includes the following:
Continuous delivery provides an organization with a fast-paced development environment. Learn more about the pros and cons of a CI/CD pipeline.
18 Mar 2024