aperture

module
v2.31.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2024 License: Apache-2.0

README ยถ

FluxNinja Aperture
Documentation Reference Slack Community Build Status Go Report Card Codecov Status Godoc Reference

๐Ÿฅท FluxNinja Aperture

Aperture is an observability-driven load management platform designed for classifying, rate limiting, queuing and prioritizing API traffic in cloud applications. Built upon a foundation of observability and a global control plane, it offers a comprehensive suite of load management capabilities that enhance the reliability and performance of cloud applications while also optimizing resource utilization.

Aperture seamlessly integrates with existing control points such as gateways, service meshes, and application middlewares. Moreover, it offers SDKs for developers to establish control points around specific features or code sections inside applications.

Unified Load Management Unified Load Management

โš™๏ธ 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 concurrency of in-flight requests. Refer to the Rate Limiting and Concurrency Limiting guides for more details.
  • ๐Ÿ“Š API Quota Management: Maintain compliance with external API quotas with a global token bucket and smart request queuing. This feature regulates requests aimed at external services, ensuring that the usage remains within prescribed rate limits and avoids penalties or additional costs. Refer to the API Quota Management guide for more details.
  • ๐Ÿšฆ Concurrency Control and Prioritization: Safeguard against abrupt service overloads by limiting the number of concurrent in-flight requests. Any requests beyond this limit are queued and let in based on their priority as capacity becomes available. Refer to the Concurrency Control and Prioritization guide for more details.
  • ๐ŸŽฏ Workload Prioritization: Safeguard crucial user experience pathways and ensure prioritized access to external APIs by strategically prioritizing workloads. With weighted fair queuing, Aperture aligns resource distribution with business value and urgency of requests. Workload prioritization applies to API Quota Management and Concurrency Control and Prioritization use cases.
  • ๐Ÿ’พ Caching: Boost application performance and reduce costs by caching costly operations, preventing duplicate requests to pay-per-use services, and easing the load on constrained services. Refer to the Caching guide for more details.

๐Ÿ Getting Started

โ˜๏ธ Aperture Cloud

The easiest way to try Aperture is to sign up for a free Aperture Cloud account. Aperture Cloud is a fully managed service by FluxNinja. With Aperture Cloud, there's no need to manage any infrastructure, and you can integrate your application with Aperture using SDKs. For more information, refer to the get started guide.

Quota Management Dashboard Quota Management Dashboard Prioritization Metrics for gpt-4 Flow Analytics Flow Analytics Performance Metrics for OpenAI Models

๐ŸŽฎ Local Kubernetes Playground

To try Aperture in a local Kubernetes environment, refer to Playground docs.

๐Ÿ“– Learn More

๐ŸŽฅ Videos

๐Ÿ‘ท Contributing

Reporting bugs helps us improve Aperture to be more reliable and user-friendly. Include all the required information to reproduce and understand the bug you are reporting. Follow helper questions in the bug report template to make it easier. If you see a way to improve Aperture, use the feature request template to create an issue.

To contribute code, read the Contribution guide.

Directories ยถ

Path Synopsis
cmd
aperture-agent command
Package main Agent
Package main Agent
aperture-agent/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
aperture-controller command
Package main Controller
Package main Controller
aperture-controller/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
aperturectl command
sdk-validator command
docs
tools/jsonnet command
tools/sdk command
tools/swagger command
extensions
fluxninja/extconfig
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
sentry/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
api
Package v1alpha1 contains API Schema definitions for the v1alpha1 API group
Package v1alpha1 contains API Schema definitions for the v1alpha1 API group
api/agent/v1alpha1
+kubebuilder:object:generate=true +groupName=fluxninja.com
+kubebuilder:object:generate=true +groupName=fluxninja.com
api/common
+kubebuilder:object:generate=true
+kubebuilder:object:generate=true
api/controller/v1alpha1
+kubebuilder:object:generate=true +groupName=fluxninja.com
+kubebuilder:object:generate=true +groupName=fluxninja.com
api/policy/v1alpha1
+kubebuilder:object:generate=true +groupName=fluxninja.com
+kubebuilder:object:generate=true +groupName=fluxninja.com
pkg
agent-functions/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
agent-info
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
cmd
cmd/agents
Server-side for handling agent functions
Server-side for handling agent functions
config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
discovery/kubernetes/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
dist-cache/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
etcd
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
google/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
jobs/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
k8s
log
metrics
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
net
net/grpc
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
net/grpcgateway
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
net/http
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
net/listener
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
net/tlsconfig
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
objectstorage/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
otelcollector/adapterconnector
Package adapterconnector adapts OTEL signals between pipelines.
Package adapterconnector adapts OTEL signals between pipelines.
otelcollector/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
otelcollector/leaderonlyreceiver
Leader-only-receiver wraps any metrics receiver and starts it only when agent is a leader.
Leader-only-receiver wraps any metrics receiver and starts it only when agent is a leader.
peers/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
policies/autoscale/kubernetes
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
policies/controlplane/runtime/tristate
tristate is a helper package for tri-state boolean logic, which is used for logical combinator components.
tristate is a helper package for tri-state boolean logic, which is used for logical combinator components.
policies/flowcontrol/selectors
Companion package for github.com/fluxninja/aperture/api/gen/proto/go/aperture/policy/language/v1 containing conversions of proto-generated struct into golang ones and other helpers.
Companion package for github.com/fluxninja/aperture/api/gen/proto/go/aperture/policy/language/v1 containing conversions of proto-generated struct into golang ones and other helpers.
policies/flowcontrol/service/preview/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
policies/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
profilers
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
prometheus/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
utils
mapstruct is similar in idea to mitchellh/mapstructure, with a difference that values are assumed to always be created through json serialization.
mapstruct is similar in idea to mitchellh/mapstructure, with a difference that values are assumed to always be created through json serialization.
watchdog
Ported from - https://github.com/raulk/go-watchdog
Ported from - https://github.com/raulk/go-watchdog
watchdog/config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL