70
63
+ 1
0

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 11.7K GitHub stars and 1.9K GitHub forks. Here’s a link to Envoy's open source repository on GitHub

Who uses Envoy?

Companies
29 companies reportedly use Envoy in their tech stacks, including Tech Stack, Handshake, and Last.Backend.

Developers
40 developers on StackShare have stated that they use Envoy.

Envoy Integrations

Ambassador, Twill, AWS App Mesh, Google Traffic Director, and Dactory are some of the popular tools that integrate with Envoy. Here's a list of all 5 tools that integrate with Envoy.

Why developers like Envoy?

Here’s a list of reasons why companies and developers use Envoy
Top Reasons
Envoy Reviews

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

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

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
Joseph Irving
Joseph Irving
DevOps Engineer at uSwitch · | 7 upvotes · 12.7K views
atuSwitchuSwitch
Kubernetes
Kubernetes
Envoy
Envoy
Go
Go

At uSwitch we wanted a way to load balance between our multiple Kubernetes clusters in AWS to give us added redundancy. We already had ingresses defined for all our applications so we wanted to build on top of that, instead of creating a new system that would require our various teams to change code/config etc.

Envoy seemed to tick a lot of boxes:

  • Loadbalancing capabilities right out of the box: health checks, circuit breaking, retries etc.
  • Tracing and prometheus metrics support
  • Lightweight
  • Good community support

This was all good but what really sold us was the api that supported dynamic configuration. This would allow us to dynamically configure envoy to route to ingresses and clusters as they were created or destroyed.

To do this we built a tool called Yggdrasil using their Go sdk. Yggdrasil effectively just creates envoy configuration from Kubernetes ingress objects, so you point Yggdrasil at your kube clusters, it generates config from the ingresses and then envoy can loadbalance between your clusters for you. This is all done dynamically so as soon as new ingress is created the envoy nodes get updated with the new config. Importantly this all worked with what we already had, no need to create new config for every application, we just put this on top of it.

See more
Naresh Kancharla
Naresh Kancharla
Staff Engineer at Nutanix · | 2 upvotes · 4.5K views
Envoy
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

Jobs that mention Envoy as a desired skillset

See all jobs

Envoy Alternatives & Comparisons

What are some alternatives to Envoy?
Istio
Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio's control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.
nginx
nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev. According to Netcraft nginx served or proxied 30.46% of the top million busiest sites in Jan 2018.
linkerd
linkerd is an out-of-process network stack for microservices. It functions as a transparent RPC proxy, handling everything needed to make inter-service RPC safe and sane--including load-balancing, service discovery, instrumentation, and routing.
Trailblazer
Trailblazer is a thin layer on top of Rails. It gently enforces encapsulation, an intuitive code structure and gives you an object-oriented architecture. In a nutshell: Trailblazer makes you write logicless models that purely act as data objects, don't contain callbacks, nested attributes, validations or domain logic. It removes bulky controllers and strong_parameters by supplying additional layers to hold that code and completely replaces helpers.
HAProxy
HAProxy (High Availability Proxy) is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications.
See all alternatives

Envoy's Followers
63 developers follow Envoy to keep up with related blogs and decisions.
NiGHtmaSTeR24
Cameron Sexton
Mykhailo Molokov
Raul Gutierrez Segales
Allen Q
RuslanSaiko
Paresh Kadam
Jeff Cunningham
jonathb
Anindya Bhattacharya