Software delivery models have come a long way, adapting to changing infrastructure, business needs, and development constraints.
Trends and techniques evolve rapidly, each bringing unique value propositions and challenges. The evolution has been impressive from the waterfall methodology to agile and then to Continuous Delivery.
One such development methodology that has made its mark in recent years is Progressive Delivery. While it's no longer a brand-new trend, its significance in software delivery remains paramount.
"Progressive delivery is the practice of rolling out an application in a managed fashion to designated cohorts, making canarying, blue/green deployments, and A/B testing foundational to testing and deploying applications."
James Governor, RedMonk
The Evolution of Software Delivery
Software delivery has been closely tied to how software is distributed and consumed. Initially, software was coupled with hardware releases, so the waterfall methodology's long cycles matched the hardware design and manufacturing timelines. As software became decoupled from hardware, agile methodologies emerged to incorporate customer feedback through techniques like beta testing. However, major course corrections were still challenging as the development cycle progressed.
With the advent of Software-as-a-Service (SaaS) and cloud-native architectures, Continuous Delivery became possible. Frequent automatic updates were introduced but with the risk of exposing bugs immediately to the entire user base. This is where the concept of Progressive Delivery comes in.
Understanding Progressive Delivery
Progressive Delivery can be defined as a controlled, incremental approach to software delivery. It is designed to reduce the risks of releasing new features and updates by allowing teams to control who sees what and when. This is achieved through various mechanisms, including:
Feature Flags: These allow developers to toggle features on and off for specific user groups, providing a safety net for new releases.
Canary Releases: By first rolling out updates to a small subset of users, teams can monitor and resolve any issues before a full-scale release.
A/B Testing: This enables teams to experiment with different feature versions and compare their performance.
Observability: Monitoring feature performance provides insights into user behavior and system health.
Rollbacks and Roll Forwards: If issues arise, quick reversions or advancements can be made without impacting the overall user experience.
The Benefits of Progressive Delivery
Progressive Delivery offers benefits for both developers and businesses. For developers, it enables speed and safety by allowing new features to be rapidly pushed to production behind feature flags, which can then be rolled out gradually based on readiness. This fosters a "built for failure" mentality and empowers developers to focus on building features without worrying about immediate exposure.
Progressive Delivery provides more control over feature exposure and rollout cadence for businesses, allowing product teams to leverage user feedback to shape iterations rather than react to issues. This results in faster innovation, reduced risk, and better engagement with end users.
In essence, Progressive Delivery separates deployment from release, giving developers the freedom to build and businesses the power to decide when customers are ready.
Progressive Delivery in the Real World
Leading technology and non-tech companies have embraced Progressive Delivery principles:
Microsoft relies on canary deployments and blast radius considerations for their online services.
IBM leverages feature flags to manage updates across thousands of Kubernetes clusters.
JetBrains Space team uses feature flags to try out new functionality with minimal risk and minimal user impact, tracking the entire feature lifecycle from design to deployment.
Mozilla and their nightly and beta versions of Firefox, and Google, with its canary release channel for Chrome.
These examples demonstrate how recognizable brands across industries tap into Progressive Delivery to balance agility and control.
Future of Progressive Delivery
While Progressive Delivery has certainly carved its niche in the software development landscape, but it's not without its challenges. Successful implementation requires seamless collaboration between developers, ops, and business teams, and a solid alignment of workflows. The technology landscape catering to Progressive Delivery is still evolving, with companies like LaunchDarkly, Micro Focus, and Microsoft leading the charge.
That being said, as we move towards a future where digital transformation and software complexity intensify, Progressive Delivery offers a promising way to balance agility with control. It aligns well with standardized development environments such as Daytona, providing a management layer that puts the sophisticated routing and delivery workflows into practice.
While not a new trend, Progressive Delivery remains a strategic approach in the software delivery ecosystem, helping teams deliver high-quality software with reduced risks and improved control. It's a testament to the ongoing evolution of software development methodologies, serving as a cornerstone for the future of efficient, effective, and user-centric software delivery.