A way to send push notifications to update client-side cache when a flag changes in the backend.
Problem
There is a possibility that users may set the cache refresh interval too low, which could lead to undesired traffic and load on the server. This can be inefficient and unnecessary, as it increases server load even when no changes have been made. A more efficient approach would be to notify clients when a change in their feature toggle occurs, allowing them to refresh the local cache only when necessary.
Ideal Solution
Implement a system that sends a push notification to clients when there is a change in their feature toggle. Upon receiving this notification, the clients can refresh their local cache accordingly. This approach would reduce server traffic and ensure that the cache is updated only when needed, improving overall performance.
Search
- [X] I searched for other open and closed issues before opening this
Additional Context
No response
Good idea @umarlateef !
We could implement Server Sent Events (SSE) in Flipt server and expose an endpoint where our client side SDKs can subscribe to these events.
Here's how I'm thinking this could work:
- Add a new endpoint like
get: /internal/v1/evaluation/snapshot/namespace/{key}/subscribethat allows clients to maintain a sse connection - Make use of our namespace versioned stores that keep track of when anything in a namespace is changed
- Push events (the etag or version) to subscribed clients over SSE
- Our client SDKs can then refetch the flag state from Flipt server whenever this version changes by fetching with the etag/version they receive over SSE
@markphelps That will solve the problem, and help us reduce the load on the server.
@umarlateef 👋🏻
This may not be what you're looking for as its not in open source Flipt yet.. but we did just release streaming support to our client side SDKs for Flipt Cloud. https://docs.flipt.io/integration/client#polling-vs-streaming
Is this solution available only for flipt cloud? Not available for self hosted solutions?
@Streppel we are working on v2 (self-hosted) which we can add push notifications for. see #3828 . I can add push events as a TODO there
That's awesome. Thanks for the quick reply.
Closing this as it will be handled by #4069