web-dev-qa-db-ja.com

Google Cloud Functionsを暖かく保つにはどうすればよいですか?

これは最初にCloud Functionsを使用するポイントを逃していることを知っていますが、私の特定のケースでは、Next.jsをFirebase Hostingとブリッジできる唯一の方法であるため、私はCloud Functionsを使用しています。費用対効果を高める必要はありません。

そうは言っても、Cloud Functionsのコールドブート時間は耐えられず、本番環境に対応していないため、ボイラープレートの平均は約10〜15秒です。

私は確かにコールドブート時間を短縮する方法について説明しているGoogleのこのビデオ( https://www.youtube.com/watch?v=IOXrwFqR6kY )を視聴しました。簡単に言えば、1)依存関係のトリム、2)Googleのネットワーク上のキャッシュの依存関係バージョンの試行錯誤、3)遅延読み込み。

しかし、ねえ、1)トリミングできる依存関係は非常に多くあります。 2)キャッシュされているバージョンを知るにはどうすればよいですか? 3)遅延ロードできる依存関係は非常に多くあります。

もう1つの方法は、コールドブートをすべて回避することです。 (唯一の)クラウド機能を本質的に暖かく保つことができる良い方法またはハックは何ですか?

13
harrisonlo

すべての「サーバーレス」コンピューティングプロバイダーでは、排除できないコールドスタートコストが常に発生します。 pingを実行して単一のインスタンスを存続させることができたとしても、システムは他のインスタンスをいくつでも起動して、現在の負荷を処理する場合があります。これらの新しいインスタンスには、コールドスタートのコストがかかります。その後、負荷が減少すると、不要なインスタンスがシャットダウンされます。

ご存知のように、コールドスタートのコストを最小限に抑える方法はいくつかありますが、コストを削減することはできません。

ホットサーバーに24時間年中無休で要求を処理するよう絶対に要求する場合は、24時間年中無休で稼働する独自のサーバーを管理する必要があります(また、年中無休で稼働するサーバーのコストを支払う必要があります)。ご覧のとおり、サーバーレスのメリットは、独自のサーバーを管理またはスケーリングせず、使用した分だけを支払うことですが、プロジェクトに関連する予測できないコールドスタートのコストが発生することです。それはトレードオフです。

12
Doug Stevenson

あなたが最初に尋ねるのではありません;-)

答えは、リモートサービスが定期的に関数を呼び出すように構成して、単一のインスタンスのみが存続するようにすることです。

あなたの質問からははっきりしませんが、あなたの関数がHTTPエンドポイントを提供していると思います。その場合は、x秒|分ごとにHTTP呼び出しを行うように構成できるヘルスチェックサービスまたはcronサービスを見つけて、関数をポイントします。

ゴルディロックス期を見つけるためにタイミングを調整する必要があるかもしれません-努力を浪費しているほど頻繁ではありませんが、死ぬほど頻繁ではありません-しかし、これは他の人が行ったことです。

2
DazWilkin

ここで説明するように、cronジョブを介してトリガーできます: https://cloud.google.com/scheduler/docs/creating

1
afuggini