背景
私はクライアント、サーバ、プロトコルなどのwebの基本知識がよく分かっていないままgRPCを使った開発に携わり、とても苦労したので自分なりに調べたことをまとめてみました。
gRPCの前に
gRPCがなんなのかを知る前にそもそもwebサービスの仕組みを知っておく必要がありました。下のサイトがわかりやすいと思いました。
https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/How_the_Web_works
一言でgRPCとはなんなのか
それではgRPCの説明です。まず僕がgRPCの勉強の始めに「gRPCとは」とgoogleで検索してみると、
googleが作った、HTTP/2とProtocol Buffersを利用したRPCシステム
とこんな感じに出てきました。しかし当時の僕に理解できた横文字はgoogleだけでした。
というわけで、ひとつずつ解説していきます。
HTTP/2とは
ウェブサーバーからウェブページのデータを取得するHTTPというプロトコルですが、お尻の「/2」はHTTPのバージョンです。ひとつ前のバージョンは「HTTP/1.1」であり、HTTP1.1は原則ひとつずつしかリクエストを送ることができません。それに対し、HTTP/2は複数のリクエストを同時に処理することが可能なため高速なwebページの読み込みが可能です。
Protocol Buffersとは
IDL(Interface Definition Language)のひとつ。インターフェースを定義して、コンパイラ(protoc)によってサーバ側とクライアント側のコードを自動生成します。
RPCとは
RPCとはRemote Procedure Callの略です。RPCを使えば「クライアントで関数を呼び出して遠隔のサーバでその関数の処理をして、結果をクライアントに返す」ということができます。
なぜgRPCを使うか
- マイクロサービス間の高速な通信
- Protoファイルのサービス定義がAPIスキーマとしての役割を果たすのでSchema Driven Developmentで高い生産性を実現