Feature flag management is the process of, well, managing feature flags. While feature flags are extremely useful for many purposes, they require an organized process to manage. In what specific ways, we’ll discuss shortly.
There are two main types of feature flag management systems: those which are built in-house and those which are purchased pre-built. There are benefits and drawbacks to both, and which solution you choose depends largely on your organization’s needs. Regardless of origin, any management system should do these four things: provide a common framework for the whole organization, serve up flags quickly and reliably, manage the testing process, and help avoid technical debt produced by unused flags.
Develop a Common Flagging Framework
The most critical thing a feature management system should do is allow all teams to view and control the state of each feature, ideally through an intuitive GUI. This means that not only developers, but also product managers, sales teams, marketing teams, and stakeholders will be able to toggle features on and off.
As an important feature in this GUI, it should be possible, and simple, to assign a certain person or team responsibility for a feature flag. This is useful for implementing progressive delivery, where over time, responsibility for features may transition automatically from the developers to the project manager to the customer success team.
Serve Feature Flags Quickly and Reliably
A well-built feature management system will make sure that the use of feature flags doesn’t slow down the application for end-users. In order to do this, it will likely implement client-side caching to be more resilient. It will also likely use a content delivery network (CDN) to ensure that feature flag information gets to a user as immediately as possible.
Manage testing in production
When your development team is implementing tests for your features, you can use feature flags to test those features in production. Simply add your internal teammates to receive the new treatment, test in production with those users, and then turn the feature flag on for everyone once the feature is ready. This process ensures your features are working correctly in production before your users have access to them.
Avoid technical debt
Feature flag management is also critical for avoiding technical debt. Technical debt is caused when feature flags outstay their welcome: a flag that was supposed to be short-lived sticks around a lot longer for any number of reasons; someone implements a flag and then forgets it exists, someone turns a flag on permanently and then forgets to remove it from the codebase, etc.
It’s possible to deal with a backlog of technical debt, but it’s hard to do and even harder to prioritize so that it gets done. The best way to avoid technical debt is to stop it before it starts and use feature flags responsibly. Use a feature flag management system that provides functionality to track how long it’s been since a feature toggle was flipped. If a feature flag is no longer in use, but is still clogging up the code, you can see that and delete it promptly. Check out these tips for feature flag maintenance.
Feature flags are an immensely useful tool for any DevOps or continuous delivery team, but without proper management, they can require additional effort, create technical debt and complicate testing. As such, you should implement a feature management system that will help your team to mitigate these problems.
Get Split Certified
Split Arcade includes product explainer videos, clickable product tutorials, manipulatable code examples, and interactive challenges.
Deliver Features That Matter, Faster. And Exhale.
Split is a feature management platform that attributes insightful data to everything you release. Whether your team is looking to test in production, perform gradual rollouts, or experiment with new features–Split ensures your efforts are safe, visible, and highly impactful. What a Release. Get going with a free account, schedule a demo to learn more, or contact us for more information.