Feature Management Resources

Setting Up Feature Flag Management

A feature flag allows you to choose between different code paths in your system at runtime. They enable teams to safely merge new features, bug fixes, or other code changes to one central branch in the version control system, which avoids long-lived feature branches and merge issues by integrating code changes frequently. 

Implementation Notes

If you are considering a feature flagging system, it is important to be take these practical things into consideration.

Evolution of Feature Flagging System

If you keep the evolution of these systems in mind, you will be able to design a better system today that will continue to evolve with your team’s needs.

B2B vs B2C Companies

The needs of B2B companies are a bit more complicated than those of B2C companies. They may need to rollout features user-by-user, or account-by-account. The latter case is unique in that if a feature is rolled out to an account, it should be accessible to all users within that account. If a user exists in multiple accounts, you have to think about the impact on user experience as the user switches from account to account.

Stickiness

It’s important that your system supports stickiness: if a user is shown a feature, they should continue seeing the feature no matter which machine their request is routed to. Without stickiness, the user experience can be very inconsistent.

Remember to Remove Flags

If flags are left in the code for too long, they lead to tech debt. Old branches of code may no longer work and if someone accidentally kills a feature, the customer experience will be negatively impacted. If you are building a solution for your team, think about building a notification system that helps teams do house cleaning.

Creating A Feature Flag

When you create a feature flag, you can specify information for it, which includes a name, a description, owners, and tags. This information helps you and your team manage your feature flags and customize them to your team’s workflow. 

Ideally, your flag management system allows configuration changes to propagate within a few seconds, not even requiring processes in an environment to be restarted in order to pick up the change.

Get Started
Feature Management is a Journey

Feature Flag Configuration Management

Ownership and Metadata

The number of feature flags under management has a tendency to grow over time, leading to “flag bloat” – a challenge which we’ll discuss later in this guide. The best way to keep this in check is proactive management, a big part of which is tracking metadata for each flag, such as who is responsible for the flag, when the flag was created, when it should expect to be retired, and so on.

Environment-aware configuration

Your flag management system should have a first-class concept of deployment environments, and support the promotion of a flag configuration change from one environment to the next. This reduces the need for “swivel chair” synchronization of a configuration change across environments (with the associated risk of human error), and can reduce configuration drift between environments in general.

Change Control and Auditability

Change control is why it’s valuable for a flag management system to have a first-class awareness of deployment environments. Tighter restrictions can be put in place around changes to production environments, while still allowing looser access in lower, pre-production environments. 

Close the Loop – Analytics Integration

Several feature flagging use cases require the ability to understand the impact of a flagged feature. Does it increase conversion rates? Increase API error rates? Increase request latency? To answer these questions we need some way of closing the loop – correlating flag state with the metrics we care about.

Having feature flag management has allowed us to easily merge code, even partially, while not slowing down our release schedule.

Jimmy DePetro, Head of Engineering, Wag!

Join The Industry Standard

Top enterprises use feature flag management to effortlessly conduct feature experiments like A/B tests without slowing down. Reimagine the software development process to release new features up to 50x faster! 

Get Started