aperture is a free, open source orchestration & scheduling project written in Go and released under Apache-2.0. It has 733 GitHub stars, 36 forks and 99 open issues, and was last pushed 9 months ago. On this registry it ranks #103 of 110 tracked projects in Orchestration & Scheduling, with 5 head-to-head comparisons available.


Documentation Reference Slack Community Build Status Go Report Card Godoc Reference

🥷 FluxNinja Aperture

Aperture is a distributed load management platform designed for rate limiting, caching, and prioritizing requests in cloud applications. Built upon a foundation of distributed counters, observability, and a global control plane, it provides a comprehensive suite of load management capabilities. These capabilities enhance the reliability and performance of cloud applications, while also optimizing cost and resource utilization.

Unified Load Management Unified Load Management

Integrating Aperture in your application through SDKs is a simple 3-step process:

  • Define labels: Define labels to identify users, entities, or features within your application. For example, you can define labels to identify individual users, features, or API endpoints.
Example
// Tailor policies to get deeper insights into your workload with labels that
// capture business context.
const labels = {
  // You can rate limit each user individually.
  user: "jack",
  // And have different rate limits for different tiers of users.
  tier: "premium",
  // You can also provide the tokens for each request.
  // Tokens are flexible: LLM AI tokens in a prompt, complexity of a request,
  // number of sub-actions, etc.
  tokens: "200",
  // When peak load exceeds external quotas or infrastructure capacity,
  // requests can be throttled and prioritized.
  priority: HIGH,
  // Get deep insights into your workload. You can slice and dice performance
  // metrics by any label.
  workload: "/chat",
};
  • Wrap your workload: Wrap your workload with startFlow and endFlow calls to establish control points around specific features or code sections inside your application. For example, you can wrap your API endpoints with Aperture SDKs to limit the number of requests per user or feature.
Example
// Wrap your workload with startFlow and endFlow calls, passing in the
// labels you defined earlier.
const flow = await apertureClient.startFlow("your_workload", {
  labels: labels,
  // Lookup result cache key to retrieve a cached result.
  resultCacheKey: queryParams,
});

// If rate or quota limit is not exceeded, the workload is executed.
if (flow.shouldRun()) {
  // Return a cached result or execute the workload.
  const cachedResult = flow.resultCache();
  const result = await yourWorkload(cachedResult);
  flow.setResultCache({
    value: result,
    ttl: { seconds: 86400, nanos: 0 },
  });
}
//
  • Configure & monitor policies: Configure policies to control the rate, concurrency, and priority of requests.
Policy YAML
blueprint: rate-limiting/base
uri: github.com/fluxninja/aperture/blueprints@latest
policy:
  policy_name: rate_limit
  rate_limiter:
    bucket_capacity: 60
    fill_amount: 60
    parameters:
      interval: 3600s
      limit_by_label_key: user
    selectors:
      - control_point: your_workload
        label_matcher:
          match_list:
            - key: tier
              operator: In
              values:
                - premium

Rate Limiter Blueprint Rate Limiter Blueprint Rate Limiter Dashboard Rate Limiter Dashboard

In addition to language SDKs, Aperture also integrates with existing control points such as API gateways, service meshes, and application middlewares.

⚙️ Load management capabilities

  • ⏱️ Global Rate and Concurrency Limiting: Safeguard APIs and features against excessive usage with Aperture's high-performance, distributed rate limiter. Identify individual users or entities by fine-grained labels. Create precise rate limiters controlling burst-capacity and fill-rate tailored to business-specific labels. Limit per user or global concurr

readme truncated — read the full docs on github

Frequently asked questions

Is aperture free to use?

aperture is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does aperture do?

Rate limiting, caching, and request prioritization for modern workloads

What is aperture written in?

aperture is primarily written in Go. Its source is publicly available at https://github.com/fluxninja/aperture, and it has 733 GitHub stars.