To start things off, we’re keeping it simple: cover the basics of gRPC and Protobuf, and then build an RPC setup (not gRPC yet, gRPC is just typical way to implement RPC). Timestamp created_at = 5 ; } message GetUserRequest { int32 user_id = 1 ; } message GetUserResponse { User user = 1 ; } // Service definition service UserService { rpc GetUser ( GetUserRequest ) returns ( GetUserResponse ); // Fetch a single user rpc CreateUser ( User ) returns ( GetUserResponse ); // Create a new user } Once the method finishes running and we’ve got a result, the server encodes both the result and any potential error using the codec (again, default is gob ) and sends it back to the client over the same connection.