最近のブログ投稿で、GoogleはCloud Run向けの一連のトラフィックサービス機能を発表した。この機能として、エンドツーエンドのHTTP/2接続、WebSocketサポート、gRPC双方向ストリーミングがある。これにより、gRPCが提供するRPCの種類は全て揃うことになる。これらはすべて、Cloud Runのすべての場所でパブリックプレビュー版になった。この機能により、開発者はさまざまなWebサービスとAPIをCloud Runにデプロイして実行できる。
Cloud Runは、開発者がWebリクエスト、あるいはPub/Subイベントを介して呼び出し可能なステートレスコンテナーを実行できるようにするマネージドコンピューティングプラットフォームである。サーバレスであるため、すべてのインフラストラクチャ管理が抽象化され、開発者はアプリケーションの構築により集中できる。
Cloud Runの最初のリリースは、ストリーミングをサポートしていなかった。クライアントからのリクエストとサービスの応答の両方をバッファリングしていたためである。しかし、昨年10月、同社はサーバ側ストリーミングサポートを発表した。これにより、開発者はサーバレスコンテナからクライアントにデータをストリーミングできるようになる。開発者がWebSocketを使用するアプリケーション(ソーシャルフィード、共同編集、マルチプレイヤーゲームなど)と全てのgRPC双方向ストリーミングAPIを使用するアプリケーションを構築、実行する新しい双方向ストリーミング機能につながる開発をすることができる。サーバとクライアントの両方が同じリクエストに対してデータを交換し続ける。
GCP Developer Platform for Serverless、Kubernetes、Anthosの製品ディレクターであるAparna Sinha氏は、ツイートで次のように述べている。
CloudRunは、サーバレスコンテナーで実行できるものを拡張し続けています。多くの開発者が、ゲーム、ソーシャルメディア、消費者向けサービスの一部として、リアルタイムのインタラクティブアプリを作成していることを知っています。
ストリーミング(gRPCを使用したクライアント側または双方向ストリーミング)を有効にするには、開発者はHTTP/2サポートを有効にする必要がある。gRPC向けのエンドツーエンドHTTP/2を含むHTTP/2のサポートは、最初のリリースから常にCloud Runに存在していることに注意してください。これは、プロトコルを使用するようにクライアントを自動的にアップグレードすることによって行われる。開発者は、新しいサービスを作成するとき、あるいは新しいリビジョンをデプロイするときに、Cloud Console、gcloudコマンドライン、あるいは、YAMLファイルを使用してHTTP/2をエンドツーエンドで指定できる。サービスがエンドツーエンドのHTTP/2でトラフィックを処理するには、アプリケーションがHTTP/2クリアテキスト(「h2c」とも呼ばれる)形式でリクエストを処理する必要がある。
gcloud beta run deploy http2-test --use-http2 --source=.
出典: https://cloud.google.com/run/docs/configuring/http2
Cloud Runのアップデートと共に、Googleは新しい機能でサービスを進化させ続けている。このサービスでは、コンテナ内で完全なアプリケーションを実行でき、開発者は独自のスタックを選択してアプリを構築できる。これは、AWS Lambda、Azure、Google FunctionsなどのFunction as a Service(FaaS)製品における、開発者向けクラウド管理ホスティングオプションとは対照的である。そこでは開発者向けのオプションが制限されている。Bustle Digital GroupおよびAWS Serverless Heroのリサーチエンジニアリング担当副社長であるMichael Hart氏は、新機能についてツイートで次のように述べている。
イベントモデルとは対照的に、接続/ストリーミングモデルがあるということは、このような機能を追加するには、AWS LambdaよりもCloud Runの方がはるかに簡単であることを意味します。
最後に、開発者は、利用可能なWebSocketデモアプリまたはサンプルのh2cサーバアプリを通じて、新機能について詳しく知ることができる。さらに、開発者はCloud Runを試してみることができ、月に200万件のリクエストを許可する無料枠である。詳細については、ドキュメントのランディングページをご覧ください。