web-dev-qa-db-ja.com

Amazon EC2、Google App Engine、Microsoft Azure、Salesforce.comはいつ使用すべきですか?

私は非常に一般的な意味でこれを求めています。クラウドプロバイダーとクラウドコンシューマーの両方の観点から。また、問題は特定の種類のアプリケーションに関するものではありません(実際の意図は、どのタイプのアプリケーション/ドメインがどのクラウドスラブに適合できるかを知ることです-SaaS PaaS IaaS)。

これまでの私の理解は:

IaaS:未加工のハードウェア(プロセッサ、ネットワーク、ストレージ)。

PaaS:OS、システムソフトウェア、開発フレームワーク、仮想マシン。

SaaS:ソフトウェアアプリケーション。

Stackoverflowerがクラウドコンピューティングの概念についての理解と経験を共有できればすばらしいと思います。

編集:わかりました、私はそれをより具体的な方法で置きます-

Amazon EC2:ハードウェアレイヤーを制御できません。ただし、OSイメージ、Devフレームワーク(.NET、J2EE、LAMP)、およびアプリケーションを選択して、EC2ハードウェアに配置できます。 Google App EngineまたはAzureで構築されたアプリケーションをEC2にデプロイできますか?

Google App Engine:ハードウェアとOSを制御できず、アプリケーションを構築するための特定のDev Frameworkを入手します。既存のJavaまたはPythonアプリケーションを取得して、それをGAEに移植できますか?またはその逆で、GAEで構築されたアプリケーションをGAEから取り出して、 WebsphereやWeblogicなどのアプリケーションサーバーに移植したか

Azure:ハードウェアとOSを制御できず、アプリケーションを構築するための特定のDev Frameworkを入手します。既存の.NETアプリケーションを取得してAzureに移植できますか?またはその逆で、Azureで構築されたアプリケーションをAzureから取り出して、Biztalkなどのアプリケーションサーバーに移植できますか?

88
user32262

良い質問!ご指摘のとおり、さまざまなオファリングはさまざまなカテゴリーに分類されます。

EC2はサービスとしてのインフラストラクチャです。 VMインスタンスを取得し、必要に応じてそれらを使用します。RackspaceCloud Serverはほぼ同じです。

Azure、App Engine、Salesforceはすべてサービスとしてのプラットフォームです。ただし、Azureでは、任意のバックグラウンドサービスを実行できますが、App Engineは、存続期間の短いリクエストハンドラータスクを中心にしています(ただし、タスクキューとスケジュールされたタスクもサポートしています)。私はSalesforceのサービスにそれほど精通していませんが、特定のニッチに特化していますが、いくつかの点でApp Engineに似ていると私は理解しています。

Software as a Serviceに該当するクラウド製品は、AmazonのSimple Storage ServiceやSimpleDBなどのインフラストラクチャ部分から、Fog CreekがホストするFogBugzなどの完全なアプリケーション、そしてもちろんStackExchangeまで、あらゆるものです。

一般的なルールとしては、オファリングのレベルが高いほど、実行する必要のある作業は少なくなりますが、より具体的になります。バグ追跡システムが必要な場合は、FogBugzを使用するのが明らかに最も簡単です。 App EngineまたはAzureの上に1つを構築すると作業が増えますが、汎用性が向上します。一方、EC2のようなraw VMの上に1つを構築すると、作業が増えます(実際にはかなり多くなります)が、さらに多くの汎用性が提供されます。私の一般的なアドバイスは、まだ要件を満たしている最高レベルのプラットフォームを選び、そこから構築することです。

58
Nick Johnson

これは素晴らしい質問です。私はAzureに部分的ですが、他の人との経験があるため、完全に開示します。

