gRPC 1.0: modern RPC over HTTP/2 with Protocol Buffers

gRPC 1.0 (August 2016) by Google: high-performance RPC framework on HTTP/2, Protocol Buffers schema, bidirectional streaming. De facto standard for polyglot microservice communication.

Open SourceWeb gRPCGoogleProtocol BuffersHTTP/2RPCMicroservicesOpen Source

Google Stubby goes open

gRPC is the open source version of Stubby, Google’s internal RPC system used for over a decade for billions of requests per second between services. Google decides to open it to standardise the industrial microservices space.

The release

gRPC 1.0 is released on 23 August 2016. Apache 2.0 licence. Donated to CNCF (Cloud Native Computing Foundation). Name: “gRPC Remote Procedure Calls” (recursive acronym). Historical inspiration: UNIX RPC, CORBA, SOAP, Thrift (Facebook), Avro (Hadoop).

Architecture

  • HTTP/2 as transport — multiplexing, streaming, header compression
  • Protocol Buffers (protobuf) as IDL and wire format — compact and typed binary schema
  • Code generation for client and server in 10+ languages
service UserService {
  rpc GetUser (UserRequest) returns (User);
  rpc ListUsers (UsersRequest) returns (stream User);
}

message UserRequest { string id = 1; }
message User { string id = 1; string name = 2; }

Call types

  • Unary — one request, one response
  • Server streaming — one request, many responses
  • Client streaming — many requests, one response
  • Bidirectional streaming — both stream

Advantages

  • Performance — binary protobuf vs JSON: 3-10× more compact and faster
  • Type safety — enforced schema contract
  • Polyglot — C++, Java, Go, Python, Ruby, Node, PHP, C#, Dart, Kotlin, Swift
  • Native streaming — RPC and data in a single connection
  • Deadlines and cancellation — built-in
  • Interceptors — middleware-like

Limits

  • Difficult debugging — no human-readable payload, need grpcurl or BloomRPC
  • Browser — HTTP/2 trailers not supported in fetch; need gRPC-Web or Connect
  • L7 load balancing more complex than HTTP/1.1 JSON
  • Schema migration — breaking backward compatibility in protobuf is easy

Tools

  • gRPC-Web — browser→server bridge via Envoy proxy
  • Connect (Buf, 2022) — gRPC + gRPC-Web + REST-JSON unified
  • Buf — protobuf linter/breaking detection/registry
  • Protolock — contract versioning

Adoption

gRPC is used in high-profile tech environments:

  • Google Cloud internal APIs
  • Netflix — Ribbon, Eureka migration
  • Uber — RIB framework
  • Square, Slack, Dropbox — internal microservices
  • CockroachDB, etcd, Dgraph — internal protocols

In the Italian context

gRPC is present in tech-forward Italian teams:

  • Fintech — internal microservices (Fineco, Banca Sella, challengers)
  • Trading platforms — low latency
  • AI/ML serving — Triton Inference Server, Ray Serve use gRPC
  • Industrial IoT — edge computing with streaming
  • Cloud-native startups — Go and Rust ecosystem

References: gRPC 1.0 (23 August 2016). Google. Apache 2.0 licence. CNCF project. Based on HTTP/2 and Protocol Buffers. Unary/streaming types. gRPC-Web, Connect (Buf) extensions.

Need support? Under attack? Service Status
Need support? Under attack? Service Status