When maintaining the codebase of a website in Adobe Experience Manager (AEM) – or any other project – there may be features that are too large to implement all at once. It may be possible to split the feature into multiple smaller changes, but sometimes that is simply not an option. You can try to gradually rework the design of your website, but it’s always nice to display your brand-new design all at once.
To mitigate this nuisance, we can introduce feature flags: a strategy to implement features without having them live on your production systems. These feature flags are simply a configuration that lets you turn specific features on and off when necessary.
Here are the four main advantages of feature flags:
1) They work well in an agile setting
We all know the principles of agile development. Even though the Agile methodology dictates that all work should be divided into small, manageable and deliverable chunks, we have all encountered situations where this seems impossible. This big design rework of your website, a large-scale migration from some custom-built system to the recently introduced Content Fragments in Adobe Experience Manager… is bound to span multiple sprints.
Work can – and should! – still be divided into testable pieces, and testing requires no more than enabling the feature on your test environment. Completed work can be checked by QA engineers and can safely continue to be installed on the production systems. As long as the feature is disabled, it appears as if nothing is changed.
2) The business remains in command
Allowing to toggle feature flags in a live system without taking it down gives your Product Owner full control of when certain features go live on the production systems.
With this control, the pressure on your development team to manage the delivery date is alleviated.
Returning to the example of the big design rework of the website, the Product Owner is free to decide when this happens. Perhaps this should be coordinated with the release of a new version of your smartphone app? Thanks to feature flags, only the respective Product Owners need to coordinate, with no dependencies on development teams. For your customers, the design change is consistent throughout your digital ecosystem, all thanks to feature flags.
3) Different features for different customers
Do you have multiple websites running the same code? You’re probably not alone. Maintaining only one codebase can reduce costs and makes everything behave in a consistent manner.
One of the difficulties of running multiple sites on the same code, however, is that not everyone may want an updated design.
Once again, feature flags offer a solution. Configurations can be different for each website, and feature flags can be part of those configurations. Adobe Experience Manager already includes context-aware configurations to change configuration based on which part of the website you’re on. Adding your feature flags to those configurations allows each site’s owner to toggle the flags at their desire.
4) Segmented accident management
Test all you want; accidents are bound to happen. And when they do, they often hit hard. One piece of code going rogue can require a fix to be installed, with potential downtime as a consequence.
Instead of having to remove all functionality for a short period of time, it’s important to be prepared in order to deal with accidents as swiftly and efficiently as possible.
Feature flags allow a Product Owner – or any other user with the appropriate permissions – to disable features whenever necessary, without requiring assistance from developers. No update of the system required, no downtime of your entire website.
Suppose your big design rework turns out to have some undesired side-effects, effectively rendering an important functionality unusable. Using feature flags, you simply turn off the new design feature, report the incident to your development team and return to the old design.
If there’s anything to take away from this list, it is that Feature Flags can help manage features on a website as if they are content. Just as it’s possible to remove a page from your website if a mistake is found, you can now disable a feature when it’s not finished, and enable it again when the time arises.
From facilitating the quick-and-easy launch of new functionality, to quickly reacting to issues in existing functionality, Feature Flags have many advantages. Think of them when implementing your next feature, and you just might be amazed by the possibilities.