Srinivasan Nanduri, Architect, Mobile Development, IBM Cloud
We live in an era where speed and continuous delivery are the new norm. To make this possible, techniques like Feature Flags have been developed. This powerful software development technique empowers developers to enable or disable certain functionalities in an application without modifying the code. Many companies use this technique to gate functionality. Here are some of the compelling benefits offered by Feature Flags that an enterprise should consider while accelerating their feature/app deployment.
Enhanced Continuous Delivery
Continuous delivery is a software development practice in which software can be released to production at any time. It has been adopted by leading software companies to deliver stable software quickly and more frequently. Feature flags enhances continuous delivery by making it more easily achievable. Adopting feature-flag driven development, Dev and Ops teams can deploy new functionality continuously while keeping the functionality hidden until product managersdecide when to make the feature available to their end users. This technique allows the feature development to be completely decoupled from the feature roll out which makes Feature flags an integral part of the deployment process.
Minimise Blast Radius of Newly Released Features
Businesses today have unprecedented data and visibility into their user's behaviour. Using Feature control, developers can choose by turning certain features on for certain users based on their behaviour, while leaving it off for the rest. This helps in minimising the blast radius of new feature releases whilevalidating its functionality and testing it for performance prior to its broader rollout. Popular use case includes launching the feature to a sub-set of users based on their usage patternsto share their experiences and provide feedback for further enhancements.
Tailor User's Experience
Feature flags allows app developers to deliver customized experience to its users. By toggling the feature, users from a certain geography will experience the app in a different way versus a user from another geography who will experience the same app with a completely different user interface.
Gradual Rollout/Canary Release
When deploying a new feature, releasing it to all the user base is always risky. With gradual rolloutthe feature is released to a subset of users, after receivingtheir feedback and making improvements the target user base is gradually expanded. If something goes wrong, the developer can instantly roll it back. This allows the developerto test the effectiveness of a feature before releasing it to all users.
Feature flags allow A/B testing of various features. This enables comparing different versions of a feature while measuring their individual performance, analyzing and drawing conclusions about which version performs better. Using Feature flags, a developer can define two or more variations of a feature flag that are targeting different sets of users and determine which variation performs the best based on the analysis of how each variant has performed.
Time to Live
Many a times, a developer would like to release a feature for a fixed interval of time and pull it back later. Feature flags also allow developers to keep a feature ‘active’ for a defined period. Once expired, the feature which is controlled by feature flag will be hidden from end users.
Before we conclude, a couple of call outs:
• Developers should watch out for the number of feature flags used in an application. The intent is to facilitate agility without increasing complexity.
• A feature flag added to the code is a technical debt from the moment it’s added. Every feature toggle adds a new code path through the application which makes it harder to test and debug the code. Hence, it’s important to remove the toggle from the code after its use or expiry.
• Do not add feature flags for completely easy or tested functionality. You can release such functionality without protecting it with a feature flag.
• Do not use feature flags for API end points that are not public facing.
To summarize, with feature flag management, a team can launch, control, and measure features at scale. It’s very easy for companies to adopt Feature Flagging in their projects with several feature management solutions available in the market. There are many platforms available in the market to manage your feature flags at scale such as LaunchDarkly, IBM Cloud AppLaunch, and Optimizely.