C++ front/service proxy

What is Envoy?

Originally built at Lyft, Envoy is a high performance C++ distributed proxy designed for single services and applications, as well as a communication bus and “universal data plane” designed for large microservice “service mesh” architectures.

Envoy is a tool in the Load Balancer / Reverse Proxy category of a tech stack.

Envoy is an open source tool with 9.33K Github Stars and 1.4K Github Forks. Here’s a link to Envoy's open source repository on Github

Who Uses Envoy?

15 companies use Envoy including Tech Stack, Handshake, and B2C.

Envoy integrates with

Why people like Envoy

Here’s a list of reasons why companies and developers use Envoy.



Add a one-liner

Here are some stack decisions and reviews by companies and developers who chose Envoy in their tech stack.

Noah Zoschke
Noah Zoschke
Engineering Manager at Segment · | 28 upvotes · 35252 views
atSegment
Datadog
TypeScript
Envoy
gRPC
Go
#Observability
#Reliability
#Security
#Json
#REST
#Framework

We just launched the Segment Config API (try it out for yourself here) — a set of public REST APIs that enable you to manage your Segment configuration. Behind the scenes the Config API is built with Go , GRPC and Envoy.

At Segment, we build new services in Go by default. The language is simple so new team members quickly ramp up on a codebase. The tool chain is fast so developers get immediate feedback when they break code, tests or integrations with other systems. The runtime is fast so it performs great at scale.

For the newest round of APIs we adopted the GRPC service #framework.

The Protocol Buffer service definition language makes it easy to design type-safe and consistent APIs, thanks to ecosystem tools like the Google API Design Guide for API standards, uber/prototool for formatting and linting .protos and lyft/protoc-gen-validate for defining field validations, and grpc-gateway for defining REST mapping.

With a well designed .proto, its easy to generate a Go server interface and a TypeScript client, providing type-safe RPC between languages.

For the API gateway and RPC we adopted the Envoy service proxy.

The internet-facing segmentapis.com endpoint is an Envoy front proxy that rate-limits and authenticates every request. It then transcodes a #REST / #JSON request to an upstream GRPC request. The upstream GRPC servers are running an Envoy sidecar configured for Datadog stats.

The result is API #security , #reliability and consistent #observability through Envoy configuration, not code.

We experimented with Swagger service definitions, but the spec is sprawling and the generated clients and server stubs leave a lot to be desired. GRPC and .proto and the Go implementation feels better designed and implemented. Thanks to the GRPC tooling and ecosystem you can generate Swagger from .protos, but it’s effectively impossible to go the other way.

See more
Naresh Kancharla
Naresh Kancharla
Staff Engineer at Nutanix · | 2 upvotes · 13 views
Envoy

I use Envoy because it supports both http and http/2. It supports grpc and rest. It can even translates REST to Grpc. Best functionality i like from Envoy is it generates metrics which can be imported by Prometheus.

See more

Envoy's alternatives

  • AWS Elastic Load Balancing (ELB) - Automatically distribute your incoming application traffic across multiple Amazon EC2 instances
  • HAProxy - The Reliable, High Performance TCP/HTTP Load Balancer
  • Traefik - Load Balancer for Microservices
  • DigitalOcean Load Balancer - Scale your applications and improve availability across your infrastructure in a few clicks
  • Fly - A global load balancer with middleware

See all alternatives to Envoy