Envoy Mobile
eng.lyft.com
eng.lyft.com
It stems from the spdy/h2 GOAWAY frame, from prior work I did with these protocols.
Please don't take it personally.
What is the ultimate goal here? Reduce the amount of boilerplate required to handle all possible edge cases when communicating with a remote service, like need to retry, etc?
I'd like to understand the value prop from a perspective of a generic api client, that does not now if there is Envoy, or any other load balancer on the other end.
From the post.
"Low-level networking improvements like HTTP/2, QUIC, QUIC to TCP failover, gRPC, DNS replacements, push/streaming, observability, analytics, state of the art TLS, retry and timeout policies, etc. take a tremendous amount of effort both to implement robustly as well as to make consistent across all of the Android and iOS versions in common use. Envoy Mobile will provide all of this functionality in a consistent cross-platform manner, especially when paired with Envoy running at the edge, similar to how server-side Envoy provides consistency to polyglot distributed application architectures."
On servers and desktops, applications can be built with any language and any framework. To support all of that with a library would be an expensive task that would effectively never be finished. Sure, you could pick the N most-popular languages/frameworks to support, but even that list will be moving target over time. A sidecar proxy there makes a lot more sense, and can work with any language or framework, at the expense of a bit of tighter integration.
Typically (in the past) both client and server have been VMs or containers.
Client side it can do things like automatic retries, routing decisions and fault injection (among others). It's super useful.
What this adds is the ability to deploy it as a client in more places...a couple of billion more places!
We're adopting xDS as an abstraction for our service discovery. Implementing it has been relatively straightforward even with the relatively minimal documentation outside of the hints provided by the Envoy specific configuration elements.
* routing rules potentially sensitive architectural
information and expose many different nodes to the
public internet
* a mobile client doesn't generate enough "load" that the
typical use case for load balancing would be used for
* retry & timeout policies seem useful
However, I'm a curmudgeon that doesn't see a huge benefit to a service mesh over a traditional load balancer in the vast majority of applications. Load balancers can offer a lot of the same functionality at scale (thousands of requests per second) and abstract these ideas away from the client, which has more benefit, in my opinion.I have used smart clients in the past to interface with, what is now being called, a service mesh. For low latency operations that could possibly hit one of thousands of hosts, it worked well… until network fabric changed and hosts were no longer directly accessible. Then operations became increasingly difficult since you had to be on the appropriate network to communicate.
What benefits would you like to see for a browser-based app?
Although arguably iOS/Android sandboxing is already akin to a container.