aperture

module
v0.12.1 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2022 License: AGPL-3.0

README ยถ

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

๐Ÿฅท What is FluxNinja Aperture?

Aperture is the first open-source flow control and reliability management platform for modern cloud applications.

Observe. Analyze. Actuate.

๐ŸŽ›๏ธ Why is flow control needed?

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.

โš™๏ธ Features

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.

โ–ถ๏ธ Explainer Video

Build Indestructible Applications with Aperture Flow Control

๐Ÿ—๏ธ Architecture

Aperture Architecture Overview

๐Ÿ Getting Started

๐ŸŽฎ Playground

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

Latency Gradient Policy Dashboard

๐ŸŽ๏ธ Installation

To install Aperture system, please follow the Installation guide.

๐Ÿ“– Tutorials

To learn how to write Aperture policies, please read the Tutorials.

๐ŸŽฅ Demo Video

How Concurrency Limits Help Protect Against Cascading Failures

๐Ÿ‘ท Contributing

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.

Directories ยถ

Path Synopsis
api module
gen/proto/go/aperture/entitycache/v1
Package entitycachev1 is a reverse proxy.
Package entitycachev1 is a reverse proxy.
gen/proto/go/aperture/flowcontrol/check/v1
Code generated by protoc-gen-deepcopy.
Code generated by protoc-gen-deepcopy.
gen/proto/go/aperture/info/v1
Package infov1 is a reverse proxy.
Package infov1 is a reverse proxy.
gen/proto/go/aperture/openapiv2/v1
Code generated by protoc-gen-deepcopy.
Code generated by protoc-gen-deepcopy.
gen/proto/go/aperture/peers/v1
Package peersv1 is a reverse proxy.
Package peersv1 is a reverse proxy.
gen/proto/go/aperture/plugins/fluxninja/v1
Package fluxninjav1 is a reverse proxy.
Package fluxninjav1 is a reverse proxy.
gen/proto/go/aperture/policy/language/v1
Code generated by protoc-gen-deepcopy.
Code generated by protoc-gen-deepcopy.
gen/proto/go/aperture/policy/monitoring/v1
Code generated by protoc-gen-deepcopy.
Code generated by protoc-gen-deepcopy.
gen/proto/go/aperture/policy/sync/v1
Code generated by protoc-gen-deepcopy.
Code generated by protoc-gen-deepcopy.
gen/proto/go/aperture/status/v1
Package statusv1 is a reverse proxy.
Package statusv1 is a reverse proxy.
gen/proto/go/aperture/watchdog/v1
Code generated by protoc-gen-deepcopy.
Code generated by protoc-gen-deepcopy.
cmd
aperture-agent
Package main Agent
Package main Agent
aperture-controller
Package main Controller
Package main Controller
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
agentinfo
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
config
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
discovery/kubernetes
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
discovery/static
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
distcache
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
etcd/client
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
jobs
+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
otelcollector
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
peers
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
plugins
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
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/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
profilers
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
prometheus
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
watchdog
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
playground
browser Module
demo_app Module
plugins
service/aperture-plugin-fluxninja/pluginconfig
+kubebuilder:validation:Optional
+kubebuilder:validation:Optional
service/aperture-plugin-sentry/sentry
+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