- Serve traffic from multiple regions | Cloud Run Documentation | Google Cloud
- You can return faster responses to your users around the world by deploying services in multiple regions and routing your users to the nearest region. Deploying across multiple regions delivers low latency and higher availability in case of regional outages.
GCPが先週、Cloud Runを一度の実行でマルチリージョンで使用可能にする機能をリリースしました。
マルチリージョンのサービスを簡単に要約すると、例えば、ソウル、ロンドン、ラスベガスリージョンがあるとします。
そのような場合、従来はスクリプトを使用して複数のリージョンを個別にデプロイする必要がありましたが、新しくリリースされた機能は、一度のスクリプトで複数のリージョンにデプロイできる機能です。
実は、最初に公開される前に、サービスがリリースされるというドキュメントを読んで非常に期待していた機能でしたが、少しがっかりしました。
デプロイ自体は、従来でもスクリプトを使用すれば一度に複数を、一つずつ複数回、いずれにせよ並列で動作するため、時間は大きな違いがなく、変わることはないだろうと考えていたので、その部分への期待は大きくなかったのですが、まずこれが一度にすべてデプロイされるため、リージョンごとに環境変数を変更できません。
そのため、個々のCloud Runがリージョンごとに異なる値を使用して異なるDBやGCSに接続する機能をよく利用していたのですが、その機能を使う際に問題が発生しました。
2番目の問題は、デプロイを繰り返し行うと、既存の履歴を削除したい場合があるのですが、これも個別にコントロールできません。読み取り専用でホールドされているため、個別に旧バージョンの削除ができないのです。
様々な欠点がありますが、利点としては…複数のCloud Runを一つに"まとめられる"という点です。
私たちのサービスの場合、Cloud Runも多く使用し、リージョンも多く使用しているため、現在は約50個、現在作業中のものがすべて完了すると100個以上に増加する状況でしたが、このマルチリージョンサービスを使用すると10~20個程度に削減できます。(単に隠すだけです。)
まず、スクリプトは以下のとおりです。
上記のスクリプトを実行すると、以下のようにデプロイされます。
Cloud Run
まず、同じ名前のCloud Runがリージョンごとにデプロイされ、最上位には同じ名前のフォルダ(?)が作成されます。
まとめた画面は以下のとおりです。
Cloud Run - 折り畳まれた画面
実際、数が少ない場合は大きな助けにはなりませんが、これが40個のリージョンすべてにデプロイされると仮定すると、非常に大きな助けになります。(必ずしもその程度ではないにしても…)
読み取り専用と表示されます。
ほとんどの機能の場合、何か修正しようとすると、ほとんどの場合読み取り専用と表示されます。ドキュメントには機能を提供しているとありますが、まだAPIに問題があるのか、正しく動作しません。
まず、関連ドキュメントのある場所はここです。
gcloud関連ドキュメントはこちらです。まだアルファ版/ベータ版のみサポートしており、正式版はサポートしていません。さらに、上記のドキュメントにある--regionsオプションはドキュメントにもありません。(すぐにアップデートされるでしょう?)
まず、欲しいのは。実は他に何もなく、環境変数に、現在のPORTがデフォルトの環境変数として含まれるように提供してくれたらどうでしょうか?もちろん、メタデータサーバーを介して現在でも様々な情報を提供していることは承知していますが、実際にはFetchで直接取得する必要があるという不便さがあります。(さらにそれもすべてリソースなので…)
まだプレビューなので、徐々に改善されるでしょう?(公開した途端に不満を持つのは…)
コメント0