gRPC deep dive: from service definition to wire format
In our previous posts (part 1 and part 2), we demystified Protocol Buffers and learned how data is encoded into compact binary.
But Protobuf is just the payload. To send this data between microservices, we need a transport protocol. Enter gRPC.
While many developers use gRPC daily, few look under the hood to see how it actually works. In this post, we’ll go beyond the basics and explore the full gRPC protocol stack: from the high-level service architecture and streaming models down to the low-level HTTP/2 framing and byte-level wire format.