3つの主要なオプションは REST (HTTP/JSON)、gRPC (HTTP/2 + Protobuf)、メッセージキュー (Kafka/RabbitMQ) です。REST と gRPC は同期型です。キューは非同期型です。
3つの主要なオプションは REST (HTTP/JSON)、gRPC (HTTP/2 + Protobuf)、メッセージキュー (Kafka/RabbitMQ) です。REST と gRPC は同期型です。キューは非同期型です。
| 項目 | REST | gRPC | メッセージキュー |
|---|
| スタイル | 同期 | 同期 | 非同期 |
| ペイロード | JSON (テキスト) | Protobuf (バイナリ) | 任意 (通常はバイナリ) |
| パフォーマンス | 良好 | 高速 | 高スループット |
| コントラクト | OpenAPI (疎結合) | .proto (厳密) | スキーマ/イベント |
| ストリーミング | 限定的 | ネイティブ (双方向) | Pub/sub |
| 最適な用途 | 公開 API、ブラウザ | 内部の高速パス | 疎結合、イベント駆動 |
service OrderService {
// strongly-typed RPC, generated client + server stubs
rpc GetOrder (OrderId) returns (Order);
}
message OrderId { string id = 1; }
message Order { string id = 1; double total = 2; }
Order Service ─publish→ [ "OrderPlaced" topic ] ─▶ Inventory
└────▶ Notifications
(producer doesn't know or wait for consumers)
同期型の gRPC/REST をどこでも使用すると、密結合が再現されます。ユーザーの即座の読み取りに非同期を使用すると、不要なレイテンシが追加されます。
トランスポートの選択は、各インタラクションの結合度とパフォーマンス上限を決定するため、グローバルではなくユースケースごとに選択することが、システムを高速かつレジリエントに保つ鍵となります。
成熟したシステムは、3 つすべてを意図的に組み合わせます。内部の高速パスには gRPC、エッジには REST、ワークフローにはキューを使用します。