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 のコードはまだロードする必要があります。これについてはよくわかりませんが、基盤となる実装に依存していると思います。