Writing your own logic to handle flags is trivial at first, especially if you're running a monolithic app, but quickly grows in complexity:
- distributing flags to multiple services
- broadcasting updates
- caching rules
- audit logs
- product, not eng, will start managing the flags at some point and needs easy access
- custom logic for gradual rollouts, A/B testing
- custom attributes support (used in evaluation)
- managing multi-variant flags
- supporting multiple platforms (backend, frontend, native apps, services, jobs) and evaluation strategies (eager server-side evaluation vs shipping a client-side engine)
There are quite a few open-source options like Growthbook, Flagsmith, go-feature-flag, and Unleash that you can check out for comparison.
> product, not eng, will start managing the flags at some point and needs easy access
How to tell you have a broken engineering culture.
Some flags are meant to be enabled for specific customers, on-demand, depending on what type of contract is signed, under NDA and so on. Over time, many department that aren't "engineering" need to be able to change some flags. That doesn't imply your culture is broken.
I think most would say that’s configuration, not feature flags. The differences can be subtle but I at least don’t think they’re the same thing
That seems like code which should check customer account information, not a feature flag thats turned on or off.
Flags at this level are not simple toggles, they will embed some business logic - that's the custom logic and attributes that I mentioned. This is standard fare in Statsig, Split, Launchdarkly, and most other commercial providers. You then collect metrics for each group to monitor features.
You use these to manage gradual rollouts, or phased rollouts by customer segments, and to run A/B tests on smaller cohorts.
Activating only for beta users or opted-in users is a supported use-case on OpenFeature using the dynamic context (https://openfeature.dev/specification/glossary#dynamic-conte...).
If your goal is to end up with the flag enabled on all requests, the only difference is the rollout strategy. You can prioritize accounts, manually enable things with one customer that you know likes to test your alpha features, and so on.
Sounds like most of those problems are just problems with microservices generally. Adding a service makes this worse.
> product, not eng, will start managing the flags at some point and needs easy access
That's the typical pattern and why most tools focus on non-technical UIs. FFlags targets a different niche. Teams where developers want to maintain control over flag logic.
Do we need a feature flag-aaS if we have a monolith and easy way to add columns to user table?
If you're not running A/B tests, doing gradual rollouts, don't have a metrics platform, and haven't had to go beyond simple on/off status, probably not.
I have a bias but I would still suggest using feature flags even for on/off functions. Example of how I do it:
https://x.com/ctushr/status/1949215574980272177
I can see the others in the build/buy debate, but how's metric platform connected to this?