gRPC とは何か メモ
用語としては、ずっと前から知っていたが具体的にどのように、どのような利点があるのかなどが分かっていなかった。書籍の SRE の中でも Google のロードバランサーのシステム内で、この gRPC を利用しているとあったので、興味を持ったのでちょっと調べることにしたので、ブログに簡単にまとめておく。
gRPC
サブタイトルには、 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
gRPC のサイトを読むと、こう記載されている。
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++の処理が動いているという事になります。なんだかワクワクしてきました。
さいご
だいたい概要の把握は出来ましたので、次は何かしら実装していきたいと思います。