Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consideration: Deprecate gRPC integration #3699

Open
xerial opened this issue Oct 28, 2024 · 0 comments
Open

Consideration: Deprecate gRPC integration #3699

xerial opened this issue Oct 28, 2024 · 0 comments

Comments

@xerial
Copy link
Member

xerial commented Oct 28, 2024

Deprecate gRPC integration. Airframe gRPC integration was introduced to facilitate efficient server-client communication. However, I'm considering dropping gRPC support for the following reasons:

  • gRPC single/async performance is now on par with the airframe-netty backend. There's no significant difference in performance, with both handling about 10,000 to 60,000 RPC calls per second.
  • grpc-web hasn't been updated recently, making it less appealing as a web-server backend for Scala.js client communication. Next release grpc/grpc-web#1466
  • The expected use cases for server/client/bi-directional streaming (e.g., chat, video streaming, online gaming) aren't always our primary focus. https://yousufsohail.medium.com/bidirectional-streaming-in-grpc-dcf8ae814a2f
    Moreover, most gRPC ecosystems assume the use of ProtocolBuffers, making streaming JSON/MsgPack data over gRPC less practical for our needs.

While the maintenance overhead for airframe-grpc has been relatively low due to its isolated nature, there are still some factors to consider before making a final decision on deprecation:

  • Current use case: The use case of airframe-gprc is small, even for myself, so it's not a big concern.
  • Future potential: Consider if there are any upcoming use cases or projects that might benefit from airframe-grpc. Sometimes, seemingly less-used modules can become valuable in future scenarios.
    • grpc-java represents an advanced use case of Netty, so having airframe-grpc still has a value as a comparison target when we need to support more streaming use cases over airframe-http-netty.
    • How difficult to support protobuf? Possible to use protocol buffers with airframe RPC? #3335 ScalaPB generates Scala case classes and interface from .proto files. Can't we generate Airframe RPC (Scala) interface and model classes from .proto?
@xerial xerial changed the title Deprecate gRPC integration Consideration: Deprecate gRPC integration Oct 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Design
Development

No branches or pull requests

1 participant