2章プロトコルバッファによる構造化データ
分散サービスを構築する際には、ネットワークを介してサービス間の通信を行います。構造体などのデータをネットワーク経由で送信するには、データを送信可能な形式にエンコードする必要があり、多くのプログラマはJSONを選択しています。公開APIを構築する場合、すなわち、自分たちでクライアントを開発しないプロジェクトでは、人間が読むことができて、コンピュータも解析できるJSONが適しています。しかし、非公開のAPIを構築する場合、すなわち、自分たちでクライアントを開発するプロジェクトでは、話が異なります。つまり、JSONに比べて生産性が高く、速く、多くの機能を持ち、バグの少ないサービスを作ることができるデータの構造化と送信の機構を利用できます。
その機構は、プロトコルバッファ(Protocol Buffers:protobufとも呼ばれる)です。プロトコルバッファは、データを構造化してシリアライズするための、Googleが設計した言語とプラットフォームに依存しない拡張可能な機構です。protobufを使う利点は、次のとおりです。
- 型の安全性を保証します。
- スキーマ違反を防ぎます。
- 高速なシリアライズを可能にします。
- 後方互換性を提供します。
protobufではデータをどのように構造化するのかを定義し、そのprotobufをさまざまな言語のコードにコンパイルし、構造化されたデータをさまざまなデータストリームとの間で読み書きできます。プロトコルバッファは、二つのシステム間(マイクロサービスなど)の通信に適しています。そのため、Google社は、高性能なRPCフレームワークであるgRPCを構築した際にprotobufを使いました。
あなたがprotobufを使ったことがなければ、私と同じように「protobufは余計な作業が多いのではないか」という懸念を持つかもしれません。しかし、この章とこの本の残りの部分でprotobufを使ってみると、それほど悪いものではないことが分かると思います。JSONよりも多くの利点があり、結果的に多くの作業を省けます。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access