3 ms·
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 flag
by ricardobeat 1y ago
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.
- boxed 1y agoSounds like most of those problems are just problems with microservices generally. Adding a service makes this worse.
- tantalor 1y ago> product, not eng, will start managing the flags at some point and needs easy access How to tell you have a broken engineering culture.
- Sayrus 1y agoSome 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.
- ccakes 1y agoI 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
- ecshafer 1y agoThat seems like code which should check customer account information, not a feature flag thats turned on or off.
- Sayrus 1y agoActivating 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-context-paradigm 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.
- ricardobeat 1y agoFlags 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.
- tushr 1y ago> 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.
- aitchnyu 1y agoDo we need a feature flag-aaS if we have a monolith and easy way to add columns to user table?
- ricardobeat 1y agoIf 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.
- aitchnyu 1y agoI can see the others in the build/buy debate, but how's metric platform connected to this?
- tushr 1y agoI 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 https://x.com/ctushr/status/1949215574980272177