Azureが他の企業よりも優れていると思うのは、オンプレミスからクラウドへの迅速な移行です。例えば ​​-

  • SQL Azure-接続文字列を変更し、DBをアップロードしてください!
  • キューはMSMQとよく似ています。
  • ブロブはどのように振ってもほぼブロブですが、クレイジーなスケールです。
  • テーブルストレージコンポーネントは、名前と値のペアに信じられないほどのスケーラビリティを提供するので優れていますが、慣れるには多少時間がかかります。
  • Service Busは、さまざまな通信パラダイムを可能にするため、サービスの中で私のお気に入りです。 2つのSBエンドポイントは、最初に相互に接続しようとしますが、接続できない場合、クラウドを介してルーティングします。ファイアウォールが邪魔する傾向がある場合、非常に安全でスケーラブルな処理が可能になります。
  • アクセス制御リスト-通常はサービスバスと組み合わせて、適切なユーザーが適切なものにアクセスできるようにします-クラウドでSAMLを検討してください。

お役に立てば幸いです。

13
Derek

現在、私のクラウドエクスペリエンスはSalesforce.comに限定されています

標準的なビジネスオペレーションと自動化のために、アプリを非常に迅速に起動して実行できるようにする多数の機能を提供します。特に以下のメリットがあります。

  • セキュリティ(管理者はオブジェクトとフィールドへのアクセスを制御できます)
  • ワークフローと承認
  • 自動UI生成
  • 組み込みのレポートとダッシュボード
  • システム全体(カスタム変更を含む)はWebサービスを介してアクセス可能
  • システム内のデータを公開サイト(eコマースなど)を通じて利用可能にする機能
  • 標準的な問題を解決するためのサードパーティアプリの大規模なライブラリ

プラットフォームはすべての問題を解決するわけではありません。

私はこのプラットフォームを使用して、原子力発電所をモデル化したり、次のTwitterを作成したりしません。

8
Craig Harris

クラウドコンピューティングの主なポイントは、使用料を支払うことでコストを節約し、コンピューティングリソースの即時展開を可能にすることです。

コストは、純粋にxインスタンスあたり1時間あたりのセント額ではありません。コストには、保守、開発、管理などが含まれます。クラウドの大きな利点は、私の心では、お客様がコアビジネスコンピテンシーの範囲内にないものを管理する必要がないようにすることです。私が保険会社の場合、私の開発者に私の保険の問題に集中してもらい、私の請求、料金などのニーズを解決するのに役立ちます。電子メールサーバー、ファイルサーバー、ドキュメントリポジトリ、およびOSパッチの管理の問題への対処は避けたいです。 、サービスパックなど.

したがって、私の意見では、最大のメリットはSaaSおよびPaaSクラウドサービスから得られます。PaaSまたはSaaSに深刻な制限がある場合のみ、IaaSにアクセスする必要があります特定のニーズ(つまり、一連の独自のCOMコンポーネントをインストールする必要があり、Azureはそれらをサポートしていません)。

SaaSは、クライアントの基幹業務ではないが、ユーティリティのような商品タイプのアプリケーションに適しています。これらは、典型的なメッセージングシステム、ポータル、ドキュメントリポジトリ、電子メールシステム、CRM、ERP、経理などです。なぜ、十分にサポートされているサードパーティ製品をカスタマイズできる場合は、独自のものを書いてホイールを再発明するのでしょうか。

PaaSは、企業の主要なビジネスオファリングをサポートする基幹業務ソフトウェアに最適です。クライアントをOS管理に対処する必要がないように抽象化し、クライアントがビジネスシステム開発に集中できるようにします。

6
Igorek

PaaS(Google App Engineとしましょう)のメリットを活用し、場合によっては必要に応じて、IaaSプロバイダー(Amazonなど)から仮想マシンを引き出していくつかの処理を行い、返送することで拡張することもできます。 Google App Engineへの出力。

このようにして、両方の長所を手に入れます。GAEでスケーラブルなアプリを迅速に開発し、Amazon仮想マシンから必要なプログラムを実行することで、いつでもアプリを拡張できます。

3
joemar.ct

これは変化し続けており、Windows AzureもVMをサポートしているため、現在はIaaSプロバイダーでもあります。

2
Albert Cheng

では、より良い比較を行うために、1年間無料のAmazon EC2についてはどうでしょうか。これをチェックしてください。

http://www.buzzingup.com/2010/10/Amazon-announces-free-cloud-services-for-new-developers/

0
Susan