web-dev-qa-db-ja.com

Windows AzureとAmazon EC2とGoogle App Engine

開発者の観点から、大規模なソーシャルWebアプリケーションに対してどのプラットフォームを検討しますか?あなたがどの代替案の強みであると考えているかについていくつかの詳細を提供できれば、それは素晴らしいでしょう。

159
iulianchira

GAE(PythonとJava)とAzureで同じアプリを作成しました。私はおそらく別のもののために両方を使い続けるでしょう。ここに私が更新し続けるいくつかの考えがあります:

GAEを使用する理由:

  • 基本的に、1日あたり1つの無料のVMを使用できます。 Azureでは、Webサイトの訪問者が1人もいない場合でも、毎月ほぼ100ドルを支払うことができます。データベースが1GBを超える場合、ストレージに追加の$ 90($ 9-> $ 99)を支払います。更新:AzureにはさまざまなVMおよびさまざまな価格でのDBサイズがあります。詳細 ここ
    • GAEの支払いは適度にきめ細かく、ほとんどのリソースはリクエストごと、GB/MBごとに課金されます。これも、ほとんどのリソースに対して無料で毎日割り当てられます。ただし、2011年11月、AzureとAWSに参加し、インスタンス時間あたりのWebサーバーの料金を請求しました。詳細 こちら
    • GAEの管理負荷は最も軽いです。セットアップが完了すると、デプロイと再デプロイは迅速に行われ、すべてが自動的に行われます。たとえば、アプリが使用しているサーバーの数、データを分割する方法、負荷分散の方法について心配する必要はありません。
    • メールは機能します。執筆時点では、AzureはSMTPアウトを提供していないため、サードパーティのサーバーが必要です。
    • カレンダー、メールなど、さまざまなGoogleサービスとの優れた統合。ユーザーベースを制御したくない場合は、ユーザー管理をGoogleに委任できます。
    • GAEを使用すると、ストアに追加された機能をすべて把握できます。 Azureを使用すると、Sql Azure Databaseが大部分の愛着を得るという感覚が得られますが、コストは高くなります。 Azure Storageは、ほとんどの問題を抱えている可能性があります。リレーショナルインテグリティやオーダーバイはありません。メモリ内のコンテキストをいじくりまわします。 GAEのストアには、Azure Tablesよりも制限がはるかに少なく、機能が豊富です。
    • PythonまたはJVMベースの言語をすでに使用している場合に適しています。現在、多くの言語はJavaバイトコードにコンパイルされます。
    • アプリの更新は非常に高速です。 Pythonの場合、ショートカットキーの設定があり、まったく時間はかかりませんでした。 JavaにEclipseプラグインを使用しています。これは非常にうまく機能します。Azureはもっと面倒です。
    • ローカルでテストされたアプリはおそらく(ほとんどまたはまったく)変更なしでクラウド上で実行されます。 Azureの場合、構成が異なり、正しく理解する前に、stopping-deleting-building-uploading-startingの時間を費やしました。
    • GAEには、ログビューアとデータエディタを含む優れたUIがあります。 Azureでは、現在、このために外部の閲覧者/編集者を見つける必要があります。
    • GAEを使用すると、同じデータストアでアプリケーションの複数のバージョンを実行できます。バージョンをデプロイしてテストし、準備ができたら現在の「ライブ」バージョンを設定できます。問題が発生した場合は、元に戻すことができます。


      Azureを使用する理由:

    • App Engineのデータストアのパフォーマンス特性とコストへの影響は、驚くでしょう。単純なCRUD以外のことを行う場合は、通常のDBを使用する場合よりも一生懸命作業する必要があります。アドホッククエリはありません。
    • Azureにはストレージに対する2つのアプローチがあり、より多くの選択肢があります。リレーショナルDBであるSQL Azureデータベース(SAD)と、非リレーショナルテーブル、BLOB、キューで構成されるAzureストレージです。 SQL Serverに投資している場合、SADへの移行は簡単ですが、かなりコストがかかり、mightはスケーラビリティが低くなります。更新:App EngineのMySQL APIは限定ベータ版です。
    • SOAタイプのアプローチを採用している場合、Azureの方が設計が優れているようです。彼らのアーキテクチャは、エンタープライズの世界での経験から利益を得ているようです。 GAEは、単にWebページを提供することに重点を置いているようです。
    • アプリをデバッグして実行したり、ブレークポイントを設定したりできます。
    • Azureには、クラウドにデプロイできる「ステージング」環境がありますが、機能するまではライブ環境にできません。
    • 私は他のものに.Netを使用しており、それらをバックエンドで.Netと統合することはGAEよりもはるかに簡単です。 (更新-Javaの使用は正常に機能し、10秒のタイムアウトは30秒になりました)。
    • 多くのMS "Live"オファリングとの統合。

      したがって、明確な答えはありません。コストと使いやすさから、現時点ではデフォルトでApp Engineを使用しています。非常にMS指向のアプリにはAzureを使用する可能性があります。私はダウンロードにAmazon S3を使用しますが、アプリケーションレベルの下のすべてを専門家に任せたいので、EC2を使用しない可能性があります。
  • 227
    Richard Watson

    私は明らかに偏見があります-私はApp Engineチームで開発者関係をやっています-しかし、これは私の見解です:

    それらは直接比較することはできません。それらのいずれに対しても作成できるアプリのセットがありますが、それぞれのケースで異なるものを作成します。 App Engineは、ファイルへの書き込みやソケットなどのない制限されたランタイム環境と非リレーショナルDBMSを提供します。しかし、見返りとして、無制限にスケーリングするランタイム環境と、アプリが必要なだけの規模で拡大することを合理的に保証します。

    一方、Azureはわずかに制約の少ない環境を提供します。これにより、幅広いアプリの配列を作成できますが、より多くのスタックを自分で実装しているため、より多くの書き込みを行う必要があり、スケーラビリティのはるかに緩い保証が提供されます。 。

    最後に、AWSは究極の日曜大工のソリューションを提供します。ハードウェアとストレージを提供しますが、それ以外はあまり提供しません。スタックを最初から構築し、維持し、アップグレードします。アプリは、スケーリングするように記述した場合にのみスケーリングします。ただし、ハードウェアを完全に制御できます。

    私のアドバイスは次のとおりです。アプリがApp Engineモデルに適合していて、ソーシャルネットワークアプリがそうであるもののかなり良い例である可能性が高い場合、App Engineでアプリを記述します(JavaまたはPython、選択)。それは安価であり、スケーリングするアプリを書く方がはるかに簡単です。

    アプリがGAEモデルに適合しない場合は、MSスタック用に作成しているかどうか、および実行環境をどの程度制御したいかに応じて、AzureまたはAWSを選択します。ほとんどのアプリがGAEに適合しているが、小さな部品が適合しない場合は、ハイブリッドを検討することをお勧めします。

    176
    Nick Johnson

    私にとって、ロックインは決定的な要素です。

    Googleを選択した場合、アプリケーションはGoogleでのみ動作します。しばらくして満足が足りなくなると、行き詰まります。

    MSを選択した場合、アプリケーションはAzureでのみ動作します。同じこと。

    Amazonでは、使い慣れたマシンとまったく同じように機能する仮想サーバーを取得します。満足していません?アプリを受け取り、実際のハードウェアにインストールします。

    27
    lucvdv
    • .NET開発者の場合-Azureに移動します。
    • PythonまたはJava--Googleに移動します。
    • Rubyを使用している場合-アマゾンに行く

    私の現在の個人的な選択は、Java(ほとんどの場合、.NETであっても)のGoogleです。)コストについて考えてください-スキーマを比較することは困難です。

    この記事をご覧ください- http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure

    20
    Mash

    アラクニッドのように、私は偏見があり、グーグルであるかもしれません。ただし、私はAmazonの株主でもあるので、thatバイアスが最初の部分を相殺する可能性があります;-)。 Azureの経験はありません(ただし、MSFT株も保有しているので、MSFT株もうまくいくことを願っています-さらに別のバイアス;-)。

    私の非常に単純な見方は、App Engineは(制限内で)動作する機能を簡単に提供できるということですコーディングするだけで-システム管理タスクは必要ありません。 AWSの方がはるかに柔軟性がありますが、その柔軟性を利用するにはwillかなりのシステム管理作業が必要です(実際にはそれほど簡単ではありません)。それで、最後に私は2番目のArachnidの提案をします:App Engineがあなたのニーズを満たすことができるなら、絶対にそれをしてください。さらに柔軟性が必要な場合は、AWSが適しています(Azureのunknown-to-me機能の方が適している場合を除く)。ただし、AWSを使用する場合など、Azureで何ができるかに関係なく、AWSはより柔軟になると思います。必要に応じて、使用するOSを選択することもできます)。

    20
    Alex Martelli

    私はAzureでの作業を開始したばかりで、F#でそれを実行できることに既に感銘を受けています。 http://code.msdn.Microsoft.com/fsharpazure !これまでのところ、これは関数型プログラミングを管理された方法で使用できる唯一のクラウドプラットフォームです(もちろん、EC2でHaskellを実行できます...またはその点についてはALGOL 68)。 Visual Studioの統合の品質に非常に感心しています。実際のSQL Serverであるストレージを備えたローカルの「クラウド」であるDevFabricをテストして、アップロードする前に再生できます。 GAEはそれを行うことができますか? Azureを見て、F#でVSを学習して(LinuxとOCamlから)、私はずっと前にMSスタックに切り替えていたら良かったのにと思います。 SQLストレージを作成してVSで検査するのは非常に簡単です。非常に便利です。オープンソースには対応するツールセットがなく、今こそ人々がMSに公正な考慮を払う時です-彼らはここで素晴らしい仕事をしました。私は確かに私のMac OSXベース(Vistaへのデュアルブート)に固執しており、Azureをローカルで開発する機能があれば、Azure開発用に別のVistaボックスが手に入るでしょう。 .NETは、Unixパイプの世界-PowerShell、SQLおよびLINQ、C#およびF#(これが私の主な理由です)-から来ると本当に圧倒的ですLinuxの;すべての場合において、Azureは視野を広げます。

    14
    Alexy

    私がGAEを愛しているのと同じくらい、私が現在のプロジェクトでGAEよりもEC2を使用する主な理由の1つは、世界のさまざまな場所にあるデータセンターからアプリケーションのフロントエンドをサービスできる必要があることです。 GAEは一度に1つのデータセンターで実行されます。たとえば、私のアプリケーションで可能な最速の応答時間を得るために、アジアのユーザーがアジアのサーバーにヒットする必要があります。 DNS、ロードバランサー、選択したデータベース、データのHadoop処理のためにS3にプッシュするFlumeなどを管理する機能を追加すると、EC2は非常に魅力的なソリューションになります。

    8
    Jon Stevens

    考慮すべき事項:

    スピードを身に付ける:選択した環境でどのくらいの速さで生産性を上げることができるか

    コスト:コストは重要な要素ですが、実際に顧客がいる商用アプリを作成している場合、これらはすべて実行可能な選択肢です。 「小さな」インスタンスで1つのprocがあり、24時間年中無休で月額約90ドルで実行されるAzureを想定している場合、その間にサービスを提供できるユーザーは何人ですか?冗長性のために2番目のインスタンスを追加します...トラフィックがそれを保証する場合、それでもコストはかかりません。そうでない場合、安価なホスティングプロバイダーではなくクラウドを使用しているのはなぜですか?これを実装するためには、より大きなコスト要因が必要になります。 AWSは独自のソリューションです。これは、安定していて適切に管理されるソリューションを取得するために処理することがたくさんあります。 AzureとGAEには、すぐに使用できる機能があります。私の考えでは、AWSはあなたがそれに費やさなければならない仕事のために最も高価です。本当に細かいレベルの粒度でそれを制御する必要がありますか?もしそうなら、札束を爆破してあなた自身の箱を買うかもしれません...まあAWSはハードウェアのコストよりも安いでしょう。

    やりたいことを実行する能力:AWSまで。 Azureは2番目、GAEは3番目です。必要なものがJavaおよびPythonの場合は大したことはありません。リレーショナルDBまたはC++で大規模なマルチスレッドデータ処理を実行したい場合は、大したことはありません(これらのいずれかが現在これを実行しているかどうかはわかりませんか?)。

    移植性はどうですか?後で自分のファームに戻すことや、別のクラウドファームに移動することはできますか?それらはすべてある程度移植可能です。

    考えることはたくさんあります...まだ自分自身についてこれを学びます.

    5
    Spanky

    需要を満たすためにインスタンスを手動で起動する必要がある場合、それはクラウドではありません。

    AzureとEC2は仮想サーバーであり、いくつかのサービスが側面にあります。

    更新:

    EC2とAzureには、負荷がかかった状態で新しいインスタンスを自動的に開始するオプションがありますが、それでも管理する必要があります。そして、あなたは稼働していてアイドル状態のインスタンスに料金を支払います。

    GAEは自動的にこれを処理し、リクエスト中にコードが実行されている時間に対してのみ課金します。

    4
    Peter Knego

    その他の考慮事項は次のとおりです。

    GAE-プラットフォーム上でAWSやAzureよりもサービススタックとして配置され、すべてのトラフィックがghs.google.com DNSを介してルーティングされ、いずれかのマシンを介してページを動的にロードするため、価格を低く抑えることができます。このアプローチではスケーリングがきめ細かく、短所は静的IPではなく、フィルタリングまたはブロックされる傾向があります。静的IPの制限がないため、サイト固有のhttps証明書をセットアップすることはできません。

    AWSとAzureは、ほとんど静的IPと専用VMを提供し、https証明書などの基本的な要件を可能にします。また、リレーショナルストレージのサポートも利用できます。この専用のVM事実を反映すると、コストも高くなります。VMのように、40ドル/月のチャンクでスケーリングします。利点は、 a VMご自身にとって、GAEの30秒のCPU処理制限に制約されず、より大きなタスクを実行できます。

    したがって、フィルター対象国の顧客ベースを検討している場合、または静的IPで独自のDNSセットアップを実行したい場合、またはリレーショナルデータベースまたは30秒を超えるタスクが必要な要件がある場合。 AWS、Azureの方がはるかに使いやすいでしょう。

    4
    savagepanda

    それぞれのクラウド製品が提供するソリューションを見て、ハイブリッドモデルに進んでください。ハンマーが必要な問題もあれば、ドライバーが必要な問題もあります。ツールについて理解し、適切な問題に適用します。

    3
    Joo Park

    上記の回答のいずれかにコメントを残すほどの評判はありません。これらのクラウドソリューションの適切性は、ニーズやスキルセットを含む多くの要因に依存します。

    Nosqlデータベースを必要とするソーシャルネットワーキングプロジェクトがあります。 AppEngineは、さまざまなフレームワークをより適切にサポートしていれば、優れたソリューションになります。 nonrelアダプタを使用したDjangoはPython GAEで動作しますが、多くの理由でRailsを好みます。 Rails3は数か月間使用されておらず、コミュニティやGAEチームの誰もまだサポートするレシピを作成していません。スキルセット(RubyおよびRails internals、jruby、およびGAE internalsを知っている)を持たない限り、独自のレシピを書くために、他の人々のなすがままになっています。プラットフォームに乗ります。

    AWSははるかに多くの作業を必要としますが、少なくとも、内部開発者やより強力なサプリカントとしてではなく、どんなツールでもプラットフォームにアクセスして、多くの問題に管理的に対処できます。

    Ruby開発者に対するHerokuとEngineYardに関する私の不満は、データベースのスケーリングの謎です。どのようにスケーリングしますか?

    私の場合、私はNoSQLソリューションを選択しており、Mongoが良い選択のようです。 MongoMachineはHerokuやEYなどに推奨されるソリューションのようですが、高額です。 $ 2.50/GBストレージ?ストレージは、GAEまたはEBSで月額わずか0.10 GBです。

    3
    HappyCoder

    私はかなり最近、Google App Engineの実験を開始しました。Webソーシャルネットワークの場合は、すべてのニーズに対応できると思います。それのこつを取得するのは簡単であり、PythonまたはJavaのいずれかで使用できます。ファイルへのアクセスを提供しないのは事実ですが、アプリケーションではGQL(SQL-それらが提供するデータベースへのインターフェースのように)おそらく十分すぎるでしょう(そしてそれは非常に堅牢です)。

    考慮したいことの1つは、GAE上のアプリケーションが、Googleアカウントを持つユーザー、またはGoogle Appsログイン(ショートカット)を使用するドメイン上のアカウントを許可するインターフェイスを使用できることです。これらのいずれかを選択します。したがって、既にGoogle Apps Webサイトを使用している場合は、ユーザーが新しいアカウントを登録する必要がないため、Google App Engineが最適です。

    編集:Arachnidが指摘したように、独自のログインシステムをコーディングできないわけではありません。申し訳ありませんが、私はあなたに心配をさせてくれました。

    他の2つの代替案については、それらについて読んだだけで、テストしていません。しかし、私はGAEが私の研究から、そしてあなたが素晴らしい価格を述べたように、より簡単なフレームワークを提供すると信じています。

    いずれの場合も、スペースと帯域幅の無料割り当てを使用してGAEを試してみて、ニーズに合うかどうかを確認できます。

    幸運を祈ります。

    1
    alkar

    AzureにはWindows/SQLのサーバー「Platform as a Service」があり、完全に行き詰まっているわけではありません。自分のデータセンターでWindows/SQLに戻ってください(Linuxはありませんが、Java、Python、PHP、Ruby、Tomcatをサポートしています) 、Apacheなど)。 Amazonと同様に、完全にアクセス可能な仮想マシンオプションも提供するので、好きなようにインストール/実行できます。

    Amazonは仮想マシンのみなので、インストール、パッチ、ライセンス、セキュリティ保護などを行う必要があります。私の意見では、クラウドに移行することの利点を打ち負かしています。データセンターから別のものに移動したところです。

    Googleにはリレーショナルデータベースがなく、STUCKになります。彼らは本当にPython開発者といくつかのJavaの限定的なサポートしか提供していません。私の意見では、クラウドスペースのプレーヤーではありません。

    1
    Jeff

    ここで言及されていないことの1つは、「Windows Azure AppFabricサービスバスとACS」について、恐ろしい名前以外に誰もが考えていることです...?

    これは、オンプレミスインフラストラクチャに投資しているあらゆるビジネスの観点からAzureを魅力的なものにする、非常に強力な統合機能のスタックのようです。

    1
    Doobi

    Amazon EC2をしばらく試してみて遅延が発生した後、コストの関係で実験しながらGoogle Appsの調査を始めました。私は開発言語としてErlangを好みますが、Pythonを処理できるため、それは決定的な要因ではありませんでした。静的IPが表示されなかったときは、そうでした。また、それがスタックの上位にあるということの全体的な部分は、パフォーマンスに関して私を少し緊張させます。

    AWSが安くなればいいのですが、Googleが静的IP、そしてできれば追加の言語(Scala、JRuby、Erlangなど)を提供するまで、選択肢は明確です:[〜#〜] aws [〜#〜]。最初の2つの言語も単純でなければなりません。どちらもJVMベースです。私はそれについて何か読んだことを覚えているようで、回避策によってすでに行われているかもしれません。

    0
    Bill Barnhill

    比較をサポートするプラットフォームを考えるだけでなく、スケーラビリティ、アクセスのしやすさ、多用途(実装に関して)、さまざまなホスティングプラットフォームに対応でき、ビジネスケースでも経済的に実行可能であり、企業向けの複数のソリューションがあるアプリケーション(ストレージ、配信、帯域幅、ライセンスポリシーなど)、サービス品質の実績の信頼性、監査されたセキュリティ、課金の透明性、およびコスト計算など。上記のすべてのメトリックを見ると、AWSのスコアははるかに高いと感じます。私は2年間でAWSで10個の本番アカウントを管理しており、同時に会社/ビジネスユニットはお客様の巨大なスケーラビリティの要求を満たすことができました。AWSでは疑いなくインフラストラクチャを更新する必要があります。更新がある場合必須)、セキュリティなど。しかし、あなたは市場/ネットで自由に利用できるすべてのツールを持っています。既存のITリソースもAWSのすべてのインフラストラクチャを維持できます。

    Azureには確かに統合されたIDEがVS 2010に含まれていますが、アプリケーションのデプロイが成功すると、クラウドの実際のコストが発生します(デプロイ用のプラットフォーム)。スケーラブルな生産シナリオ.......誰もが知っているように、MSは原価計算で多くの隠された議題を実行します..(見積もりを送信している間)発生または発生するコストを把握することは非常に困難です。

    GAEは、Python/Java apps。に非常に固有です。アプリケーションを書き直す(既存の)、テスト済み、配備済みなど.

    0
    Rajshekar