What Feature Flag Service/application Should We Use at Island.is?
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.
Context and Problem Statement
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.
Decision Drivers
Ease of setup
Ease of maintenance
Cost
Developer experience
Usability/UX
Operational concerns
Handling of PII
Considered Options
Decision Outcome
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.
Positive Consequences
We can start using feature flags across our stack.
Negative Consequences
Complexity of applications will increase
Pros and Cons of the Options
LaunchDarkly
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
FlagSmith
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
Optimizely Rollouts
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
Unleash
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
ConfigCat
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
FeatureFlagTech
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
Links
Last updated