Progressive Delivery: A Comprehensive Guide
Progressive delivery allows development teams to control how and when new application features are rolled out to users or the cloud.
Progressive Application and Delivery - Precision and Control with Weave GitOps
Safety Fast with Weave GitOps Trusted & Progressive Delivery
Stop doing progressive delivery manually - Use GitOps instead
What is Progressive Delivery
In the traditional waterfall model, new features are released to an entire user base in a big bang release. 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. Businesses are adopting the progressive delivery approach to keep up with the pace. Progressive delivery is a game-changing methodology that promises to revolutionize software delivery.
In this blog post, discover how progressive delivery can accelerate your organization's path to success, transforming how you create, deploy, and maintain software in today's fast-paced digital environment. We focus on the origins of progressive delivery, navigate its different types, and reveal the diverse benefits it brings to the ever-shifting world of continuous delivery.
Origins of Progressive Delivery
The concept of progressive delivery, also known as progressive rollout, emerged from the need for a more refined continuous delivery process. The origins of progressive delivery can be traced to the growing demand for seamless and efficient software updates with minimal disruption to end users. The idea is to deploy features incrementally so developers can test and gather feedback, leading to higher-quality releases.
The concept was first introduced in 2018 by James Governor, co-founder of RedMonk, in a blog post. Governor built upon the existing practices of continuous delivery and feature flagging, which were already widely adopted in the industry. He saw the potential for a more sophisticated approach to address the challenges organizations face in managing modern software development’s speed, quality, and complexity.
But to go any further in the past and understand the historical context of progressive delivery, we need to look at the evolution of software development practices. As organizations began adopting agile methodologies and continuous delivery, they realized some challenges needed to be addressed. There were problems balancing speed and stability, ensuring product quality with rollbacks and recoveries, and mitigating risk overall. Progressive delivery emerged as a solution to these challenges, combining the best aspects of continuous delivery with advanced deployment strategies.
It has become an advanced approach to software release, focusing on gradually rolling out new features to a subset of customers. This method allows for better risk management and improved customer experience. In contrast to the traditional continuous delivery approach, progressive delivery provides a more controlled and safer environment for deploying updates.
What are the different Progressive Delivery Approaches?
Progressive delivery encompasses several strategies for rolling out software updates, each with unique benefits and trade-offs. Broadly there are three major progressive delivery types: rolling deployments, blue-green deployments, and canary deployments.
1. A/B testing, on the other hand, involves comparing two or more versions of a feature or application to determine which performs better based on predefined success metrics. Both techniques help reduce deployment risks, optimize user experiences, and enable data-driven software-release decision-making.
Figure: A/B Testing using Flagger
2. Blue-Green Deployments: This approach involves maintaining two identical production environments (blue and green) and alternating between them during deployment. When new features are ready for release, they are deployed to the inactive environment, and once tested, the traffic is switched over. This minimizes downtime and allows for a quick rollback if issues arise.
Figure: Blue Green Kubernetes Deployments
3. Canary Deployments: Named after the proverbial "canary in a coal mine," canary deployments release new features to a small, select group of users, often called the "canary" group. This group's feedback and usage data are monitored closely to detect any issues before the update is released to a larger audience.
Figure: Canary Releases for Progressive Traffic Shifting using Flagger
Learn how to set up and manage progressive application delivery with Linkerd, Flagger, and Weave GitOps in this blog.
Apart from the above, we also have feature flags and rolling deployments as techniques adopted in the progressive delivery paradigm.
- Feature flags enable developers to toggle specific features on or off at runtime, allowing for testing in a production environment and gradual rollout to users.
- Rolling Deployments: In rolling deployments, new features are gradually released to a small percentage of users. This allows developers to monitor the performance and user experience of the update without affecting the entire user base. If an issue is discovered, developers resolve it before the update is rolled out more widely.
To learn more about progressive deployment strategies, visit this Weaveworks blog.
What are the benefits of progressive delivery?
Progressive delivery offers numerous advantages for businesses looking to improve their software release processes. Let's dive deeper into the key benefits of progressive delivery:
1. Improve efficiency: Progressive delivery enables teams to identify and address issues early in the release process, leading to more efficient development cycles and a faster time to market. By incrementally releasing features, developers can spot bottlenecks and performance issues quickly and make necessary adjustments, significantly reducing rollback time.
2. Deploy selectively: Rolling out new features to a limited audience allows organizations to gather valuable feedback and fine-tune their offerings before making them available to the broader user base. Organizations can frequently release experimental features to select user groups, enabling them to iterate and refine based on user feedback before a full-scale rollout.
3. Target different geographic locations: Progressive delivery allows companies to deploy features to specific regions, enabling them to test how their software performs in different markets and adapt accordingly. By understanding regional preferences and performance metrics, businesses can tailor their software to cater to users’ unique needs in various locations. For example, Amazon and Google frequently test their services in specific countries or regions before making them available worldwide.
4. Reduce user pushback: Gradually introducing new features helps minimize user resistance to change, as they can acclimate to updates and provide feedback on their experiences. Progressive delivery allows businesses to manage the rate of change, ensuring that users have time to adapt and reducing the likelihood of backlash. Microsoft's gradual rollout of Windows updates is an example of progressive delivery in action, as it allowed users to familiarize themselves with the new features at their own pace.
5. Ship software faster: By breaking down feature releases into smaller, manageable chunks, progressive delivery allows development teams to ship software more quickly and efficiently. According to a recent DORA report, high performers in both 2021 and 2022 that employ progressive delivery demonstrate a significant advantage over low performers, with an estimated 417 times more deployments. And because they deploy software updates more frequently, high-performing organizations can adapt and respond to market changes more rapidly, ultimately leading to a competitive edge.
Figure: Flagger Overview Diagram - Source
6. Maintain customer trust: Progressive delivery helps maintain customer trust by ensuring that new features are thoroughly tested and optimized before being released to the wider audience. By detecting and resolving issues early, organizations can avoid large-scale disruptions that could damage their reputation and customer relationships.
According to a recent report from PwC, 55% of respondents said they would stop buying from a company they like after a few bad experiences, while 8% would stop after just one bad experience.
7. Free developers to focus on innovation: With a progressive delivery approach, developers can spend more time on innovation and experimentation rather than fixing issues caused by rushed deployments. This empowers development teams to explore new ideas and technologies, driving growth and maintaining a competitive edge.
The same has been emphasized in one of McKinsey’s recent reports. According to this report, amid economic uncertainty, 80% of the surveyed CEOs rank new-business development among their top five priorities. The study shows that sizable incumbent companies have generated $5 trillion in revenue from new ventures, which may rise to $30 trillion within the next five years. This underscores the vast potential for businesses that focus on innovation and new-business creation, signifying the significance of dedicating resources to inventive approaches that can result in augmented revenue and enduring success.
8. Lower development costs: By catching and resolving issues early in the release process, progressive delivery helps reduce development costs associated with fixing large-scale problems after a full-scale release. According to a recent CISQ report from Synopsys, in 2022, software quality issues in the U.S. resulted in an estimated cost of $2.41 trillion. This includes cyber-attacks from prevailing vulnerabilities, intricate problems related to the software supply chain, and the escalating consequences of rapidly accumulating technical debt. Adopting progressive delivery can significantly reduce these costs, allowing organizations to allocate resources more effectively.
Leveraging Progressive Delivery to drive business success
In a world where digital transformation is no longer optional, organizations must adapt and evolve to stay ahead of the curve. The race to achieve efficiency and reliability in software delivery processes is on, and progressive delivery emerges as a powerful ally in this quest. By harnessing the robust capabilities of progressive delivery, businesses can optimize release strategies, minimize risks, and elevate customer experiences, unlocking the untapped potential for growth, innovation, and competitive advantage.
De-risk Deployments with Weave GitOps’ Progressive Delivery
Implementing progressive delivery successfully requires the right tools and infrastructure to support the process. And that’s where solutions like Weave GitOps can help organizations streamline their progressive delivery workflows, providing a powerful platform for managing and automating application releases.
Flagger, the CNCF project, is part of the Flux family of GitOps tools and is an integral part of Weave GitOps - the fully automated enterprise platform powered by Flux. Weave GitOps automates application deployment (CD) and oversees progressive delivery via automatic reconciliation with Flagger. By adding Flagger to the mix, you can completely automate GitOps pipelines for canary deployments.
By embracing GitOps and progressive delivery, organizations can confidently navigate the ever-changing landscape of software development, ensuring they continue to deliver top-notch software solutions tailored to their users' needs.
Embrace the potential of progressive delivery today, and take the first step towards a more efficient, reliable, and customer-focused software delivery process. Explore how GitOps and progressive delivery can help your organization stay competitive and deliver exceptional software experiences. Contact us for a demo today.