Google Cloud Functionsは、サーバーレスでメンテナンスが不要なソリューションであるため、非常に興味深いようです。しかし、Google AppEngineではなくGoogleCloud Functionsを使用するのが適切なのはいつですか?
更新:
2018年6月12日現在 Node.js 8.xは、フレキシブル環境とともにGoogle AppEngine標準環境でサポートされています。
短い答え:それはあなたの必要性に依存します。
長い答え:チェックリストは次のとおりです
ランタイム
Cloud Functionsは現時点ではNode.jsのみをサポートしており、私が知る限り、そこに新しいランタイムを導入する予定はありません。それがよければ、オプションにCloudFunctionsを含めることができます。
AppEngineはNode.jsをサポートしています。 ただし、Flexible環境でのみ使用できます。 AppEngine標準環境はPython 2.7、Java 8、Java 7、PHP = 5.5、Go 1.8および1.6、App Engine Flexible EnvironmentはPython、Java、Node.js、Go、Ruby、PHP、または.NETをサポートします。Flexible環境でdockerfileを使用して独自のランタイムを提供することもできます。 したがって、Node.js以外でアプリケーションを開発する場合は、AppEngineの方が適しています。
サーバーレスアーキテクチャ
サーバーレスアーキテクチャをお探しですか?インスタンスを管理し、スケールアップまたはスケールダウンすることに不満を感じていますか?サーバーの管理に時間をかけたくないですか?これらすべての質問に「はい」と答えた場合は、クラウド機能を選択してください。
いいえの細かい粒子制御を探していますか。インスタンスの数とそれらの請求。別々のバージョンが必要で、それらをより適切に制御したいですか。この場合、AppEngineを探してください。
マイクロサービス
コードをより小さな独立した関数に分割できますか?クラウド機能に行きましょう。
App Engineは、同じコードベースを使用するマイクロサービスアーキテクチャをサポートしますが、サービスを分割するために異なるyamlファイルを使用しますが、サービスに分割するかどうかはあなた次第です。過去数年間、すべてのコードを1つのモノリシックアプリケーションで実行しており、AppEngineでも引き続き正常に機能しています。
データベース
アプリのデータはFirebaseに保存されていますか?そうすれば、クラウド機能をそこで簡単に使用できます。そうでない場合は、AppEngineがより良い代替手段です。不思議に思うかもしれませんが、AppEngineはFirebaseにも接続できます。
価格設定や、既存のアプリケーションの移行を検討している場合や、最初から作成している場合など、考慮すべき点は他にもあります。実際には、両方のオプションを使用できます。アプリケーションにはAppEngine(Python)標準環境を使用していますが、最近、クラウド関数で長時間実行されているタスクのいくつかを移行し、それらは驚くほど機能しています。
私の意見では、App Engineはほとんどのことに対する答えですが、CloudFunctionsは特定の要件に合わせて作成されています。
クラウドで発生したイベントに応答して関数(ある種のロジック)を実行することが必要であり、そのための完全なWebアプリケーションを構築したくない(そして課金されたくない)場合。
差出人 製品概要 :
クラウドコンピューティングは、どこからでも発生するイベントに応答してロジックをオンデマンドでスピンアップできる、完全にサーバーレスのコンピューティングモデルを可能にしました。コードの実行中にのみ、100ミリ秒単位で請求される一口サイズのビジネスロジックからアプリケーションを構築します。インフラストラクチャを管理することなく、ゼロから地球規模までユーザーにサービスを提供します。
Google Cloud Functionsは、クラウドサービスを構築して接続するためのサーバーレス実行環境です。 Cloud Functionsを使用すると、クラウドインフラストラクチャおよびサービスから発行されるイベントにアタッチされるシンプルな単一目的の関数を作成できます。クラウド機能は、監視されているイベントが発生したときにトリガーされます。コードは完全に管理された環境で実行されます。インフラストラクチャをプロビジョニングしたり、サーバーの管理について心配したりする必要はありません。
実装したいロジックの一部に関連するGAEアプリがすでにある場合は、アプリ内で実行する方がおそらく簡単です:)