I'm not advocating for LD, I'm advocating for any feature management system.
> In addition, it doesn't give you various features such as tagetting by users, segments, etc. Nor does it give you things like progressive rollout or automated rollback (yes we were using that in house and had saved us at least a few times).
These are things you can think of quite easily, or you just survey the landscape of what challenges other implementations run into and they inform you of this. The first iteration of our design had all of those; we could target users, always-subscribe internal users, we could have two features have the same segment/ordering of rollout, etc.
Database load wasn't ever a problem, because you're talking about quite literally a single SELECT on an already established & otherwise in use DB connection. But caching is not that much to bolt on afterwards should it become an issue.
It's never been clear to me that the simplicity of understanding that a single query has, even if it might be short a few features, is outweighed by the complexity of a full dependency to an external service.
As it was, our FF system outlived the company, and was sunset when the company ended.
> that was the main motivation, we wanted this kind of control without adding latency to our requests
Right, and most, if not all, off the shelf feature management systems have this problem solved already. For example LD uses a streaming architecture by default to push out flags to your application within 200ms, for client facing applications (android/ios/web), flags were retrieved once on load from a CDN, keeping the rest of your application snappy. I believe Unleash also has some sort of streaming architecture.
Scaling things like this is a mostly solved problem. Having your website load when the DB is down is not.