Envoy Proxy is a modern, high performance, small footprint edge and service proxy designed for large modern service oriented architectures.
As stated in the official documentation, Envoy is a self contained process designed to run alongside every application server. All of the Envoys form a transparent communication mesh in which each application sends and receives messages to and from localhost and is unaware of the network topology. The out of process architecture has two substantial benefits over the traditional library approach to service-to-service communication.
Envoy works with any application language. A single Envoy deployment can form a mesh among Java, C++, Go, PHP, Python, etc. It is becoming increasingly common for service oriented architectures to use multiple application frameworks and languages. Envoy transparently bridges the gap.
As anyone who has worked with a large service oriented architecture knows, deploying library upgrades can be incredibly painful. Envoy can be deployed and upgraded quickly across an entire infrastructure transparently.
Other features included with Envoy are:
- Service discovery and dynamic configuration
- Health checking
- Advanced load balancing
- Observability
- gRPC
We use Envoy to effortlessly generate API gateways from a YAML configuration file. For each model of an API gateway, a new Envoy file will be generated; the name of the gateway will be the prefix of the Envoy YAML file, which contains instructions for generating the gateway. Each file will generate a process consisting of a single gateway, which characteristics are defined in the listeners
section of the file. The services the gateway invokes are defined under the clusters
section.