Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A way to send push notifications to update client-side cache when a flag changes in the backend. #3458

Open
1 task done
umarlateef opened this issue Sep 12, 2024 · 3 comments
Labels
enhancement Created by Linear-GitHub Sync

Comments

@umarlateef
Copy link

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

  • I searched for other open and closed issues before opening this

Additional Context

No response

@umarlateef umarlateef added the enhancement Created by Linear-GitHub Sync label Sep 12, 2024
@markphelps
Copy link
Collaborator

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:

  1. Add a new endpoint like get: /internal/v1/evaluation/snapshot/namespace/{key}/subscribe that allows clients to maintain a sse connection
  2. Make use of our namespace versioned stores that keep track of when anything in a namespace is changed
  3. Push events (the etag or version) to subscribed clients over SSE
  4. 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

@umarlateef
Copy link
Author

@markphelps That will solve the problem, and help us reduce the load on the server.

@markphelps
Copy link
Collaborator

@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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Created by Linear-GitHub Sync
Projects
Status: No status
Development

No branches or pull requests

2 participants