- Status: accepted
- Deciders: developers and product owners of island.is
- Date: 2021-01-18
Technical Story: Select a feature flag solution that gives us the ability to easily use feature flags across our solutions.
We want to be able to roll out new features gradually, perform A/B testing and target individual groups with a new feature. Also, we want to be able to flip a switch to turn features on or off for everyone.
- Ease of setup
- Ease of maintenance
- Cost
- Developer experience
- Usability/UX
- Operational concerns
- Handling of PII
Chosen option: "ConfigCat", because:
- We can probably get away with using it for very low cost
- We can start using it almost right away with little configuration
If we decide later that we would like some of the features of LaunchDarkly, we want to be able to quickly swap. Thus, it is vital that we write some kind of service-agnostic wrapper.
- We can start using feature flags across our stack.
- Complexity of applications will increase
- Good, because it has great UX
- Good, because it is the market leader and has a lot of customization options
- Good, because it allows developers to change flags in config files for local development
- Good, because it offers a relay proxy, minimizing outgoing connections
- Good, because setup is easy and maintenance is really low
- Good, because it has built-in support for multiple environments
- Good, because the provide private attributes to help with PII
- Good, because it has built-in datadog support
- Bad, because it's the most expensive of the considered options
- Bad, because it's hard to segment on PII
- Good, because it's free if self-hosted
- Good, because it has built-in support for multiple environments
- Good, because we can segment on PII since we store all the data
- Good, because devs could run their own instance for local development
- Bad, because we'd need to maintain it ourselves
- Bad, because it has quite low community activity on GitHub
- Good, because it's free for a low volume
- Good, because setup is easy and maintenance is really low
- Good, because it has built-in support for multiple environments
- Bad, because it's really hard to segment on PII
- Bad, because UI is hard to navigate
- Bad, because it doesn't seem to have a lot of open-source usage/examples
- Bad, because it only supports development environment inside the product
- Bad, because they don't have self-serve or an open price list
- Bad, because it's part of some larger stack that we're not using, and seems to be opinionated towards that
- Good, because it's free if self-hosted
- Good, because we can segment on PII since we store all the data
- Good, because devs could run their own instance for local development
- Good, because it has high community activity on GitHub
- Bad, because it doesn't come with built-in support for multiple environments
- Bad, because the UI is hard to navigate and counter-intuative in places
- Bad, because we'd have to implement authorization ourselves
- Good, because they don't base their pricing on MAU but config downloads
- Good, because they can be configured to store everythin in EU
- Good, because setup is easy
- Good, because it has built-in support for multiple environments
- Bad, because we would want to implement our own relay
- Bad, because it seems quite bare-bones compared to others
- Bad, because it only supports development environment inside the product
- Bad, because it's really hard to segment on PII
- Good, because it's cheap
- Good, because setup is easy and maintenance is really low
- Bad, because we would want to implement our own relay
- Bad, because it doesn't support user segmentation or variations
- Bad, because their UI is horrible