通信コストやパフォーマンスにメリットがあるgRPCですが、マイクロサービス間通信やモバイルアプリとサーバー間通信だけでなく、機械学習モデルの開発やモビリティの無人化・遠隔操作などでも活用されています。
gRPCは、HTTP/2を利用し、データをシリアル化すること、ストリーミングをサポートしていることから、大容量の通信やリアルタイム性の確保にメリットがありますが、protoファイルの学習コストやシリアル化されることによってデバッグの難易度が上がるデメリットもあります。
| 特徴 | gRPC | REST API | 
|---|---|---|
| データ形式 | Protocol Buffers | JSON等(テキスト) | 
| 通信プロトコル | HTTP/2 | HTTP/1.1 | 
| パフォーマンス | 高速 | gRPCより劣る場合あり | 
| ストリーミング | サポート | 非サポート | 
RESTがWebAPIのデファクトスタンダードではありますが、低レイテンシや低コスト、ストリーミングが求められる場面ではgRPCが選択肢になることもあります。それぞれの強みを加味したアーキテクチャの選択に繋げていきたいと思います。


