Cloud Run 向け HTTP / gRPC サーバー ストリーミングのご紹介
Google Cloud Japan Team
※この投稿は米国時間 2020 年 10 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。
このたび、Cloud Run(フルマネージド)で実行されているサーバーレス アプリケーションでサーバー側 HTTP ストリーミングが利用可能になりました。この強化されたネットワーキング機能を使用すると、Cloud Run サービスは単一リクエストの期間中に、クライアントに対する大規模なレスポンスの提供や、部分レスポンスのストリーミングを実現することができます。これにより、アプリケーションのサーバー応答時間を短縮できます。
この機能が追加されたことにより、Cloud Run は次のことができるようになりました。
以前の 32 MB の制限よりも大きなサイズのレスポンスを送信する。
サーバー ストリーミング RPC で gRPC サービスを実行し、単項(非ストリーミング)RPC の既存サポートに加えて、単一のリクエストで部分レスポンスを送信する。
サーバー送信イベント(SSE)でレスポンスを返し、HTML5 EventSource API でフロントエンドから利用する。
ストリーミング レスポンスは、レスポンスが使用可能になったときに部分レスポンスをクライアントに送信するアプリケーションを開発しやすくなります。これにより、アプリケーションとウェブサイトの応答性が向上します。ストリーミングのサポートがない場合、クライアントに送信する前にすべてのレスポンスを完全に計算する必要があります。これにより、アプリケーションの最初のバイトまでの時間(TTFB)のパフォーマンスが低下します。次の図では、3 つの部分レスポンスが gRPC クライアントに段階的に送信されます。
サーバー側 HTTP ストリーミングの次のようなユースケースが例として挙げられます。
サーバーレス アプリケーションからの大きなファイル(動画など)のストリーミング
進捗状況インジケータを使用してレポートできる長時間実行の計算
中間またはバッチのレスポンスを返すことができるバッチジョブ
サーバーレス gRPC ストリーミングをお試しください
Cloud Run でのストリーミングのサポートにより、特定のクラスのアプリケーションのパフォーマンスが大幅に向上します。これはほんの一部にすぎません。Cloud Run の機能の充実に努めておりますので、公式発表をお待ちください。
サンプルの gRPC サーバー アプリケーションを開発しました。ワンクリックで Google Cloud アカウントにデプロイ可能なこのアプリケーションは、クライアントを実行して Cloud Run ベースのサーバーレス アプリケーションからレスポンスをストリーミングすることができます。
Cloud Run のストリーミング サポートをぜひお試しになり、Stack Overflow や公開バグトラッカーに関するご意見やご要望をお聞かせください。
-シニア デベロッパー アドボケイト Ahmet Alp Balkan
-プロダクト マネージャー Daniel Conde