下記のGAEの制限について知りたいのですが、GAEでアプリをホストすることで、Facebookなどの優れたソーシャルアプリを構築することは可能ですか?
言い換えれば、GAEは6億人のアクティブユーザーが使用するアプリをホストできるインフラストラクチャですか?
制限事項:いくつかのフォーラム/ブログから出てきました(不足しているものを見つけた場合は、遠慮なくリストに追加してください)。
HTTPリクエスト/レスポンス
データベース
言語
サーバーの問題
この質問について私を困らせているのは、あなたがそれを言い表して、決定的なnoを集めようとして「事実」をロードしたことだと思います。
真実は、Facebook、Twitter、またはTumblrの機能を複製するApp Engineアプリを開発できることです。また、アプリが適切に作成されていれば、数億人のユーザーをサポートするように拡張できます。望まない主な理由(これは考慮事項ではないようです)は、App Engineでそのサイズのサービスを実行するコストです。
また、あなたが挙げた制限のどれがあなたがそのようなアプリを開発するのを妨げるのかを見ることもできません。
HTTPリクエスト/レスポンス
-10MBを超えるページを頻繁に配信する必要があるソーシャルアプリを開発している場合は、おそらくそれが間違っています。また、32MBを超えるコンテンツを配信する必要がある場合は、最大2GBのファイルにブロブストアを使用できます。
-Facebook、Twitter、またはTumblrがユーザーのアップロードを取得してフォルダーにコピーするだけの方法はありません。問題ない。
-ユーザーのリクエストに結果を提供するために30秒を超える時間が必要な場合は、おそらく間違っています。
-長いタスクを10分のチャンクに分割できない場合、A:おそらくそれは間違っている、そしてB:リクエストに時間制限のないバックエンドインスタンスにそのタスクを移動できるようになりました。
Cronジョブはマップ削減を利用できません。マップ削減を使用したことはありませんが、これには引用が必要だと思います。
別のサイトへのすべてのGETまたはPOSTは、5秒後に中止されます。最大10秒まで待機するように設定できます。 (TwitterやFacebookと何度も連携するには中間サーバーが必要です)-はい。
-外部APIへのユーザー向けのリクエストに10秒以上かかる場合は、とにかくユーザーに再試行するように伝えることをお勧めします。ユーザー向けのリクエストでない場合は、APIが応答するまでタスクを自動的に再試行できます。
-これはなぜ問題なのですか? FTP経由で変更を展開している大企業はあると思いますか?
-それはロードマップにも載っています。
-アプリの予算を適切に設定すれば、割り当て超過エラーは発生しません。 Royal WeddingサイトはApp Engineでホストされ、1秒あたり32,000件のリクエストを受け取りました。割り当て超過エラーはありません。また、これまでにTwitterで失敗したクジラを見たり、Tumblrで容量超過エラーを見たりしたことがありますか?これは基本的にはオーバークォータエラーです。
データベース
-ラップトップでのデータストアの実行がApp Engineのクラスターでの実行よりも遅い場合は、trueであり、それ以外の場合はまったくtrueではありません。
-ほとんどの開発者は、dbフィルターを使用してデータストアをクエリします。さらに、MySQLでは「SQL。他には何も許可されない」と同じように言うことができます。
-1000レコードの制限はずっと前に解除されました。さらに、レンダリングに1000以上のレコードを必要とするFacebook、Twitter、またはTumblrのユーザー向けページを表示します。
-ここで何を取得しているのかさえわかりません。ほとんどの人は、Googleの大規模なクラスターの速度をシステムの大きな利点と見なしています。
Memcache値の最大サイズは10 MBです。 -実際には、他のすべてのmemcache実装と同じように、memcacheエントリごとに1MBです。
単純なテキスト検索を実行できません-True。
-それはデッキにある機能です。ほとんどの大規模なサイトは、独自のテキスト検索インデックスを作成しません。
-App Engine開発者は、単一の大規模なマルチ結合SQLクエリからいくつかの小さな個々のクエリに思考を調整するか、結合が不要になるようにデータを非正規化する必要があります。
-翻訳/引用が必要です。
-1つのアプリ内のインデックスの数には制限があります。しかし、学術研究のアプリケーションがそれを打つのを見ただけです。
-したがって、誰かが5000人を超える友達を持っている場合、友達グループに2つのエンティティが必要になります。
__*__
という形式のキー名(2つのアンダースコアで開始および終了)は予約されているため、アプリケーションで使用しないでください。 -真-しかし、何ですか?
-繰り返しになりますか?キー名は小説を保存するためのものではなく、エンティティを一意に識別するためのものです。
言語
-実際には、PHPやJRubyなど、JVMで実行される任意の言語を実行することもできます。なぜそれが問題なのかはわかりませんが、PythonとJavaは2つの強力な言語であり、利用可能なツール、チュートリアル、経験豊富なプログラマがたくさんいます。
サーバーの問題
-ほとんどのサードパーティAPIはApp Engineを認識しているか、Googleと関係があります。 TwitterがApp Engineを誤ってブロックしたことが数回あり、数時間以内に修正されます。
-Webアプリケーションに3000を超えるコードファイルが本当に必要な場合は、Zipインポートを使用できます(また、間違っている可能性もあります)。
-App Engineはサービスとしてのプラットフォームです。 OSやハードウェアの保守について心配する必要がないということは、人々がお金を払っていることです。これは、App Engineの主な利点であり、制限ではありません。
いいえ、App Engineは6億人のアクティブユーザーがいるアプリには適していません。
現実的には、この大規模なアプリは、独自のデータセンターの高度にカスタマイズされたインフラストラクチャで実行されます。そのようなアプリをGoogleでホストすることはおそらく可能ですが、販売チームと直接協力してソリューションを設計します。上にリストしたサンドボックスの制限は、長い間無関係でした。
始めたばかりの場合、Facebookと同じくらい人気になると想定して設計するのはばかげています。これほど大きくなったアプリは、段階的にリファクタリングを繰り返しながら実行します。まず、6億人のユーザーを引き付ける機能の設計について心配します。増加するユーザーベースをサポートするために実装を再設計することは、比較すると、ささいな問題です。
FAQのポイントはいくつかの主要な領域に分類されると思います。
まず第一に、スケーラビリティのデメリットではなく、実際にbenefitにつながるポイントがあります。非常にスケーラブルなアプリケーションでは、すべてのリクエストが他のリクエストからほぼ独立していること、およびすべてのリクエストが同じ「サイズ」(CPU使用率、メモリ、ネットワークなどの点で)であることを確認することを目指しています。
このようにして、同じノードで小さなリクエストが不足する「大きな」リクエストのグループを心配することなく、リクエストをクラスター内のノード間で簡単に分散できます。これにより、メンテナンス、パフォーマンス、信頼性の点でインフラストラクチャがシンプルになります。
したがって、それは次のようなものをカバーします:
2番目のカテゴリは、単に古くなっているものです。
さて、GoogleがcronジョブでMap Reduceを利用できるようにインフラストラクチャを開放し、データセット全体に対してクエリを実行できるようになればいいのですが。しかし、6億人のユーザーの重要な割合でさえ、あなたはすでにGoogleの非常に大きな顧客であり、とにかく、App Engineで利用可能なオプションよりも多くのオプション。
100人、さらには600、、000,000人のユーザーを引き付けるアイデアを思いついた場合、ベンチャーキャピタルと技術チームがあり、それを開発してインフラストラクチャで実行することができます。また、GoogleがすべてのGAEアプリのソースコードへのアクセスを必要としているため、GAEが提供しない知的財産も保護する必要があります(PythonおよびJavaコード)。
GAEは、ITインフラストラクチャのコストをなくし、コードIPを保護する必要がなく、データのみを保護する必要がある企業に適しています。