88

申し訳ありませんが、これが素朴な質問である場合は、Google のスタッフからの講演をたくさん見ましたが、CF の代わりに AE を使用する理由が理解できませんか?

私の理解が正しければ、これら両方のサービスの全体的な概念は、「マイクロサービス アーキテクチャ」を構築することです。

  • CF と AE はどちらもステートレスです
  • どちらも限られた時間内に実行することを想定しています
  • どちらもデータベースや他の gcp API とやり取りできます。

ただし、AE は独自のサーバーにラップする必要があります。基本的に、CF と同じ機能に加えて、多くの複雑さを利用します。では、いつCFの代わりに使用する必要がありますか?

4

5 に答える 5

100

Cloud Functions (CF) と Google App Engine (GAE) は、ジョブごとに異なるツールです。仕事に適したツールを使用することは、通常は良い考えです。

ペンチを使って釘を打ち込むことは可能かもしれませんが、ハンマーを使うほど便利ではありません。同様に、CF を使用して複雑なアプリを構築することも可能ですが、GAE を使用して構築する方が間違いなく便利です。

CF には、GAE と比較していくつかの欠点があります (もちろん、より複雑なアプリケーションを構築するというコンテキストでは)。

  • Node.js、Python、Go、Java、.NET Core、Ruby に限定されています。GAE は、他のいくつかの一般的なプログラミング言語をサポートしています
  • それらは軽量でスタンドアロンの機能用に設計されているため、そのようなコンポーネントを使用して複雑なアプリケーションを構築しようとすると、すぐに「厄介」になります。はい、すべての個々の要求の相互関係コンテキストも同様に GAE で復元する必要があります。CF では利用できない、より便利な手段から恩恵を受けるのは GAE だけです。たとえば、他のコメントで説明されているように、ユーザーセッション管理
  • GAE アプリには、個々のリクエスト間で存続するアプリ コンテキストがありますが、CF にはそれがありません。このようなコンテキストにより、特定の Google サービスへのアクセスが、GAE アプリではより効率的/パフォーマンスが向上します (または単純に可能になります) が、CF ではそうではありません。たとえば、memcached です。
  • GAE アプリのアプリ コンテキストを利用できることで、CF で動作できない他のサービスのより効率的でパフォーマンスの高いクライアント ライブラリをサポートできます。たとえば、ndbクライアント ライブラリ (標準の env GAE Python アプリでのみ使用可能) を使用してデータストアにアクセスすると、汎用のデータストア クライアント ライブラリを使用するよりも効率的/パフォーマンスが向上する可能性があります。
  • GAE は、CF の「小売」価格 (呼び出しごとに個別に課金される) と比較して、「卸売」価格 (特定のインスタンスが処理する要求の数に関係なく、インスタンス時間に基づく) であるため、費用対効果が高くなります。
  • 一般に、要求を処理するアプリ インスタンスが既に実行されているため、GAE アプリの 応答時間は CF よりも短くなる可能性があります。
    • GAE アプリ コンテキストをロード/復元する必要はありません。すでに利用可能です。CF はそれをロード/復元する必要があります。
    • 処理コードは (ほとんどの場合) 既にロードされていますが、CF のコードはまだロードする必要があります。これについてはよくわかりませんが、基盤となる実装に依存していると思います。
于 2017-11-01T17:59:48.477 に答える