Aperture is a reliability automation platform for cloud native applications. Aperture adaptively protects and recovers applications from outages by techniques such as concurrency limiting, rate limiting and auto-scaling.
Modern cloud application architectures such as microservices are vulnerable to cascading failures in face of sudden loads, new deployments and performance issues. Reliable operation is impossible without effective flow control. In addition, flow control enables graceful degradation, which is the ability to preserve key user experience pathways even in the face of application failures.
At the fundamental level, Aperture enables flow control through observing, analyzing, and actuating, facilitated by agents and a controller.
-
🚦 Aperture Agents live next to your service instances as a sidecar and provide powerful flow control components such as a weighted fair queuing scheduler for prioritized load-shedding and a distributed rate-limiter. A flow is the fundamental unit of work from the perspective of an Aperture Agent. It could be an API call, a feature, or even a database query.
-
🤖 Aperture Controller is the "brain" of system. It is powered by always-on, circuit graph driven policies that continuously track deviations from service-level objectives (SLOs) and calculate recovery or escalation actions.
To try Aperture in a local Kubernetes environment, refer to Playground docs.
To install Aperture system, please follow the Installation guide.
To learn how to write Aperture policies, please read the Tutorials.
Reporting bugs helps us improve Aperture to be more reliable and user friendly. Please make sure to include all the required information to reproduce and understand the bug you are reporting. Follow helper questions in bug report template to make it easier. If you see a way to improve Aperture, use the feature request template to create an issue. Make sure to explain the problem you are trying to solve and what is the expected behavior.
To contribute code, please read the Contribution guide.