Balance innovation and agility with security and compliance
risks using a 3-step process across all cloud infrastructure.
Step up business agility without compromising
security or compliance
Everything you need to become a Kubernetes expert.
Always for free!
Everything you need to know about Magalix
culture and much more
The term progressive delivery was first introduced in 2018 by James Governor of Redmonk to describe a set of technologies associated with modern software, testing, and deployment. These technologies include canarying (canary releasing), feature flagging, and A/B testing with the end goal of deploying new features and fixes at speed while minimizing risk.
What is progressive delivery? What are the core tenets of this approach? How can you get started with automated progressive delivery? We will answer all of these questions in this blog.
In the traditional waterfall model, new features are released to an entire user base in a big bang release. On the other hand, progressive delivery is about gradually rolling out the features to select users. Developers and DevOps teams can incrementally roll out and deliver new features with fine-grained controls to a small group of users to minimize the risks of pushing new features to the production environment. If the newly released feature proves to be stable and performant with the small audience, it can then be expanded and released to all users.
Built upon the core tenets of continuous integration and continuous delivery (CI/CD), progressive delivery’s value is all about speed and risk mitigation.
Progressive delivery involves one or more of these feature release strategies and is used to upgrade or change a running instance of an existing application.
Figure: Canary Releasing
Figure: Blue-Green Deployments
Figure: A/B Testing
If you want to learn more about Kubernetes deployment strategies, check out the Weaveworks blog here.
The ultimate goal of progressive delivery is to help teams pursue CI/CD safely. By gradually rolling out new changes and providing early feedback, teams can isolate and fix potential issues with a particular feature and minimize the deployment risk. If the newly introduced features contain negative changes, the developer can revert those changes to avoid the users seeing those changes.
Organizations that adopt progressive delivery approaches encounter many benefits, including:
1- Improved Release Frequency. With the incremental and progressive delivery of any software, DevOps teams can deploy new versions in smaller batches, and thus release faster. Each feature can be developed and battle-tested in isolation and deployed in a smaller sprint. This realizes the ultimate goal of any DevOps team - to release better software faster.
2- Lower Development Costs. This delivery model gives developers and DevOps teams ample time to find and fix bugs before a full release. A recent study suggests that fixing defects in production can cost 100x times more than the design stage.
3- Selective Deployments. With progressive delivery, you can deploy new features to select user groups, iron out any potential issues, and gather feedback before deploying to production.
4- Mitigate Risk and Deliver Code Safely. Organizations that use this method roll out new features gradually, to a small, low-risk audience and then release them to users in a controlled manner. Doing so ensures that any bugs or software defects are caught early on with minimal impact for all the user base.
Implementing progressive delivery can be done in several ways. One popular approach is using the feature flagging tool that turns a feature ‘on’ or ‘off.’ Other available options include leveraging a cloud vendor service such as AWS API Gateway to split traffic between multiple AWS services.
There’s no doubt about it. Progressive delivery offers organizations many benefits, and the current popular solutions to implementing this approach are far from the Kubernetes ecosystem. They involve manual work to enable and disable vendor-specific tooling - a less than ideal solution in a world full of automation and a plethora of cloud-native tools.
GitOps, the Git-centric process for application deployment, is a viable solution for progressive delivery in the cloud-native sphere. The entire system is declared in Git, which is regarded as the single source of truth, and production environments are created as replicas of the Git repositories. With GitOps, you can implement complex deployments with more control and in an automated manner. A failed deployment can be easily rolled back to a previous version.
When it comes to progressive delivery, GitOps allows you to:
Flagger, an open-source GitOps tool, is used to manage progressive delivery of applications. Integrating with service meshes like Istio, Linkerd, or Kuma, Flagger controls the traffic flow between the multiple versions of an application. To better understand how Flagger works with service mesh tools, read this post on using Flagger with Linkerd or Flagger with Kuma Mesh.
Self-service developer platform is all about creating a frictionless development process, boosting developer velocity, and increasing developer autonomy. Learn more about self-service platforms and why it’s important.
More and more businesses are adopting GitOps. Learn about the 5 reasons why GitOps is important for businesses.