Benefits and use cases of progressive delivery

Thu Feb 15 2024

Releasing software has always been a balancing act between speed and stability. You want to deliver new features and improvements to your customers quickly, but not at the expense of quality or reliability.

Progressive delivery offers a compelling solution to this challenge. By leveraging modern DevOps practices and tooling, progressive delivery enables a more gradual and controlled rollout of changes to production.

Introduction to progressive delivery

Progressive delivery is a software development approach that extends continuous integration and continuous delivery (CI/CD) with fine-grained control over feature releases. Rather than deploying everything to all users at once, progressive delivery allows you to incrementally release features to specific user segments. This targeted rollout capability is typically implemented using feature flags, allowing you to decouple deployment from release.

The key benefit of progressive delivery is risk reduction. By exposing new functionality to a small subset of users first, you can verify its stability and performance before expanding to a wider audience. If issues arise, the blast radius is contained. Progressive delivery also enables data-driven decision making, as you can gather feedback and usage metrics to iterate on features prior to full release.

Some key aspects of progressive delivery include:

  • Phased rollouts: Gradually increasing the percentage of users who have access to a feature

  • Targeted releases: Enabling features for specific user segments based on attributes like geography, device type, or account tier

  • Kill switches: The ability to quickly disable a feature if problems occur

  • A/B testing: Experimenting with multiple variations of a feature to optimize based on metrics

Origins and evolution of progressive delivery

The roots of progressive delivery can be traced back to the early days of agile software development. As teams embraced shorter release cycles and continuous integration, they encountered new challenges around managing risk and ensuring stability. Continuous delivery and deployment methodologies emerged to automate the release process, but they didn't fully address the potential impact of deploying changes to all users simultaneously.

In 2018, James Governor of RedMonk coined the term "progressive delivery" after discussions with companies like Microsoft about their "progressive experimentation" approach. The idea resonated with the DevOps community, as it built upon existing CI/CD practices while adding a layer of control and safety.

Since then, progressive delivery has gained traction across the industry. Microsoft has shared details of their "deployment rings" model, which incrementally rolls out updates to different user groups. GitHub has described their use of "staff ships" and canary deployments to test changes internally before releasing them to customers. And a growing ecosystem of feature management and experimentation platforms has emerged to support progressive delivery workflows.

By empowering teams to decouple deployment from release, progressive delivery enables a more iterative and data-driven approach to software development. Releases become less risky and more responsive to user needs. And with the ability to target specific segments and quickly toggle features on or off, product teams can innovate faster while still maintaining control.

Core tenets of progressive delivery

Release progressions are a fundamental aspect of progressive delivery. This technique involves gradually exposing new features to a growing number of users. By starting with a small subset of users, you can monitor performance, gather feedback, and identify issues before expanding to a wider audience. Canary releases and ring deployments are common methods for implementing release progressions.

Progressive delegation is another key tenet of progressive delivery. It refers to the practice of gradually shifting control over feature releases from developers to product managers. This approach allows product teams to more closely align feature rollouts with user needs and business goals. It also frees up developer resources to focus on building new capabilities rather than managing releases. For example, the staged rollout method employed by Uber is a practical implementation of this tenet.

Together, release progressions and progressive delegation form the backbone of progressive delivery. They enable teams to release features in a more controlled and data-driven manner. By gathering insights at each stage of the rollout, you can make informed decisions about when to expand or adjust your release strategy. This iterative approach helps balance the need for speed with the importance of delivering a high-quality user experience. The sequential testing approach used by companies like Pinterest is a prime example of this iterative methodology in action.

Implementing progressive delivery

Feature flags are a crucial tool for implementing progressive delivery. They allow you to control the release of new features to specific user segments. This enables granular rollouts and quick rollbacks if issues arise.

Canary testing and A/B testing are powerful techniques for validating features in production. By exposing new functionality to a small user group, you can gather performance data and user feedback before a full rollout. This helps ensure a smooth and successful launch.

Service meshes are particularly useful in Kubernetes environments. They facilitate blue-green deployments, enabling smooth transitions between application versions. This minimizes downtime and reduces the risk of disruptions during updates.

To effectively leverage these tools, it's important to have a clear strategy in place. Start by defining your release criteria and success metrics. This will guide your decision-making throughout the rollout process.

Next, establish a robust monitoring and alerting system. This will help you quickly identify and address any issues that arise during the rollout. Be sure to track key performance indicators (KPIs) and user feedback at each stage.

Finally, foster close collaboration between development and operations teams. Progressive delivery requires a shared understanding of goals and responsibilities. Regular communication and coordination are essential for success.

By following these best practices, you can unlock the full potential of progressive delivery. You'll be able to release features faster, with greater confidence and less risk. This ultimately leads to a better user experience and more successful product launches.

Benefits and use cases of progressive delivery

Risk reduction is a key benefit of progressive delivery. By releasing features incrementally, teams can quickly identify and address issues. This minimizes the impact on users and reduces the likelihood of costly rollbacks.

Enhanced collaboration is another advantage of progressive delivery. Smaller, manageable release stages foster better teamwork and communication. Development, product, and operations teams can work together more effectively, ensuring a smooth rollout process.

Data-driven decisions are at the heart of progressive delivery. Continuous feedback loops from users provide valuable insights. Teams can use this data to make informed decisions, improving feature quality and user satisfaction.

Progressive delivery is particularly useful for feature experimentation. By releasing new functionality to a subset of users, you can test different variations and measure their impact. This helps you validate hypotheses and optimize the user experience.

Gradual rollouts are another common use case for progressive delivery. Instead of releasing a feature to all users at once, you can gradually expand its availability. This allows you to monitor performance and gather feedback at each stage, ensuring a smooth and successful launch.

Progressive delivery is also valuable for canary releases. By deploying new versions to a small group of users first, you can assess their stability and performance. If any issues arise, you can quickly roll back without impacting the entire user base.

Blue-green deployments are another technique that benefits from progressive delivery. This involves running two identical production environments—one with the current version and one with the new version. You can gradually shift traffic from the old environment to the new one, minimizing downtime and risk.

Ultimately, progressive delivery empowers teams to release features faster and with greater confidence. By embracing this approach, you can deliver value to users more frequently while maintaining a high standard of quality and reliability.


Try Statsig Today

Get started for free. Add your whole team!
We use cookies to ensure you get the best experience on our website.
Privacy Policy