gRPC
We utilize gRPC for all of our internal service communication. gRPC was chosen since it is very easy to build polyglot SDKs through service definitions, and adds an abstraction above the services, requiring only that the service meets the gRPC proto schema. It is also exceptionally fast, with requests on a connection that has been established taking sub 10ms sometimes.
All of our service proto files are in simpatra/x/proto and we compile them to the go sdk there and import into the go services.