gRPC Building — Roadmap
Ten chapters that go from 'protobuf is a config language' to a polyglot, mTLS-secured, observable gRPC service running behind nginx, with streaming RPCs and tight deadlines.
What you will be able to do at the end
You will be able to design .proto files, generate code in Go, Node, and Python, ship a gRPC server with unary and streaming RPCs, set deadlines and propagate them, write interceptors for auth and logging, secure with mTLS, and deploy a self-hosted gRPC service behind nginx. By the end you will know exactly when gRPC is the right shape — and when REST or GraphQL fits better.
Prereqs: finish the Linux & VPS basics, Networking, and TLS & Certificates tracks. gRPC rides on HTTP/2 and TLS — without those tracks, the failure modes will mystify you. The REST API building and Web Server fundamentals tracks help too. Go is the primary language; the polyglot chapter covers Node and Python.
The 10 chapters, in order
Foundations
- What gRPC is and when to use it — RPC vs REST vs GraphQL, the actual tradeoffs
- Protocol Buffers — proto3 syntax, wire format, schema evolution
- HTTP/2 underneath — multiplexing, framing, flow control, why it matters
- Your first server and client — Go end-to-end, codegen, unary RPC
Real services
- Polyglot — Node and Python clients — same proto, three languages
- Streaming RPCs — server, client, and bidirectional streams
- Errors, deadlines, metadata — status codes, timeouts, headers
- Interceptors — middleware for auth, logging, retries, recovery
Production
- TLS and mTLS — certs, identity, peer authentication
- Production self-host — load balancing, observability, behind nginx
How to use this track
Read in order. The first three chapters explain the moving parts; chapter 4 ships running code. From there each chapter adds a real production capability. Total reading: ~3 hours. Hands-on, the first time you build it all: a long weekend.
You need Go 1.22+, the protoc compiler, Node 20+ and Python 3.11+ for chapter 5, and a VPS with a domain pointed at it for chapter 10. Everything else runs on localhost.