Sredny M Casanova
Sredny M Casanova

Reputation: 5053

Serve gRPC and Restful service in one single Go App

I have a restful application made in Go, now I have to make this app also serve as gRPC server (I already created the needed files). I have the restful endpoints running in the port 8000, now I have the next questions:

  1. Can I server grpc as well as the restful app in the same instance?
  2. Should I assign a different port to serve gRPC?
  3. What is the recomended approach in this case? as the grpc stub will be only consumed by some of our microservices, but the restful will be consumed by the frontend of some apps
  4. In the case that I can serve boths, how should I initialize the servers?

Upvotes: 2

Views: 1669

Answers (1)

Carl Mastrangelo
Carl Mastrangelo

Reputation: 6628

  1. Yes! If you want to serve gRPC as a RESTful service, there is a gRPC Gateway project that allows you to annotate your Protos, so they can be served over REST.

  2. Yes, but this gets a little trickier. The gRPC server in Go implements net/http.Handler, so you can add it to your existing HTTP server. Getting the URL paths to match is something you'll need to play around with, but it is certainly possible.

  3. I don't think there is any recommended approach. It depends mainly on environment constraints (such as if there are proxies, how you encrypt your connections, etc.).

  4. Initialize the gRPC Server first, and then add it to the HTTP server.

Upvotes: 2

Related Questions