Lapis Lazuli

technical blog for web developer

gRPCを学ぶ

先週、golang.tokyoのLT発表会に参加してきました。
LTを16回も発表するという、かなり長丁場の勉強会でしたが、その中で結構gRPCについて言及しているのが多いな。と思いました。
やっぱりマイクロサービスとして使われる事が多いGoだし、gRPCもやりたいな・・・という欲が沸々と湧いてきましたw

gRPCって?

ざっくりと言うとプロトコルのようなものでしょうか。
データがシリアライズ化され、高速な通信が可能となるみたいです。
なのでマイクロサービス間のやり取りに使われる事が多いようです。
詳しくはこちら。

www.grpc.io

Goでの実装

実装するならやっぱり主流のGoでやるのが一番かなと思いました。
検索すると一番記事も多いですし、何よりGoogle同士なので相性が良さそう。

gRPCの特徴

protoファイルに記述する

protoファイルにAPIの仕様を定義して、サーバーサイドなどでソースコードを生成する流れになります。
なのでAPIの仕様を統一できるのがメリットになります。

パラメータに型づけができる

RESTAPIなどにはない仕様ですね。型があることで特に静的言語との相性が良さそう。

HTTP/2に対応

従来のHTTPと違い、高速なストリーミング通信が可能で何度も通信して取得する必要がなくなるHTTP/2に対応しています。
さすが最新のプロトコルですね。

と、色々と挙げましたが、現代の通信量環境に適したものだということは、これらから何となく分かるかなと思います。
特にマイクロサービス設計のキモは各サービス間の通信にあると思いますので、こうやってGoogle自らプロトコルを作ってくれるのは本気度を感じます。
更に同じGooglek8sと併せるとインフラレイヤーもGoogle一色になりますね。

という事で今後Goを重点的にやるにあたり、やっぱりマイクロサービスについてもっと勉強したいなと思った勉強会でした。
まずは資料をじっくりと読み込もう・・・