Other meanings of Continuous delivery
Software Engineering
Continuous delivery (CD) is a software engineering practice in which software changes are automatically built, tested, and prepared for release to production, enabling frequent and reliable releases in short cycles. It extends continuous integration by ensuring that the software is always in a deployable state, and it is often paired with continuous deployment, which automates the actual release.
Continuous delivery is a software development discipline where software is built in such a way that it can be released to production at any time. The core principles include: a repeatable and reliable process for deploying software, automation of all steps from code commit to release, and the use of a deployment pipeline that provides fast feedback. The goal is to make releases low-risk and frequent, enabling organizations to deliver value to users quickly and respond to market changes.
The practice is often contrasted with continuous deployment, where every change that passes automated tests is automatically released to production. Continuous delivery stops short of that, requiring a manual approval step before production release, but the software is always in a releasable state.1
The term "continuous delivery" was popularized by Martin Fowler and Jez Humble in the mid-2000s, and their 2010 book Continuous Delivery became a foundational text.2 The practice evolved from earlier ideas like continuous integration and extreme programming, which emphasized frequent integration and automated testing. The rise of DevOps culture in the late 2000s further integrated development and operations, making continuous delivery a key practice.
Notably, the concept of a "deployment pipeline" was formalized in the book, describing a staged process where each stage provides increasing confidence in the software's readiness for production.3
Continuous delivery relies on several key practices: version control for all artifacts, automated testing at multiple levels (unit, integration, acceptance), automated deployment to staging environments, and a single command to deploy to production. Tools such as Jenkins, GitLab CI, and CircleCI implement these pipelines, and infrastructure as code (e.g., Terraform, Ansible) ensures consistent environments.
An often-overlooked practice is "configuration management," where environment-specific settings are managed separately from code, allowing the same artifact to be deployed across environments. Another is "feature toggles," which allow incomplete features to be merged into the mainline while being hidden from users, enabling continuous integration without breaking the release.4
The primary benefits of continuous delivery include reduced release risk, faster time to market, higher quality, and improved team morale. A 2018 report by the DevOps Research and Assessment (DORA) group found that high-performing teams using continuous delivery deploy 208 times more frequently and have 106 times faster lead times than low performers.5
Challenges include the need for a strong testing culture, significant upfront investment in automation, and organizational resistance to change. Additionally, continuous delivery requires a shift in mindset from large, infrequent releases to small, incremental ones, which can be difficult for teams accustomed to traditional release cycles.
One lesser-known aspect is the "strangler pattern" for legacy systems, where continuous delivery is introduced incrementally by gradually replacing old components. Another is the use of "canary releases" and "blue-green deployments" as advanced techniques that complement continuous delivery, allowing for safe rollouts and instant rollbacks.
In regulated industries like healthcare and finance, continuous delivery faces unique hurdles, but frameworks like "continuous compliance" integrate automated checks into the pipeline. Also, the concept of "continuous delivery for machine learning" (CD4ML) has emerged, applying the same principles to ML models, which introduces challenges like data versioning and model validation.6
Continuous delivery is a cornerstone of modern software engineering, enabling organizations to deliver value rapidly and reliably.
Help improve the encyclopedia. Reports go straight to the site manager.