I'm building a microservices architecture that requires microservices to communicate with each other. Searching Google has led me to believe that gRPC is the preferred method for achieving this. However, all the tutorials seem to hard-code RPC server addresses, which seems antithetical to the microservices architecture. When I search Google for how to avoid hard-coding addresses the results tend to involve API gateways, service discovery, load balancers, gRPC middleware, meshes, or some combination thereof. Is it really that involved to implement or is there a simple
de facto solution that I'm missing? If it is that involved, is there an advantage to using that over something like RabbitMQ RPC?
Edit: To clarify, I used "de facto" to refer to a technology that the gRPC team specifically endorses or maintains for this purpose. I've struck it out because I think it was conveying the wrong connotation.