サービス間通信技術「gRPC」の基礎知識――「Protocol Buffers」とは?:スキマ時間にこっそり学ぶ「gRPC」入門(1)
第1回は、サービス間の通信技術として古くから使われているRPCの解説から入り、gRPCの登場、特徴、サポートされるプラットフォームやプログラミング言語、データ交換フォーマットであるProtocol Buffersのあらましについて紹介します。
本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。
gRPCの概要
Googleによって開発され、オープンソース化された通信技術である「gRPC」は、マイクロサービスアーキテクチャにおけるサービス間の通信手段としてはもとより、モバイルアプリがサービスにアクセスするためのインタフェースとしても注目されています。現在ではLinux Foundation傘下のCloud Native Computing Foundation(CNCF)のもとで開発されています。
本連載では、gRPCについて、さまざまなプログラミング言語によるアプリケーションの実装を通じて、技術的な仕様や開発手法を紹介していきます。
RPCとは?
gRPCは、RPCという通信プロトコルです。RPCとはRemote Procedure Callの略で、日本語にすると「遠隔手続き呼び出し」となります。RPCは、他の多くのプロトコルと同様にクライアント/サーバ型のモデルを採用しています。サーバに用意された、サービスのための手続き(関数)をクライアントがパラメーターとともに呼び出し、クライアントはその結果を受け取ります(図1)。
RPC自体は、決して新しい技術ではなく、考え方自体はインターネット(TCP/IP)の登場以前からありました。例えば、Sun Microsystems(現Oracle)の開発したRPCの実装であるSunRPCです。1980年代には情報共有のためのNIS(Network Information Service)やファイル共有のためのNFS(Network File System)が、C言語のライブラリとして実装されていました。開発者はあたかも自コンピュータ内における手続き呼び出しと同じ感覚で、外部のコンピュータのサービスを利用できました。
RPCの実装は上記のSunRPCをはじめとしてさまざまあり、時代とともに変化してきました。近年では、標準的なプロトコルであるHTTPやHTTPSを通信路に使い、XML形式やJSON形式のデータをやりとりするというXML-RPCやJSON-RPCがよく使われていました。標準的な技術を使用するため導入しやすいというメリットがありますが、反面、以下のようなデメリットが指摘されていました。
- XML/JSONというテキストベースのやりとりになるので伝送効率が悪い
- テキストフォーマットなのでバイナリデータは扱いにくい
- HTTP/HTTPSでのやりとりになるので通信路のオーバーヘッドが大きい
このような問題点を解消するために登場したのが、gRPCです。
gRPCとは?
Copyright © ITmedia, Inc. All Rights Reserved.