When testing in production is no longer a scary thought at your organization, you’ve reached a significant milestone. You’ve invested in highly automated testing and, most likely, your pipelines and necessary culture shifts. You’re seeing those investments pay off in higher velocity and higher quality.
So, if your organization is already comfortable with shifting testing left in the software delivery lifecycle, what’s the next step in your DevOps journey?
Progressive delivery is a continuation and natural evolution of the concepts of continuous integration (CI) and continuous delivery (CD). In progressive delivery, developers roll out features incrementally, first to a small, low-risk audience (such as internal QA teams) and eventually to real users in a controlled, measured manner.
It’s a repeatable, automated way to test and learn in production using real behavior and feedback from users. Like canarying, A/B testing or blue-green deployment, the end goal is to ensure that higher-quality code reaches users fast.
“Progressive delivery is about de-risking with velocity,” said James Governor, co-founder of RedMonk and originator of the term “progressive delivery.”
DORA research has found that elite performers have 208 times more frequent code deployments than lower performers, and the change failure rate among the elite group is seven times lower. Establishing a culture of production excellence is key to lowering failure rates, and progressive delivery practices are one way to reach that goal.
Major tech organizations like Uber, Netflix, Twitter and Facebook were already implementing this set of practices before Governor gave them a name in 2019. If your enterprise is considering a progressive delivery approach, the first step is to make sure you’re ready. This article outlines what your organization needs to consider before adopting progressive delivery.
Are You Ready for Progressive Delivery?
If your team wants to move forward with progressive delivery, you need certain fundamentals in place, according to Erez Rusovsky, director of product management at CloudBees.
Mature CI Practices
Continuous integration (CI) is one of the core best practices of agile development. Developers should be merging changes as often as possible into the main branch.
Mature CD Practices
Your code should make it into production without a manual fire drill each time. You should have some level of automation in place, but you don’t need to have continuous deployment. If you use feature flags, continuous deployment isn’t necessary.
Feature Flags
You need some level of feature flag capabilities. Feature flags allow fine-grained control at the feature level, which is an essential aspect of progressive delivery.
Building a Repetitive Practice
“If you want to do one-off progressive delivery, you probably need just these three components--or maybe even just feature flags,” Rusovsky said. “If you want to have a repetitive practice for progressive delivery around your software delivery activities, especially at enterprise scale, you will need to integrate.”
There are four key considerations for tying CI/CD and feature flags together into an integrated software delivery backbone and prepare you for repeatable progressive delivery at enterprise scale. CloudBees Software Delivery Automation offers these capabilities.
1. Common Visibility of Feature Flags
Your CD pipeline should be able to receive feature flags as input, and it should be aware of the gated features in each release according to the environment. It should be able to present the configuration of your feature flags as well as current release criteria.
2. Common Controls and Governance
Your CD pipeline should be able to change the value of individual features, update feature flag targeting, control feature flag change permissions (such as user permissions and checks before advancing to the next state of the pipeline) and ingest feature flag audit logs (to understand who opened particular features, and when).
3. Smart Automation
CD typically has a tactical focus, but to move to the next level of DevOps maturity, your team may consider shifting your focus to features. Your CD pipeline should be able to ingest performance data connected to feature flags, produce feature release templates and define consistent rollout and rollback policies.
4. Process and Culture Shift at the Organizational Level
Progressive delivery involves as much of a cultural transition as a technological one. Your organization will need to get comfortable with releasing “incomplete” code. It should understand that the production version of your application is not a single source of truth. You’ll also need to establish feedback and revision processes for features being tested in production, and determine who is responsible for releasing features (such as release management, developers, EMs or PMs). Finally, feature flags must be managed before they turn into technical debt. Eventually, they will lose their relevance, and they should be removed at the right time.
Enterprise progressive delivery is a journey and the cultural shift is an ongoing process. Arriving at a repeatable, automated means of understanding and adjusting to real user data in production can bring your organization to the next level.
To learn more about how progressive delivery can be implemented in the enterprise, check out the CloudBees webinar “Release Management in the Progressive Delivery Era.”