Closed jnaviask closed 5 months ago
I've only used LaunchDarkly to manage feature flags, but in general we should prioritize:
Not sure why we want to integrate FF with our db. Storage (loading) should be part of the functionality provided by the FF utility (Unleash?), and we can expose it to our app via a FF interface.
@Rotorsoft my question is: why do we need a separate, external utility when we can create a simple version that meets our needs without involving new services?
I think hexagonal architecture is a good fit here. If you want to take this on, let me know and I'll assign you this ticket, which you can edit to describe how we should best proceed. You can also work off @kurtisassad's #5217 if needed.
This is another generic problem we can try to solve (reinvent)... or immediately leverage a lot of features from existing solutions. We can start with our own (mocked) adapter to see how far we can go with it, just concerned about diverting resources to building something that's not adding value to our customers.
Description
Currently we use environment variables + webpack define plugin to handle feature flags. This is a fairly slow + inflexible system, and introduces gaps, e.g. requiring a rebuild to set a client-based feature flag, which can be out of sync if the same flag is used on the backend, makes it difficult to turn on and off, etc.
In #5217 @kurtisassad introduced Unleash as a feature flag service -- we may want to proceed with that as our primary options, but we should evaluate it in comparison with the project scoped out here, which avoids external dependencies but still meets our general requirements on the engineering side.
Engineering Requirements
Briefly, the work involved consists of the following steps, which can be broken out into separate tickets as needed.