[解決済み] クラウドファンクションよりApp Engineを選ぶべき時とは?
2023-05-03 17:34:13
質問
素朴な質問で申し訳ないのですが、googleのスタッフの講演を何度も見ましたが、一体なぜCFではなくAEを使うのか、まだ理解できません。
もし私が正しく理解しているなら、これらのサービスの全体のコンセプトは、"マイクロサービスアーキテクチャ"を構築することです。
- CFとAEはどちらもステートレスです。
- どちらも限られた時間内に実行されるものとする
- dbsや他のgcp apisと相互作用することができます。
しかし、AEは独自のサーバーにラップする必要があります。基本的に、AEはCFと同じ機能の上に多くの複雑さを利用しています。では、どのような場合にCFの代わりに使うべきでしょうか?
どのように解決するのですか?
Cloud Functions (CFs) と Google App Engine (GAE) は、異なる仕事のための異なるツールです。仕事に適したツールを使用することは、通常、良いアイデアです。
ペンチで釘を打つ かもしれない は可能かもしれませんが、ハンマーを使うほど便利ではないでしょう。同様に、CF を使用して複雑なアプリを構築することは かもしれません。 は可能かもしれませんが、GAE を使って構築する方が間違いなく便利でしょう。
CFはGAEと比較していくつかの欠点があります(もちろん、より複雑なアプリケーションを構築するという文脈では)。
- Node.js, Python, Go, Java, .NET Core, Ruby に限定されます。GAE は他のいくつかの一般的なプログラミング言語をサポートしています。
- 本当に軽量化のために設計されている。 スタンドアロン そのようなコンポーネントを使用して複雑なアプリケーションを構築しようとすると、すぐに "awkward" になります。そうです、個々のリクエストの相互関係コンテキストは GAE でも同様にリストアされなければなりませんが、GAE は CF では利用できないより便利な手段でそれを行うことができます。たとえば、他のコメントで説明されているように、ユーザーセッションの管理などです。
- GAE アプリには、個々のリクエストにまたがって存続するアプリ コンテキストがありますが、CF にはそれがありません。このようなコンテキストにより、特定の Google サービスへのアクセスが、GAE アプリではより効率的/高性能になり (あるいは、明白に可能になり)、CF ではそうではなくなります。たとえば、memcached などです。
-
GAE アプリのアプリ コンテキストを利用することで、CF 上で動作しない他のサービスに対して、より効率的でパフォーマンスの高いクライアント ライブラリをサポートすることができます。例えば、データストアにアクセスする際に
ndb
クライアントライブラリ (標準的な環境の GAE Python アプリでのみ利用可能) を使用してデータストアにアクセスすると、一般的なデータストアクライアントライブラリを使用するよりも効率的でパフォーマンスに優れています。 - GAE は、CF の小売価格(各呼び出しが個別に課金される)と比較して、卸売価格(特定のインスタンスが処理するリクエスト数に関係なく、インスタンス時間に基づいて)であるため、よりコスト効率がよい。
-
応答時間
かもしれない
は、通常、リクエストを処理するアプリインスタンスがすでに実行されているため、CFよりもGAEアプリの方が短くなることが多いようです。
- GAE アプリのコンテキストはロード/リストアする必要がなく、すでに利用可能で、CF はロード/リストアする必要がある。
- ハンドリングコードは(ほとんどの場合)すでにロードされており、CFのコードはまだロードする必要があります。この点についてはよく分かりませんが、基本的な実装に依存すると思います。
関連
-
[解決済み】YAMLファイルのパースエラー:マッピング値はここでは許可されません。
-
[解決済み] gcloud app deploy` vs. `appcfg.py` [クローズド].
-
[解決済み] HTTP Get with 204 No Content: それは正常ですか?
-
[解決済み] Google App EngineとGoogle Compute Engineの違いは何ですか?
-
[解決済み】FirebaseのクラウドファンクションでCORSを有効にする
-
[解決済み】Cloud Functions for Firebaseで複数のファイルから複数の関数をデプロイするための構成は?
-
[解決済み] Google App Engineのアプリケーションを削除する
-
[解決済み] Firebase用Cloud Functionsのトリガーは時間通り?
-
[解決済み] Cloud FunctionsとFirebase Functionsの違いは何ですか?
-
[解決済み] どのような場合に以下を使用する必要がありますか。Amazon EC2、Google App Engine、Microsoft Azure、Salesforce.comを使うべきか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】YAMLファイルのパースエラー:マッピング値はここでは許可されません。
-
[解決済み] gcloud app deploy` vs. `appcfg.py` [クローズド].
-
[解決済み] HTTP Get with 204 No Content: それは正常ですか?
-
[解決済み] Google Cloud BigtableとGoogle Cloud Datastoreの比較
-
[解決済み] Google App Engine: GqlのLIKEクエリは可能ですか?
-
[解決済み] Google App Engineのアプリケーションを削除する
-
[解決済み] 標準ライブラリを使って、Goでネストしたテンプレートを持つことは可能ですか?
-
[解決済み] Google Cloud Consoleからプロジェクトを削除する方法
-
[解決済み] どのような場合に以下を使用する必要がありますか。Amazon EC2、Google App Engine、Microsoft Azure、Salesforce.comを使うべきか?
-
[解決済み] Google app engineかamazon web servicesか【クローズド】。