Rest vs. GRPC for Micro Services

This question is not as simple as it appears. I think grpc is an obvious choice for micro service interface however when it comes to client access there are times when http will be chosen over grpc for a variety of reasons. I would just like to know what others are seeing out there. Frankly both Envoy grpc- json transcoding feature, and grpc-gateway seem a bit brittle to me for production use. With grpc-gateway I think I know what its doing but with json transcoding not really sure how thats implemented or what the options are for customizing it. There is one page of documentation and not much response about it. Also note that grpc-gateway is not apache 2.0 license and no one is really committed to maintaining it long term. As Istio users we are all kind of committed to Envoy via the sidecar pattern so its really quite a serious matter to know what the plans are for json transcoding support. The tickets get closed with any level of support. There is quite a bit involved with supporting grpc. Streaming and GRPC codes etc. Now one thing I have heard is that just dont dont mix protocols in this way. But how then to support clients that cant or won’t use grpc? Do you build a giant rest service and proxy all the calls? . Of course I would prefer end to end GRPC. But how many places are doing end to end grpc? I would like to know the experiences of others in terms of external facing api gateway? What are you using and is it working for you. Please share your experiences with these options. Thanks.

Have you seen the gRPC HTTP/1.1 bridge: https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/grpc_http1_bridge_filter? Seems slightly less brittle to me.

1 Like

No I had never heard of this option. I will definitely take a look.

Yes I will update soon on this

@Steven_O_brien I haven’t used it yet, but possibly plan to. Can you update this thread with your results?