EclipseFdn / EclipseFdn/open-vsx.org

Move Open VSX Rate Limiting to the CDN Edge

Open
#11,621 0 comments 0 reactions 2 assignees Claimed by @gnugomez View on GitHub
rate-limiting team:software-dev
Dominant language
TypeScript
Stars
394
Forks
145
Avg merge
2d 19h
Merged PRs (30d)
3

Description

# Move Open VSX Rate Limiting to the CDN Edge

Open VSX rate limiting was originally implemented in the application because we assumed the application would see enough traffic to enforce limits accurately.

That assumption no longer holds. Open VSX now runs behind Fastly, and edge caching means many requests may not reach the application. As a result, application-level rate limiting cannot reliably enforce limits for all eligible traffic.

Rate limiting therefore needs to move to the CDN edge.

## Desired Outcome

Eligible Open VSX requests are evaluated at the Fastly edge before they reach the application.

The edge service should:

- identify customers by rate-limit token where possible;
- fall back to IP range when no token is available;
- apply the customer’s active rate-limit configuration;
- return `429` responses for requests above the allowed limit;
- keep commercial rate-limiting logic out of the open source Open VSX application.

## Delivery Plan

### Phase 1 — Staging Prototype

**Target:** End of July
**Goal:** Validate the core Fastly Compute approach on staging.

Expected work:

- Create a Fastly Compute service for Open VSX rate limiting.
- Route staging traffic through the service.
- Identify customers by token and IP range.
- Sync customer configuration from Open VSX to Fastly.
- Validate counter behaviour at the edge.
- Confirm how extension downloads should be handled.

### Phase 2 — Production Shadow Mode

**Target:** End of August
**Goal:** Run the edge service in production without blocking traffic.

Expected work:

- Deploy the Fastly Compute service to production with it's enforcement disabled.
- Add response headers showing the rate-limiting decision that would have been made.
- Compare edge decisions with current application-level behaviour.
- Validate customer identification against production traffic.
- Start processing Fastly logs for customer usage reporting.
- Build Grafana dashboards for visibility and validation.

### Phase 3 — Production Enforcement

**Target:** September, gated on Phase 2 validation
**Goal:** Enforce rate limits at the edge.

Expected work:

- Enable `429` responses from Fastly Compute for traffic above the allowed limit.
- Monitor enforcement behaviour.
- Disable duplicate application-level enforcement once edge enforcement is stable.

### Phase 4 — Customer Dashboard

**Target:** Q4
**Goal:** Move customer management and usage reporting out of the Open VSX application.

Expected work:

- Build a standalone customer dashboard or self-service configuration app.
- Migrate existing customer-facing usage charts to this dashboard
- Move customer configuration management out of the open source application where appropriate.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.