Skip to content
Latchkey

Thrift vs Protocol Buffers: どのシリアライゼーション?

Apache ThriftはIDL、シリアライゼーション、完全なRPCスタックをまとめて提供し、Protocol BuffersはRPCには通常gRPCと組み合わせるコンパクトなシリアライゼーション形式です。

Thriftはシリアライゼーションと、プラガブルなtransportを備えた完全なRPCフレームワークを1つのパッケージで提供します。Protobufはコンパクトでスキーマ駆動のシリアライゼーションに焦点を当て、RPCはgRPCに委ね、それが支配的な組み合わせとなっています。ThriftはオールインワンのRPC+シリアライゼーションシステムとして優れ、Protobufはシリアライゼーションの普及度とgRPCエコシステムの勢いで優れています。

ThriftProtobuf
スコープシリアライゼーション + RPCシリアライゼーション (RPCはgRPC経由)
IDLThrift IDL.proto
TransportプラガブルgRPC (HTTP/2)
エコシステム成熟非常に大きい
最適な用途オールインワンRPC普及したシリアライゼーション

ユースケースとスコープ

Thriftは、柔軟なtransportでシリアライゼーションとRPCの両方を1つのパッケージで望むチームに適しています。Protobufは、広くサポートされたシリアライゼーション形式を望むチームに適しており、通常はRPCにgRPCを用い、巨大な周辺エコシステムを備えます。

運用とCIへの適合性

どちらもビルド時にスキーマを言語stubにコンパイルします。Codegenとスキーマ互換性チェックがCIで実行され、より高速なマネージドrunnerが多言語生成とcontractテストを短縮します。

結論

単一のバンドルされたシリアライゼーション+RPCスタックが欲しいなら: Thrift。最も広く採用されたシリアライゼーション形式(とgRPC)が欲しいなら: Protobuf。バンドルされたRPCはThriftに、エコシステムの普及度はProtobufに有利です。

関連ガイド