I am playing around with a gRPC server using Go, I understand that one of the benefits of gRPC/Protobuf is that you can use it to create a client library easily by using the same messages/service API that are being used in the server code.
If I am implementing a client library for my service, it obviously needs to import the service code and API, so I would eventually have a service, a server, and a client components. In production grade code - should all of these components exist in the same repository and be separated only by the go packages? Should the service be its own repository and serve as a dependency to anyone wished to implement server/client libraries for the service?