gRPC is een framework waarmee de ene softwareservice de andere over het netwerk aanroept alsof het een functie in zijn eigen code is. Het is door Google gebouwd voor snelheid: in plaats van leesbare tekst stuurt het compacte binaire berichten en houdt het verbindingen open om opstartkosten te vermijden. Daardoor is het een populaire keuze voor verkeer tussen interne services.

Denk aan twee afdelingen in een bedrijf die via een vaste telefoonlijn praten in plaats van brieven te sturen. De lijn staat altijd open en ze spreken een strakke, afgesproken steno, dus elke uitwisseling is snel. Een REST API lijkt meer op een net geschreven brief in JSON: makkelijk te lezen voor een mens, maar zwaarder om te versturen en trager te verwerken bij grote aantallen.

Die afgesproken steno komt uit een bestand dat een protocol buffer heet, waarin beide kanten vooraf de exacte vorm van elk bericht vastleggen. Uit die ene definitie kan gRPC bijpassende code genereren in veel talen, zodat een service in Go en een service in Java automatisch over het formaat akkoord zijn. Het ondersteunt ook streaming, waarbij data continu in beide richtingen stroomt in plaats van één verzoek en één antwoord.

gRPC betaalt zich echt terug binnen een systeem dat uit microservices bestaat, waar tientallen kleine services constant met elkaar kletsen en elke milliseconde telt. Browsers kunnen het niet rechtstreeks aanroepen, dus teams houden vaak een publieke API in REST of GraphQL en gebruiken gRPC achter de schermen. Het nadeel: het binaire formaat is lastiger met het blote oog te lezen als er iets misgaat.

Bij TopDevs grijpen we naar gRPC binnen de backend van een klant als services snel en vaak moeten praten, terwijl we de laag naar buiten in een formaat houden dat alles kan lezen.