Skip to content

Proxy ConfigCat config in caddy #12739

Closed
@geropl

Description

@geropl

Currently, we're using ConfigCat client libraries from a wide variety of environments. All those clients periodically go to https://configcat.com/ and fetch the config from there directly.

Now Team IDE plans to/already uses ConfigCat to rollout features of with different lifecycles then the rest of Gitpod (delivered via marketplace to clients with different upgrade strategies vs. single version of Gitpod delivered to SaaS/Self-Hosted).

We see multiple problems with this:

  • number of requests: We're on a certain plan with ConfigCat, and are close to/already exceeding their "number of requests" limits. So far this was not an issue, because we had close control over all clients, and could tweak the polling behavior. This changes when we use ConfigCat from clients with longer lifecycles that are not under our control.
  • scaling to more clients: so far, we taught all clients to tell Self-Hosted and SaaS apart. It would be nice to centralize this behavior
  • access to ConfigCat API: so far we had to build ConfigCat keys into multiple docker images (depending on client and runtime).

The proposed solution:

  • installation-specific ConfigCat proixy: create a path in the caddy-powered proxy component that delivers the config.json file
  • if there is not ConfigCat API key configured (Self-Hosted), this returns an empty JSON object (for now)
  • if there is a ConfigCat API key (SaaS): go to ConfigCat at a certain interval, fetch the config.json from there and cache it locally to respond to all requests
  • point all clients to this installation specific path

@mustard-mh @easyCZ

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions