gRPC とは何か メモ

用語としては、ずっと前から知っていたが具体的にどのように、どのような利点があるのかなどが分かっていなかった。書籍の SRE の中でも Googleロードバランサーのシステム内で、この gRPC を利用しているとあったので、興味を持ったのでちょっと調べることにしたので、ブログに簡単にまとめておく。

www.amazon.co.jp

gRPC

grpc.io

サブタイトルには、 A high performance, open-source universal RPC framework とある。つまり「OSS の RPC フレームワークで、高ハイアパフォーマンス」だと。

RPC

RPC という技術自体は、とても昔から存在する技術ではあるものも、私は使ったことがない。

https://ja.wikipedia.org/wiki/RPCja.wikipedia.org

プログラムから別のアドレス空間(通常、共有ネットワーク上の別のコンピュータ上)にあるサブルーチンや手続きを実行することを可能にする技術。

別の場所にあるシステムのある程度まとまった処理を呼び出せるようなイメージでしょうか。Webの技術としては、こういった別のシステムの処理を実行する場合、APIインターフェイスを通じてやり取りすることが多いと思いますので、RPC の場合、もっと結合度が高い形になりそうです。

Protocol Buffers

developers.google.com

gRPC のサイトを読むと、こう記載されている。

grpc / gRPC Concepts

By default, gRPC uses protocol buffers as the Interface Definition Language (IDL) for describing both the service interface and the structure of the payload messages.

gRPC のやり取りには、この Protocol Buffers というシリアライズフォーマットを使う必要があるようです。

シリアライズフォーマットと聞くと、MessagePack を思い出します。まぁその仲間ですね。

パフォーマンスも XML よりも高く表現にも幅があるようです。

Works across languages and platforms

面白い特徴だと思うのが、gRPC のサイトにある Works across languages and platforms です。 呼び出し元が、JavaでもRubyでも、呼ばれたサーバーサイド側の実装は、C++ でもなんでもいいということで、Ruby の処理の中で実はサーバー側のC++の処理が動いているという事になります。なんだかワクワクしてきました。

さいご

だいたい概要の把握は出来ましたので、次は何かしら実装していきたいと思います。