We've been using grpc-web from Improbable successfully for internal services. I'm working on a more production scale application soon that I'm planning on leveraging grpc-web for. The biggest missing feature is client side streaming support which is hamstrung the new wgfetch/streams API, but I feel confident in finding solutions for situations that generally require client side streaming.
Re:gRPC in Production
by simonhorlick on Saturday July 22, 2017 @04:05AM
(#14825976)
We've just gone live with a grpc-web based application. It's still early days and there are some rough edges, but it's an absolute joy to use and the amount of time we've saved is crazy.
I hadn't seen that. Thanks!
I'd say load balancing is still a big gRPC hurdle. See https://github.com/grpc/grpc/blob/master/doc/load-balancing.... for the current official stance on load balancing. It's pretty convoluted IMO.
I agree. You kind of have to roll your own for every language you use which is odd. And retries. Hopefully some more standard way of handling this will emerge.
EDIT: I enjoyed the GopherCon talk... I don't think the video is up yet but when it is I recommend watching...
Re:gRPC in Production
by leastangle on Friday July 21, 2017 @08:09PM
(#14824662)
I like the approach of custom name resolver though. Pretty straight forward to build one e.g. backed by Consul.
IIRC on K8s there are some gRPC-aware load balancers, possibly Envoy, I forget.
Re:gRPC in Production
by morecoffee on Saturday July 22, 2017 @03:48AM
(#14825923)
Surprisingly, the reason why gRPC JS web support doesn't exist is because of Chrome. There is currently no way to access the HTTP trailers from Javascript. gRPC depends on trailers to tell when an RPC is complete when doing bidirectional streaming.
Please tell browser devs to provide access to them! They have been part of the HTTP spec for years. Only recently have browsers entertained the idea:
https://bugzilla.mozilla.org/show_bug.cgi?id=1339096
https://bugs.webkit.org/show_bug.cgi?id=168232
https://bugs.chromium.org/p/chromium/issues/detail?id=691599
https://developer.microsoft.com/en-us/microsoft-edge/platfor...
There's also the fact that, for high level languages like python, the gRPC server has lower throughput than available python http servers. Even with the overhead of parsing http and whatever message format you're sending over it.
This is surprising given that there Python implementation is apparently C. Anyway I can't imagine this is the bottleneck in any nontrivial Python app.
Re:gRPC in Production
by papercruncher on Friday July 21, 2017 @08:42PM
(#14824787)
There's a known issue that's been open for a while, where a Python server could get stuck consuming 100% of a single CPU core, see https://github.com/grpc/grpc/issues/9688
Will there be any progress on JS web, or can it just not be done at all with HTTP1? Even a subset of features for basic GET/POST would be fine...