12

私は現在、1人のユーザーと10万人のユーザーの間で何かを処理するアプリケーションを拡張することを可能にするCloud PaaSを探しています...私はこれほど大きなことはしませんでした。あなたが開発するならば、リレーショナルデータベースとsoap-webservicesを持つ標準的なアプリケーションを考えてみましょう。このアプリケーションは、Paasソリューションにデプロイされると自動的に拡張されますか、冗長性、そしてこれらのことを念頭に置いていますか?Cloud PaaSを使用すると自動的にスケーラビリティの問題が解決されますか?

私はAmazon EC2にSpring Hibernateアプリケーションをデプロイし、TomcatがインストールされたUbuntu Serverのインスタンスを1つ作成するとします。このアプリケーションは無期限に拡張するか、さらにUbuntuインスタンスが必要ですか?複数のUbuntuインスタンスが必要な場合、Amazonは両方のインスタンスでアプリケーションを実行するかどうか、またはこれは開発者の責任ですか?データベースのストレージについては、データベースの拡張に伴って拡張されるEC2にデータベースをインストールできますか、無期限に拡張したい場合は、代わりにAPIの1つを使用する必要がありますか?

CloudFoundryを使用すると、ローカルに構築してそのままPaaSに展開できますが、ベータ版であるため、使用できるリソースの量に制限があり、正しく覚えていればデータベースは128MBに制限されています。今のところは行きます。 Amazon EC2にCloudFoundryをインストールすることを提案している人もいますが、それはどのように拡張され、データベースレイヤーはどのように処理されますか?

GAE(Google App Engine)を使用すると、アプリをデプロイするだけで、冗長性と拡張性を心配する必要はありませんか?あなたがGAEで実行できるものと実行できないものにいくつかの制限があるように見えますが、その価格の上昇は最近かなりの数の開発者を混乱させました。

だから、基本的には、それは拡大縮小され、拡大縮小するために何をする必要がありますか?

+2

スケーラビリティは決して魔法ではなく、常に(多くの場合、何百万人ものユーザーを考慮して)多くの作業を必要とすると思います。 –

+0

あなたがそのようなアプリケーションを構築し、同時にスケーラビリティを処理する2ヶ月があるとすると、プロバイダはあなたのMac /デスクトップでアプリケーションをデモできるようになり、翌日に10M + ? –

+1

@JanVladimirMostert - AFAIKのみAppEngineは、次のようにシームレスにスケールされます。コードをアップロードすると、残りの部分が実行されます。 –

答えて

12

これは、1つの投稿について多くの質問があります。とにかく:

  1. Amazon EC2は自動的に読み込みと縮尺されません。 EC2は基本的に単なる仮想マシンです。 Auto ScalingElastic Load BalancingでEC2インスタンスのスケーリングを実現できます。

  2. SQLデータベースの規模が不十分です。だから、人々が最初にNoSQLデータベースを使い始めたのです。クラウドプロバイダが管理対象サービスとして提供するデータベースは、GAEではDatastore、AmazonではDynamoDBです。

  3. EC2インスタンスに独自のデータベースをインストールすることは、EC2がephemeral storageであるため、非常に実用的ではありません(再起動時に「ディスク」のすべてのデータが失われます)。

  4. GAE Datastoreは、実際に実行されているすべてのアプリケーション用の1つの大きなデータベースです。だから、スケーラビリティは非常に高いです。あなたの100万人のユーザーは、問題にはならないはずです。 http://highscalability.com/blog/2011/1/11/google-megastore-3-billion-writes-and-20-billion-read-transa.html

  5. ありありApp Engineは、フロントエンドインスタンスとデータベースの両方で自動的に拡大縮小されます。それを拡大縮小するために必要な特別なことは何もなく、APIを使用するだけです。 - あなたはデータストアまたはブロブストアを使用する必要が

    A.いいえ、ローカルストレージ(ファイルシステム):

  6. あなたがのAppEngineで何ができるかの制限があります。

    B.Cometは、独自のチャネルAPIを介してのみサポートされています

    C. DatastoreはNoSQLデータベースです.JOIN、限定クエリ、限定トランザクションはありません。

  7. GAEのコストは悪くありません。私たちは1日に1日約5ドルの要求をします。最大の節約は、あなたがGAEのシステム管理者を必要としないという事実から来ます(ただし、EC2にはシステム管理者が必要です)。人員のコストと比較してGAEは信じられないほど安いです。お金を節約するため

いくつかのヒント(スピードアップ)GAE:

A.使用して(慎重natiralキーを作り上げる必要)取得の代わりに、データストア内のクエリ

B. memcacheを使用して、フォームデータストアのデータをキャッシュします。これはobjectifyで自動的に行うことができ、@Cached annotationです。 C.データを非正規化する。可能な限り少ない操作でデータを得るために、データをさまざまな場所に重複して書き込むことを意味します。

D.デバイスからの多くのRESTリクエストがあり、Cookieを使用していない場合は、セッションサポートをオフにします(または、自分のやり方で自分自身をロールバックします)。セッションでは、フードの下にデータストアが使用され、取得および配置されるすべての要求に対してセッションが使用されます。

E. adjusting app settingsについて読む。さまざまな設定を試してください(遅延やトラフィックパターン/スパイクをリクエストするアプリの耐性によって異なります)。フロントエンドのインスタンスを70%削減できました。

+0

Elastic Load Balancingの場合、各インスタンスがデータを取得するデータベースレイヤーをどのようにスケールするのですか、それともRDSがそれを正確に行うのでしょうか? –

+1

いいえ、EC2で独自のデータベースを実行するのは非常に難しいです:1.一時記憶域が揮発性です。2.ブロック記憶域が遅いです。 3.自分でdistrubuted setupでデータベースをセットアップする必要があります。 –

+1

短い:Amazonはデータベースを自動的に拡張しません。これを達成するには、データベースサービスの1つを使用する必要があります。 –

関連する問題