メインコンテンツまでスキップ

RPC(Remote Procedure Call)  リモートプロシージャコール

RPCとは、ネットワークで接続された他のコンピューターでプログラムを呼び出し実行させるための手法、あるいはそのプロトコルのことをいう。
ネットワーク経由でプログラムの処理を呼び出し・実行することで、遠隔地にあるコンピューターが処理を行い、その処理結果を受け取ることができる。
分散システムにおいてネットワーク経由で遠隔地のコンピューターに処理を行わせるには、TCP/IPやUDPなどの低レベルの通信レイヤーを利用する必要がある。 しかし、機能ごとにプロトコルを設計するのは非効率的なので、関数による呼び出しを抽象化し、共通規格にしたのがRPC。

RPCは昔からある考え方だが、、どのようなフォーマットでデータをやり取りするかは時代に応じて変化しています。 たとえばデータフォーマットにXMLを利用するXML-RPCや、JSONを利用するJSON-RCPがあります。これらは広く普及しているXMLやJSONを利用するため導入しやすいといった利点がありますが、テキストベースで情報を交換するので転送効率が悪く、バイナリ形式のデータが扱いにくいなどの問題がありました。

これらが抱えていた問題を解決するために考えられたのがgRPCというオープンソースのRPCフレームワークです。Googleが開発したプロトコルで、Protocol Buffersを使ってデータをシリアライズし、高速な通信を実現している点が特長です。また、C++/Python/Node/JavaScriptなど、さまざまな言語がサポートされています。