gRPC本6選|GoとProtocol Buffersで学ぶマイクロサービスのサービス間API実務

PR:この記事にはアフィリエイトリンクが含まれます。

gRPCはGoのマイクロサービス間でAPIを呼ぶための仕組みです。Protocol Buffersで通信の契約を定義し、生成コードでクライアントとサーバーをつなぎます。

型を揃えやすいのは利点です。一方、API変更やタイムアウト、障害時の処理まで考えておかないと、実務では困る場面が出てきます。通信の定義に加えて、互換性やエラーへの対応も大事な設計項目です。

書籍の全体像

紹介する6冊は、最初のgRPC実装から分散システムの運用まで扱います。主題と対象を一覧にまとめました。

書籍主に扱う内容対象・言語
スターティングgRPCスターティングgRPC.proto、Goサーバー、ストリーミング日本語・入門
実践!Go言語とgRPCで学ぶマイクロサービス開発実践!Go言語とgRPCで学ぶマイクロサービス開発CQRS、Interceptor、TLS、テスト日本語・Go
Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築エラー処理、認証、Kubernetes日本語・Go
gRPC: Up and Running: Building Cloud Native Applications with Go and Java for Docker and KubernetesgRPC: Up and Running: Building Cloud Native Applications with Go and Java for Docker and KubernetesHTTP/2、4種類のRPC、運用英語・中級以上
gRPC Microservices in GogRPC Microservices in Go互換性、リトライ、タイムアウトGoの基礎知識
Microservices with Go: The expert's guide to building secure, scalable, and reliable microservices with Go, Second EditionMicroservices with Go: The expert’s guide to building secure, scalable, and reliable microservices with Go, Second EditiongRPC、Kafka、監視、セキュリティ英語・Go

価格は参考価格です。実売は時期や販売店によって変わります。各書籍の価格と刊行時期は、個別の紹介で触れます。

gRPCの境界

gRPCでは、Protocol Buffersの定義からメッセージや呼び出し用のコードを生成します。呼び出し側と受け側が同じAPI契約を共有するため、文字列の組み立てやJSON項目名の打ち間違いを減らせます。

公開APIをブラウザーから使う場合は、JSONを扱いやすいRESTが向くこともあります。一方、Goの内部サービス間で型を保って呼び出すなら、gRPCが有力です。利用者と運用環境に合わせて設計します。

API境界はデータベースのテーブル構造をそのまま写す場所ではありません。注文サービスなら、注文作成と注文参照のどちらを受け持つか先に決めておくと、責任範囲も.protoの定義も整理しやすくなります。

Proto契約

.protoではメッセージのフィールドや番号、サービスのメソッド、リクエストとレスポンスを定義します。フィールド番号は通信上の識別に使われるため、削除した番号を別の意味で使い回すのは避けましょう。

稼働中のサービスでは、新旧のクライアントとサーバーが同時に動くことがあります。項目は小さく追加し、削除したフィールドの番号や名前を予約しておけば、後からの誤用を防ぎやすくなります。

Goのコード生成は、手元で一度成功すれば終わりではありません。開発者とCIで同じ結果を出すために、コンパイラーやプラグインのバージョンを固定します。定義変更が生成コードやテストに反映されたかも確認してください。

GoのRPC設計

Goのハンドラーにはcontextを渡し、呼び出し元のキャンセルや期限を下流まで伝えます。期限のないRPCが増えると、遅い依存先を待ち続けて処理枠をふさぐことに。クライアント側でタイムアウトを設けるのが基本です。

エラーは同じ文字列で返さず、gRPCのステータスコードで意味を分けます。未認証・権限不足・対象なし・一時的な利用不能を区別すれば、クライアントも再試行するか判断しやすいでしょう。

認証やログ、メトリクスなどの共通処理はInterceptorに置くと、各メソッドでの重複を抑えられます。ただし業務上の検証まで押し込むと追いにくくなるため、責務の境界ははっきりさせておきたいところです。

ストリームと運用

Unary RPCはひとつの要求にひとつの応答を返す基本形です。複数のメッセージを扱う場合は、サーバー側・クライアント側・双方向のストリーミングが候補になります。進捗通知や連続データの送受信などで使われます。

ストリームは接続後の状態管理が増える点に注意が必要です。切断やキャンセル、遅い受信側への対応を決め、バッファーを無制限に増やさない設計にします。単発の要求で足りるなら、Unary RPCの方が追いやすいですね。

本番ではTLSで通信を保護し、サービス発見やテストも整えます。ログとメトリクスも欠かせません。成功率に加えて遅延やタイムアウト、ステータスコード別の失敗を観測できれば、障害の場所を絞り込みやすくなります。

入門を動かす

『スターティングgRPC』は2020年刊で、印刷版は166ページです。RESTとの違いから始まり、.protoの基本やGoのgRPCサーバーを順に試せる構成になっています。

GoサーバーにRubyクライアントを組み合わせるため、異なる言語から同じ契約を呼び出す様子が分かります。Protocol Buffersの文法やスタイル、Goコード生成もまとめて確認できる実用的な内容です。

