As the recent global software outage has shown, one of the most top-of-mind items for software teams across industries is how to minimize the inherent risks of software delivery. In a recent blog post, we covered several risk mitigation strategies for software releases. In this post, we’ll take some inspiration from a recent IDC report, ‘Optimizing Software Delivery by Harnessing the Full Potential of Feature Flags’, to look at how progressive delivery can help engineering organizations more safely deliver their code to end users.
Progressive Delivery
Progressive delivery is the process of incrementally exposing new features to internal and external users in order to iterate on features and catch any bugs before they affect a significant portion of your user base. In a recent IDCs DevOps Survey, around two-thirds of respondents indicated they are expanding, using, or piloting progressive delivery, with 45% indicating they are using feature flags to do so.
As the report calls out, “Organizations must shift from ceremonial releases to more progressive, granular, agile, and feature-focused delivery strategies.” So how do feature flags enable progressive delivery? Developers can use feature flags to gradually release features to different user segments. This phased approach helps gather feedback and monitor the impact of features on specific user groups before a broader release, ensuring a personalized and optimized experience.
Releasing Progressively
Below are a few common release strategies/patterns that our customers employ with LaunchDarkly. These release strategies each constitute a part of a broader progressive release strategy. You can enact the following strategies through feature flags and targeting in LaunchDarkly.
Percentage rollout
Reduce the risk of releasing new features and ensure a high-quality user experience by rolling out to a random sample of users by percent. Read more about percentage rollouts.
Canary release
A canary release allows you to test a software update in a live production environment with a subset of users, allowing you to see whether the changes break production. And if it does break production, you’ve limited the blast radius.
To maximize efficacy, ensure that the small group in your canary release is representative of your overall end users. For example, a canary release that only goes out to people with the latest phones may miss problems that occur on older versions of a phone's operating system. Read more about canary releases.
Internal release
Test and validate a feature in a production environment with a small group of internal testers before making it widely available. This is distinct from QA testing, which usually occurs in a pre-production environment (less realistic setting). This strategy is useful for internal enablement and training before GA.
Entitlement releases
You might want a flag that affects end user permissions or access to certain features. These flags affect what end users can do in your platform, or their entitlements. You can use an entitlement release to add a feature that is only intended for a portion of your user base. For example, if you had a premium service, you could configure the release so that the feature was only available to people who had paid a membership fee.
To learn more, readUsing entitlements to manage customer experience.
Blue-Green Deployments
A blue-green deployment is an application release strategy for safely updating apps in production with no downtime. This deployment process involves creating two identical instances of a production app behind a load balancer. As there are two production apps at any given time, one app is live and receives user traffic (this is the blue environment), while the other app (green) receives constant updates from your team's continuous integration (CI) server. Once you have ensured the green environment is stable, and the new features are working, you can transfer production traffic over to the new application (green). The blue version is now on standby in case you need to roll back to the old version of your application. Read more about Blue-Green deployments here.
Benefits Of De-Risking Releases with Progressive Delivery
The IDC report also covers some of the benefits that LaunchDarkly customers have called out from de-risking software releases with feature flags and progressive delivery:
• More frequent application releases with enriched collaboration among internal teams and stakeholders across the delivery pipeline
• Improved production reliability for enhanced digital experience and customer loyalty
• Enhanced operational resilience with quantifiable improvements in the mean tie, between failures and time to remediation
• Improved confidence across development and operations in application changes due to fast agile rollbacks and experimentation
• Improved developer and site reliability engineer experience due to uneventful application updates that have led to improved
employee morale and retention
To learn more about how you can mitigate the inherent risk of introducing changes to your software in production, download the IDC report ‘Optimizing Software Delivery by Harnessing The Full Potential Of Feature Flags’. And check out our new Software Release Risk Assessment to better understand your risk profile.