No matter which language you’re writing your service in, it’s generally a good idea to
separate your external dependencies from your business-domain logic. Let’s say your order
service needs to make an RPC call to an external payment service like Stripe when a
customer places an order.
Usually in Go, people make a package called external or http and stash the logic of
communicating with external services there. Then the business logic depends on the
external package to invoke the RPC call. This is already better than directly making RPC
calls inside your service functions, as that would make these two separate concerns
(business logic and external-service wrangling) tightly coupled. Testing these concerns in
isolation, therefore, would be a lot harder.