Feature Flags: What are they and how to use them?
Feature flags have become a staple for DevOps and software development teams to release features quickly and safely. Feature flags can be used for a wide range of purposes and are referred to in a number of ways from feature toggles to feature flippers but the core concept remains the same.
This guide will take you through the concept of feature flags, why and how they are used by teams today, their implementation, and some of their pros and cons.
Table of contents
- Your Guide to Feature Flags
- Feature Flags: What are they and how to use them?
- What are feature flags?
- Why use feature flags?
- Challenges of feature flags
- Benefits of feature flags
- Integrate feature flags in software development
- Feature flags: Best practices
- Choosing a feature flagging platform
- How to implement feature flags
- Feature Flags FAQs
Short vs long-lived feature flags
When we talk about longevity, we are referring to feature flags that are either meant to stay in your system for a short period of time while other flags could stay for years.
For example, feature flags may be short-lived to temporarily deploy new changes and test in production while other long-term flags, such as kill switches, remain in your system longer. Therefore, you will need to manage different feature toggles or flags depending on how they’re deployed.
Keep reading: Short vs Long-lived Feature Flags
Dynamic vs static feature flags
In terms of dynamism, which is how often you need to modify a flag in its lifetime, there are two categories of flags:
- Dynamic- allow their value to be changed at runtime.
- Static- only change through actual code changes or configuration file changes.
To learn more about the differences between static and dynamic flags and where to store them depending on which category they fall under, read our best practices article on where to store feature flags.
We can further break down feature flags into various categories of toggles, which should be managed differently. In other words, you will need to manage different feature toggles or flags depending on how they’re deployed. The main categories are:
- Release toggles
- Experimental toggles
- Operational toggles
- Permission toggles
For more details on these different categories of feature toggles, refer to this article.
Integrate feature flags in software development
Software usually goes through a series of stages or phases to produce high-quality software through the software development life cycle (SDLC). The phases incorporated depend on the methodology used but the basic principles of SDLC are more or less the same. For more information about the software life cycle, you can read more in our article about the different stages of the SDLC in conventional and Agile methodologies. Based on the above, at the beginning of any software development process, teams and organizations must decide what methodology they will adopt to ensure high-quality products. Waterfall and Agile are two of the most popular methods though Agile is rapidly gaining traction over Waterfall.
- Waterfall methodology is more of a traditional model. It adopts a linear approach to software development where each phase flows downward, like a waterfall, to the next; each stage must be completed before the next one begins.
- Meanwhile, Agile methodology is one that takes on a team-based approach to development. Instead of planning for the whole project, it breaks down development into small batches completed in stages. What makes Agile development innovative is it shifts the focus to the user as it relies on a very high level of customer involvement throughout the project.
However, incorporating feature flags into your release is what differentiates an agile roadmap from a Waterfall roadmap, which helps you stay focused on your core user-alignment activities. Read more to find out why an Agile methodology is the right way to go for modern software development and why you need to incorporate feature flags into your agile roadmap to keep your products moving in the right direction. When it comes to release management strategies, there are some strategies to choose from depending on your use cases.
- Trunk-based development is a branching model where developers collaborate in a single branch and make smaller changes more frequently. The idea behind this practice is to limit long-lived branches that may lead to ‘merge hell’. This is usually a good strategy to use to get features out fast.
- Feature branching, on the other hand, is when developers work separately on a branch and then once their changes are completed, they merge them into the mainline. This is an efficient method to manage large-scale projects with a large number of developers working on specific features.
Feature flags: Best practices
There are many practices that need to be applied when working with feature flags. The following are some best practices that you will need to consider and implement to make your feature flag journey as smooth as possible:
Choosing a feature flagging platform
Once you’ve decided you prefer to get a 3rd party solution, choosing the best feature flag management service to match your needs may prove to be a challenge. Visit our feature flag service comparison section to see how AB Tasty stacks up against other solutions.
AB Tasty’s Feature Experimentation and Experience Rollouts may just be the solution you’re seeking, where it has been dubbed as a leader in the The Forrester New Wave™: Feature Management & Experimentation, Q2 2021 report.
AB Tasty not only allows you to turn features on and off but it gives you full control over your feature releases by wrapping your features in flags and rolling them out based on the specific flag values you assign to different user segments. You can then make informed decisions according to the metrics and KPIs you choose.
If you would like more information on getting started with our server-side functionality, check out our documentation to help you get started.
How to implement feature flags
A typical feature flag implementation is based on (1) a management service that defines the flag, (2) a run-time query to figure out the value of the flag, and (3) an if-else programming construct.
There are many ways to implement feature flags. The simplest and often the starting point is to use if/else statements directly in your code.
You can also rely on open source projects and many libraries are available for your preferred programming language. Read more about the Top 10 feature flag related projects on GitHub.
However, feature flags go beyond simple boolean states to more complex logical statements. Therefore, if you want to delve into more advanced uses, you will need more complex feature flag management tools.
Before embarking on your feature flag implementation journey, it is important to consider the following:
- Identify pain points– it is important to consider your objectives and what issues you are trying to tackle in your software development process and in production.
- Determine your use cases– in other words, consider why you want to use feature flags and who will be using them in your organization besides developers.
- Consider whether to build or buy– there are many factors to consider when deciding whether you’re better off building or buying a feature flagging management system.