'grpc network compatibility and comparisons to Websockets and HTTP2
We have a large number of IoT like devices that push hundreds of megabytes of binary encoded data across the internet to an AWS endpoint. We presently use HTTP 1.1 and REST as our protocol. We would like to significantly improve our end to end latency. We are looking to move to gRPC. Overall, most of the gRPC literature I have read is quite favorable. Our IoT devices typically sit within external customer network domains. These customers, for the most part, exercise prudent network security measures. Full duplex is not really a requirement but more of a nice to have. My questions are,
Does gRPC work well in modern extra-networked environments. If I go with gRPC am I going to have networking or security issues. Are there any dark lurking networking issues with gRPC that may surprise us?
How well does gRPC interface with most of the AWS services? Will I require any special proxies to support gRPC to HTTP compatibility conversions? What key AWS services do not support gRPC. Which ones do?
Are there any network proxy compatibility issues. Will I have problems with HA Proxy, AWS EKS, What about k8s ingress controllers (proxies). What about AWS ALB's?
We will be using OIDC OAuth2 for API token security. It appears to be supported by gRPC. Any problems that may it more difficult to implement? Is it's integration seamless?
We are also looking at Websockets along with Protobuf. Is there much latency difference between Websockets/Protobuf and gRPC/Protobuf? Which is better for our IoT implementation?
What about HTTP/2? What is the relative performance compared to Websockets and gRPC? How about AWS compatibility to HTTP2.
I guess I am trying to pick the best technology between gRPC, Websockets, and HTTP2 with the lowest integration risk and highest performance connected to an AWS endpoint. Your thoughts are welcome.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
