The diagram below shows the core components of Aperture architecture and how they integrate with an application.
Aperture Cloud is a highly available, fully managed load management platform offering:
- Hosted Aperture Controller
- Consoles for managing Aperture policies, Aperture Agents and self-hosted Aperture Controllers
- Traffic analytics dashboard
- Alerting system to notify about actions taken by Aperture Agents
Aperture Controller (hosted in Aperture Cloud)
Here the Aperture Controller is shown as part of Aperture Cloud, but it's also possible to self-host it.
The Aperture Controller is a centralized control system, equipped with a comprehensive global perspective. Its role is collecting data and evaluating policies. Policy evaluation results in high-level adjustments, which are then sent down to Aperture Agents.
Aperture Cloud provides a per-project Aperture Controller. It is programmed using declarative policies. Policies can be applied by configuring a pre-defined blueprint. It's also possible to build a policy from scratch from policy components.
Serving as the workhorses of the platform, Aperture Agents provide powerful flow control components. These include a weighted fair queuing scheduler for workload prioritization and a distributed rate-limiter for abuse prevention. These agents are deployed adjacent to services requiring load management and control traffic flows based on real-time adjustments from the Aperture Controller. They seamlessly integrate with service meshes, gateways, and HTTP middlewares. For more specific control, developers can use SDKs to manage specific features or code sections within services.
The Agents monitor service and infrastructure health signals using an in-built telemetry system. In addition, a programmable, high-fidelity flow classifier is used to label requests based on attributes such as customer tier or request type. These metrics are then analyzed by the Aperture Controller.
Aperture Agents schedule workloads based on their priorities, helping prioritize critical features over less important workloads during overload scenarios. For example, a video streaming service might prioritize a request to play a movie by a customer over a recommended movies API. A SaaS product might prioritize features used by paid users over those being used by free users.
Aperture Agents can be installed on a variety of infrastructure such as Kubernetes, VMs, or bare-metal. In addition to flow control capabilities, Agents work with auto-scaling APIs for platforms such as Kubernetes, to help scale infrastructure when needed.
Aperture Agents use metrics to provide input signals to policies in the Aperture Controller. These metrics can either be defined based on existing traffic using Flux Meters or using any OpenTelemetry Collector receiver. These metrics can then be used in policies using PromQL syntax.
For more details about the interaction between Aperture Controller and Agents and the exact databases, see Architecture of Self-Hosted Aperture.