gRPCを実装するにあたり、最低限ここは理解が必要というポイントをまとめてあります。
そもそもgRPCとはどのような考え方で作られた通信方式なのかを学んだ上で、それを実現させるためにどのような技術が使われたのかを紹介します。
gRPCにはメソッドというものが用意されており、その「メソッドを呼び出す」という形で通信が行われます。 この章ではメソッドの形を定義するためのprotoファイルの書き方を簡単に触れておきます。
protoファイルで「gRPCでどのようなメソッドを呼び出したいか」が定義されたので、そこから実際にそのような通信をするためのGoのコードを作っていきます。 そしてprotoファイルからはgRPCクライアント/サーバー内で使うコードを自動生成させることができるのです。 この章ではそのコード自動生成のやり方を学びます。
protoファイルから自動生成されたコードを使って、簡単なgRPCサーバーを実装します。
protocコマンドから作られたコードで作れるのは、サーバーだけではありません。 今度はgRPCクライアントを実装し、5章で作ったサーバーにリクエストを送ってみます。
gRPCは「1リクエスト-1レスポンス」の通信だけではなく、リクエストとレスポンスがN:Mのストリーミングも行うことができます。 ここでは、gRPCが扱うストリームの種類について説明した後、それをHTTP/2を使ってどのように実現しているのかについて簡潔に触れたいと思います。
この章では、サーバーストリーミングRPCのコードをサーバー側・クライアント側ともに実装して動かしてみます。
ここでは、クライアントストリーミングRPCを実装し動かします。
ここでは、gRPCが行うことができる3つ目のストリーミング処理、双方向ストリーミングを実装して動かします。
ここからは「これを知っているとちょっとレベルの高いことができる」というAdditionalな内容をまとめてあります。
HTTPレスポンスステータスコードのように、gRPCでもサーバー内での処理の成功・失敗を表すための独自ステータスコードが存在します。
通常のHTTPサーバーでは、ハンドラの処理前後に別の処理を差し込むのはミドルウェアの役割です。 そして、gRPCで同じ役割を果たすのはインターセプタと呼ばれています。
gRPCにおいて、インターセプタというのは何もサーバーサイドだけのものではありません。 クライアントがリクエストを送信・レスポンスを受信するときに前後処理を挟むものもインターセプタと呼ばれています。 ここではクライアントサイドのインターセプタを作成・導入する方法を説明します。
メッセージデータ以外にも、認証情報やContent-Type、クライアントの種類などメタデータを送りたいという時があるかと思います。 ここでは、gRPCでメタデータの送受信をどう実装するかについて見ていきます。
gRPCのサーバー・クライアントコードを書くにあたって、どのような処理がゴールーチンセーフなのかをまとめて紹介します。
ここからは、gRPCサーバーをAWSにデプロイして動かすときに必要になる知識をまとめてあります。
せっかく作ったgRPCサーバーなのですから、ローカルだけではなくて実環境上でも動かしてみたいはずです。 この章では、AWSのECS/EKSでgRPCコンテナをデプロイする手順について簡単に紹介します。
せっかくクラウド上にgRPCサーバーをデプロイできたのですから、クラウドの便利機能を上手く活かした運用がしたいと思うはずです。 ここでは、ECSでのヘルスチェック機能を使うために必要になるgRPCサーバー・AWSでの設定を説明します。