単方向・双方向ストリーミングに加え、Interceptorによるログや認証も扱います。印刷版の参考価格は税別2,000円です。gRPCを初めて動かし、API定義から呼び出しまで試したい人におすすめします。

スターティングgRPC

スターティングgRPC

インプレス NextPublishing

Amazonで見る

CQRSを実装する

『実践!Go言語とgRPCで学ぶマイクロサービス開発』は2024年刊で、254ページです。Command ServiceとQuery Service、さらにそれらを使うCQRS Clientを作り、サービス分割をコードで追っていきます。

Protocol Buffersのメッセージやサービス定義を扱い、Goコード生成とサーバー・クライアント、Interceptorの実装にも進みます。読み取りと更新の責務を分けた構成を学べる題材です。

Stream RPCやTLSに加えて、Ginkgo V2などを使うテストも扱います。参考価格は税込3,960円です。テストを含む実装の流れを見たい人におすすめします。

実践!Go言語とgRPCで学ぶマイクロサービス開発

実践!Go言語とgRPCで学ぶマイクロサービス開発

科学情報出版

Amazonで見る

分散サービスを学ぶ

『Go言語による分散サービス』は2022年刊の280ページです。Protocol BuffersとgRPCの基本実装から始まり、Goで分散サービスを組み立てる内容へ進みます。

サーバーやクライアントのテストに加えて、エラー処理や認証・認可、サービスディスカバリと観測も扱います。RPCを通した後に必要になる論点まで学べるのが特徴です。

Kubernetesへのデプロイも範囲に含まれ、通信実装と運用のつながりが見えてきます。参考価格は税込3,520円。分散化後の保守まで学びたいGo開発者におすすめです。

Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築

Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築

オライリー・ジャパン

Amazonで見る

英語で全体を追う

『gRPC: Up and Running』は2020年刊の英語書籍で、202ページです。GoとJavaの例を交え、Protocol BuffersやHTTP/2などの基本技術から解説します。

Unary・サーバー側・クライアント側・双方向の4種類のRPCを扱い、Goサーバーとクライアントの実装も登場します。期限やキャンセル、エラー処理など、実運用で迷いやすい点にも触れています。

セキュリティやテストに加え、デプロイと観測も扱います。英語の技術書を読める中級以上の人には、RPCパターンとクラウド環境での利用をまとめて学ぶ本としておすすめです。

gRPC: Up and Running: Building Cloud Native Applications with Go and Java for Docker and Kubernetes

gRPC: Up and Running: Building Cloud Native Applications with Go and Java for Docker and Kubernetes

O’Reilly Media

Amazonで見る

障害対応を深める

『gRPC Microservices in Go』は2023年刊で、200ページです。Goの基礎がある開発者を対象に、.protoの定義やコード生成、APIの前方・後方互換性を扱います。

ステータスコードやエラー詳細に加え、リトライやタイムアウト、サーキットブレーカーも取り上げます。サービス間通信が一時的に失敗した際の再試行方針を考える材料になります。

ロードバランシングとTLS、テストや監視に加えて、Kubernetesとポート・アダプターも扱います。API変更と障害時の振る舞いを実務寄りに学びたい人におすすめの一冊です。

gRPC Microservices in Go

gRPC Microservices in Go

Manning Publications

Amazonで見る

Go開発を広げる

『Microservices with Go』第2版は2025年刊の英語書籍で、432ページです。Goの基本知識を前提に、Protocol BuffersとgRPCでサービスAPIを実装する方法を扱います。

gRPCのクライアントやゲートウェイに加え、サービス発見、ストリーミング、テスト、TLS、監視とプロファイリングも取り上げます。Kafkaを使う非同期通信も学べます。

一冊でマイクロサービス全体の話題を追いたい人に適しています。gRPCのAPI実装だけを学ぶ目的なら範囲が広めです。サービス運用も含めて学びたい人におすすめします。

Microservices with Go: The expert's guide to building secure, scalable, and reliable microservices with Go, Second Edition

Microservices with Go: The expert’s guide to building secure, scalable, and reliable microservices with Go, Second Edition

Packt Publishing

Amazonで見る

結論

Goで初めてgRPCを実装する人には『スターティングgRPC』をおすすめします。Protocol BuffersからGoサーバー、別言語のクライアントまで追えます。印刷版の参考価格は税別2,000円です。

CQRSやテストを含むサービス実装を学ぶ人には『実践!Go言語とgRPCで学ぶマイクロサービス開発』、認証やサービス発見、Kubernetes運用まで学びたい人には『Go言語による分散サービス』をおすすめします。

障害対策を深めたいGo開発者には『gRPC Microservices in Go』がおすすめです。gRPCの仕組みと各種RPCを広く学ぶ人には『gRPC: Up and Running』、Kafkaや監視を含む全体像を知りたい人には第2版の『Microservices with Go』をおすすめします。

【2026年版】Amazonで買えるおすすめノートPCランキング!コスパ最強のモデルはこれだ
DELLのノートパソコンがテーブルの上に置いてある画像

Amazon の PC をスコア化してみた

Specsy Hub

Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。

タイトルとURLをコピーしました