Progressive delivery is the process of pushing changes to a product iteratively, first to a small audience and then to increasingly larger audiences to maintain quality control (QC). The goal of progressive delivery is to improve delivery times for new product features and mitigate risk by controlling who is able to see them.
In software development, a progressive delivery approach allows new code to be deployed in production. Code changes are delivered to small, low-risk audiences first and assessed for quality assurance (QA) before they become available to larger, riskier audiences. IBM, Microsoft and Target are among the companies that use a progressive delivery approach to rolling out new code.
How progressive delivery works
Generally, the first audience to receive new features and code changes is composed of expert users or groups of people who use the product for small projects that are not time sensitive. The initial rollout to this first, low-risk group is often referred to as a canary launch and code changes are referred to as the canary.
Like the canary in a coal mine, the end user who is selected to receive new code in a canary launch is unaware they are being used to provide an early warning that something is wrong. Because the canary is only distributed to a small number of users, its impact is relatively small and changes can be reversed quickly should the new code prove to be buggy.
After the canary launch, the size of the audience is progressively increased as the DevOps team gains confidence in the stability and functionality of the system.
Progressive delivery vs. continuous delivery
Progressive delivery is very similar to continuous delivery. Both approaches involve pushing changes and updates out as soon as they are ready instead of aggregating them and waiting for the next product release.
The difference, however, is that progressive delivery provides an additional level of control through the use of feature flags. Feature flagging is a best practice that involves wrapping code change with a flag that specifies what attributes have to be met before the code will execute.
Feature flag management platforms, like that offered by LaunchDarkly, allow DevOps engineers to turn feature flags on or off for various subsets of users through one dashboard and conduct rollbacks at the application level. These are two important considerations for any organization that wants to roll out code through a progressive delivery model.
Advantages of progressive delivery
IT professionals that use progressive delivery encounter the following benefits:
- The ability to plan for failure and accommodate it.
- The ability to quality-control new features in a production environment.
- The ability to collect feedback from canary tests and make improvements before rolling changes out to everyone.
- The ability for non-engineering teams, such as marketing or sales, to release features to users on a just-in-time basis.