ELI5 · Networking & the web

gRPC.

Two services that studied the same rulebook once, then speak in dense shorthand forever after.

Text “it happened again” to your oldest friend and they know exactly what you mean; a stranger reading over your shoulder learns nothing. Shared context is compression. gRPC applies that to services: instead of mailing self-describing JSON where every field announces its own name, both sides study one schema in advance and then exchange terse binary that only rulebook-holders can decode.

The other half of the idea is comfort. Nobody builds URLs or parses response bodies by hand — tooling generates code from the schema, so calling the other service looks like calling a function. Your code says getUser(42), and the serialising, sending, and decoding happen out of sight.

  1. Dear server: users, please.
    { "users": [...] } anyone can read it
    1

    JSON spells out every field name inside every message — that self-description is exactly what makes it readable.

  2. Page two of the request…
    bulky, slow to parse reading…
    2

    The readability is paid for on both ends, in bytes shipped and in time spent parsing text.

  3. Same book, both of us.
    .proto same rulebook
    3

    The .proto file is the single agreement both sides compile from, so a field cannot quietly mean two things.

  4. Says plenty, weighs nothing.
    0x1A4F small & fast
    4

    With names settled in advance, the wire carries only values — a fraction of the bytes, decoded without guessing.

  5. getUser(42). Done.
    service A service B getUser() like calling next door
    5

    Generated stubs hide the network entirely; the remote call sits in your code like any local function.

  6. Is this… math?
    browser 0x1A?! 0x1A4F
    6

    Outsiders never learned the rulebook — a browser needs a translating proxy to join this conversation.

A plain letter anyone can read, versus two machines speaking a tight private shorthand.

Where the speed comes from

Three savings stack. Binary messages run several times smaller than the same data as JSON, and decoding them is a direct read rather than text parsing. HTTP/2 underneath multiplexes many calls over one connection and streams in both directions, so chatty services stop paying per-call setup. And the schema is enforced when code is built: rename a field carelessly and the compiler objects today, instead of a consumer crashing next Tuesday.

Pick your audience

Private shorthand is for insiders. Between microservices you control at both ends, gRPC’s speed and strictness cost little and save plenty. At the public edge it turns awkward: browsers cannot speak it without help, and you cannot eyeball a binary payload the way you can curl a JSON API and read the answer. The common shape is plain HTTP where strangers knock, gRPC where the family talks.

The real version gRPC vs REST, in depth →
Found this useful?