Rolling deployment vs progressive delivery: Choosing a deployment strategy
Rolling deployment
Rolling deployment is a strategy where a new version of an application is gradually released to production by replacing instances of the previous version one at a time. This approach ensures that there is no downtime during the deployment process, as the application remains available while instances are being updated. It provides a balance between deployment speed and risk management.
With rolling deployments, if an issue is detected during the deployment process, only a portion of the infrastructure is affected, limiting the blast radius of potential problems. This makes it easier to roll back to the previous version if necessary. However, it requires that both old and new versions of the application can coexist during the transition period, which may present compatibility challenges.
Progressive delivery
Progressive delivery extends the concept of rolling deployments by adding controlled exposure and user targeting. Instead of simply replacing instances, progressive delivery introduces new versions to specific subsets of users based on criteria such as geography, user segment, or opt-in status. This allows teams to validate changes with limited user impact before expanding the rollout.
A key aspect of progressive delivery is the incorporation of automated quality gates that evaluate performance, error rates, and user feedback. These metrics determine whether the deployment should continue, pause, or roll back. By gathering real-world data during the deployment process, teams can make data-driven decisions about release progression, significantly reducing the risk of problematic deployments reaching all users.
Comparing rolling deployment and progressive delivery
AspectRolling DeploymentProgressive DeliveryRisk LevelModerate risk as all instances eventually receive updates simultaneously.Lower risk due to controlled exposure limited to specific user segments.ComplexitySimpler to implement with standard orchestration tools.More complex, requiring advanced traffic routing and user targeting capabilities.Feedback LoopFeedback obtained after deployment reaches all instances.Continuous feedback during gradual rollout informs deployment decisions.Recovery ProcessRequires rolling back affected instances if issues are detected.Limits impact by quickly redirecting traffic away from problematic versions.Monitoring RequirementsBasic monitoring of application health metrics.Sophisticated monitoring comparing performance between versions and user segments.Suitable ForApplications with straightforward deployment needs and good test coverage.Critical applications where minimizing user impact is paramount.
Feature flags with rolling deployment
In a rolling deployment strategy, feature flags serve as a safety mechanism that can decouple deployment from release. Teams can deploy new code to production with features turned off, allowing the infrastructure update to complete without exposing new functionality. Once all instances have been updated and verified stable, the feature flag can be enabled, instantly activating the new feature across all instances without requiring another deployment.
This approach enhances rolling deployments by adding an additional layer of control over feature exposure. If issues arise after enabling a feature, teams can quickly disable it without rolling back the entire deployment. This combination provides operational stability during the infrastructure update phase while maintaining fine-grained control over feature availability, effectively reducing the coordination challenges that can occur when both code and features need to be released simultaneously.
Feature flags with progressive delivery
Feature flags are a cornerstone technology that enables progressive delivery, providing the control mechanism for granular release management. With progressive delivery, feature flags can be configured to expose new functionality to increasing percentages of users or specific cohorts while monitoring key metrics. This creates a controlled experiment where teams can validate both technical performance and business impact before committing to a full release.
Progressive delivery leverages feature flags to create sophisticated release patterns such as canary releases, A/B testing, and blue/green deployments. For example, a new feature might first be enabled for internal users, then beta testers, followed by 5% of regular users, expanding to 20%, and eventually 100% if performance metrics remain positive at each stage. This highly controlled rollout strategy reduces risk by limiting initial exposure and expanding only when data supports the decision, making feature flags an essential component rather than just an additional tool in the progressive delivery approach.
Rolling deployments and progressive delivery are both strategies aimed at reducing risk when deploying software changes, but they differ in key aspects of implementation and monitoring. Rolling deployments involve updating instances of an application one by one or in batches, ensuring continuous availability as the deployment progresses gradually across the infrastructure. This approach minimizes downtime and allows for easy rollbacks if issues arise. However, rolling deployments typically apply changes to the entire user base simultaneously once an instance is updated, which means all users experience the change at once, potentially exposing problems to everyone if something goes wrong.
Progressive delivery, on the other hand, extends the rolling deployment concept by incorporating targeted exposure through techniques like canary releases, feature flags, and A/B testing. This approach allows teams to release features to a small subset of users first, gather feedback and metrics, and gradually increase the rollout based on real-world performance data. Choose rolling deployments when you need a straightforward approach with minimal downtime for well-tested changes in stable environments with reliable rollback procedures. Opt for progressive delivery when dealing with higher-risk changes, when you need more granular control over who receives updates, or when you want to validate features with real user feedback before full deployment. Progressive delivery requires more sophisticated infrastructure and monitoring capabilities, but offers superior risk management for complex or critical applications.
Frequently asked questions
What is rolling deployment?
Rolling deployment is a strategy where a new version of an application is gradually released to production by replacing instances of the previous version one at a time. This approach ensures that there is no downtime during the deployment process, as the application remains available while instances are being updated. It provides a balance between deployment speed and risk management.
What is progressive delivery?
Progressive delivery extends the concept of rolling deployments by adding controlled exposure and user targeting. Instead of simply replacing instances, progressive delivery introduces new versions to specific subsets of users based on criteria such as geography, user segment, or opt-in status. This allows teams to validate changes with limited user impact before expanding the rollout.
What are the key differences between rolling deployment and progressive delivery?
Rolling deployments typically apply changes to the entire user base as instances are updated, while progressive delivery incorporates targeted exposure through techniques like canary releases and feature flags. Progressive delivery offers lower risk due to controlled exposure to specific user segments, but requires more complex implementation with advanced traffic routing capabilities. Rolling deployments are simpler to implement but carry moderate risk as all instances eventually receive updates.
How do feature flags enhance rolling deployments?
Feature flags serve as a safety mechanism in rolling deployments by decoupling deployment from release. Teams can deploy new code to production with features turned off, allowing the infrastructure update to complete without exposing new functionality. Once all instances have been updated and verified stable, the feature flag can be enabled, instantly activating the new feature across all instances without requiring another deployment.
What role do feature flags play in progressive delivery?
Feature flags are a cornerstone technology for progressive delivery, providing the control mechanism for granular release management. They allow teams to expose new functionality to increasing percentages of users or specific cohorts while monitoring key metrics. Progressive delivery leverages feature flags to create sophisticated release patterns such as canary releases, A/B testing, and blue/green deployments.