12

私は現在、1 人のユーザーから 1,000 万人以上のユーザーの間でアプリケーションをスケーリングできるようにするクラウド PaaS を探しています。明確な答えを得るには、たとえば、リレーショナル データベースと SOAP Web サービスを備えた標準アプリケーションを開発する場合、このアプリケーションは Paas ソリューションにデプロイされたときに自動的にスケーリングされるか、それともフォールオーバーでアプリケーションを構築する必要があるかということです。冗長性とそれらすべてを念頭に置いていますか?

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

CloudFoundry を使用すると、ローカルでビルドして PaaS に直接デプロイすることができますが、ベータ版であるため、使用できるリソースの量に制限があり、私の記憶が正しければデータベースは 128 MB に制限されているため、現時点では使用できません。 . CloudFoundry を Amazon EC2 にインストールすることを提案する人もいますが、それはどのようにスケーリングされ、データベース層はどのように処理されるのでしょうか?

GAE (Google App Engine) を使用すると、アプリを展開するだけで済み、冗長性をどのようにスケーリングして実装するかを心配する必要がなくなりますか? GAE で実行できるものと実行できないものにはいくつかの制限があるようで、最近の値上げはかなりの数の開発者を動揺させましたが、他のプロバイダーと比べて本当にそれほど高価なのでしょうか?

基本的に、それはスケーリングされますか? また、スケーリングするには何をする必要がありますか?

4

1 に答える 1

12

これは、1 つの投稿に対して多くの質問です。ともかく:

  1. Amazon EC2 は、負荷に応じて自動的にスケーリングしません。EC2 は基本的に単なる仮想マシンです。Auto ScalingElastic Load Balancingを使用して、EC2 インスタンスのスケーリングを実現できます。

  2. SQL データベースはスケーリングが不十分です。これが、人々が NoSQL データベースを最初に使い始めた理由です。クラウド プロバイダーがマネージド サービスとして提供しているデータベース(GAE のデータストアとAmazonのDynamoDB ) を確認することをお勧めします。

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

  4. GAE Datastore は実際には、そこで実行されるすべてのアプリケーションのための 1 つの大きなデータベースです。したがって、非常にスケーラブルです。何百万ものユーザーが問題になることはありません。 http://highscalability.com/blog/2011/1/11/google-megastore-3-billion-writes-and-20-billion-read-transa.html

  5. はい、App Engine は、フロントエンド インスタンスとデータベースの両方を自動的にスケーリングします。スケーリングするために特別なことは何も必要ありません。API を使用するだけです。

  6. AppEngine でできることには制限があります。

    A. ローカル ストレージ (ファイル システム) はありません。Datastore または Blobstore を使用する必要があります。

    B. Comet は、独自の Channels API を介してのみサポートされます

    C. データストアが NoSQL データベースである: JOIN がなく、クエリが制限され、トランザクションが制限されている。

  7. GAE のコストは悪くありません。1 日あたり約 5 ドルで、1 日 100 万件のリクエストを行っています。最大の節約は、GAE ではシステム管理者が必要ないという事実によるものです (ただし、EC2 ではシステム管理者が必要です)。人件費と比較して、GAE は信じられないほど安価です。

お金を節約するためのヒント (スピードアップ) GAE:

A. Datastore でクエリの代わりに get を使用します (自然キーを慎重に作成する必要があります)。

B. memcache を使用して、データストアから取得したデータをキャッシュします。これは、 objectify とそれの@Cachedannotationを使用して自動的に行うことができます。

C. データを非正規化します。つまり、できるだけ少ない操作でデータにアクセスするために、さまざまな場所に冗長にデータを書き込むということです。

D. Cookie を使用しないデバイスからの REST 要求が多い場合は、セッション サポートをオフにします (または、私たちが行ったように独自にロールします)。セッションは内部でデータストアを使用し、取得および送信するすべてのリクエストに対して使用します。

E.アプリ設定の調整についてお読みください。さまざまな設定を試してください (アプリがリクエストの遅延とトラフィック パターン/スパイクに対してどの程度許容できるかによって異なります)。フロントエンド インスタンスを 70% 削減することができました。

于 2012-03-25T08:35:46.120 に答える