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
- ⏱️ Global Rate-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. Refer to the Rate Limiting guide 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.
- 🛡️ Adaptive Queuing: Enhance resource utilization and safeguard against abrupt service overloads with an intelligent queue at the entry point of services. This queue dynamically adjusts the rate of requests based on live service health, thereby mitigating potential service disruptions and ensuring optimal performance under all load conditions. Refer to the Service Load Management and Database Load Management guides 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 Adaptive Queuing use cases.
-
🚦 Aperture Agents are typically deployed next to the services and provide high-performance load management capabilities. They are responsible for scheduling and rate-limiting incoming requests based on the policies defined in the Aperture Controller. In addition, they also collect service health and flow metrics.
-
🤖 Aperture Controller executes observability-driven control policies and configures Aperture Agents. The control policies are expressed as circuit graphs consisting of interconnected signal processing blocks. The Aperture policies provide a programmable way to tailor sophisticated control policies to match any application's needs.
To try Aperture in a local Kubernetes environment, refer to Playground docs.
To install the Aperture system, follow the Installation guide.
- Concepts section in Aperture documentation provides an overview of Aperture's features and architecture.
- Guides section in Aperture documentation.
- Observability-driven Load Management deck covers the overview and use-cases of Aperture.
- SREcon'23 APAC | Mastering Chaos: Achieving Fault Tolerance with Observability-Driven Prioritized Load Shedding
- Chaos Carnival 2023 | Graceful Degradation: Keeping The Lights On When Everything Goes Wrong
- Conf42 Chaos Engineering 2023 | Graceful Degradation: When All Goes Wrong
- Demo | How Concurrency Limits Help Protect Against Cascading Failures
- Explainer | Build Indestructible Applications with Aperture Flow Control
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.