開発者の観点から、大規模なソーシャルWebアプリケーションではどのプラットフォームを検討しますか?あなたがどの選択肢の長所であると考えているかについての詳細を提供できれば、それは素晴らしいでしょう。
開発者の観点から、大規模なソーシャルWebアプリケーションではどのプラットフォームを検討しますか?あなたがどの選択肢の長所であると考えているかについての詳細を提供できれば、それは素晴らしいでしょう。
回答:
同じアプリをGAE(Python、現在はJava)とAzureで作成しました。おそらく、さまざまなことに両方を使い続けるでしょう。更新し続けるいくつかの考えを以下に示します。
GAEを使用する理由:
Azureを使用する理由:
私は明らかに偏見があります-私はApp Engineチームで開発者との関係を築いています-しかしこれは私の考えです:
それらは直接比較できません。それらのいずれかのために書くことができるアプリのセットがありますが、あなたはそれぞれの場合に異なるものを書くことになります。App Engineは、ファイルへの書き込みやソケットなどの制限されたランタイム環境と非リレーショナルDBMSを提供します。しかし、その見返りとして、無限にスケーリングするランタイム環境と、アプリが希望どおりにスケーリングされるという合理的な保証を得ます。
一方、Azureは、やや制約の少ない環境を提供します。これにより、より幅広いアプリを作成できますが、より多くのスタックを自分で実装するため、より多くのアプリを書く必要があり、スケーラビリティの保証がはるかに緩やかです。 。
最後に、AWSは究極の日曜大工ソリューションを提供します。それらはハードウェアとストレージを提供しますが、他の多くは提供しません。スタックを一から構築し、維持し、アップグレードします。あなたのアプリは、あなたがスケーリングするためにそれを書く場合にのみスケーリングします。ただし、ハードウェアを完全に制御できます。
私のアドバイスは次のとおりです。アプリがApp Engineモデルに適合し、ソーシャルネットワークアプリがそのようなアプリのかなり良い例になる可能性がある場合は、App Engine(JavaまたはPython、選択)でアプリを作成します。それは安く、スケーリングするアプリを書くのはずっと簡単です。
アプリがGAEモデルに適合しない場合は、MSスタック用に書いているのか、実行環境をどの程度制御したいのかに応じて、AzureまたはAWSを選択してください。アプリの大部分がGAEに収まるが、小さな部品が収まらない場合は、ハイブリッドを検討することができます。たとえば、GAEでのライブ配信、S3でのストレージ、またはEC2での一括処理です。
私にとって、ロックインは決定的な要因です。
Googleを選択した場合、アプリケーションはGoogleでのみ機能します。しばらくして自分が満足していないことに気付いたら、行き詰まっています。
MSを選択した場合、アプリケーションはAzureでのみ動作します。同じこと。
Amazonでは、あなたが慣れ親しんでいるマシンとまったく同じように動作する仮想サーバーを取得します。満足していません?アプリを受け取り、実際のハードウェアにインストールして完了です。
私の今の個人的な選択は、Javaを使用するGoogleです(ほとんどの場合は.NETでも)。コストについて考えてください-それらのスキーマは比較するのが困難です。
この記事をご覧ください-http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure
クモ類のように、私はグーグルであることに偏っているかもしれません。ただし、私はAmazonの株主でもあるため、バイアスが最初の部分を部分的に相殺する可能性があります;-)。Azureの経験はありません(ただし、MSFT株も保有しているので、MSFTの株もうまくいくことを望みます-さらに別のバイアス;-)
私の非常に単純な考え方は、App Engineはコーディングするだけで(制限内で)作業する能力を簡単に提供することです。システム管理タスクは必要ありません。AWSの方がはるかに柔軟性がありますが、その柔軟性を活用するには、かなりのシステム管理作業が必要になります(実際には簡単ではありません)。最後に、クモの提案を2回目にします。AppEngineがニーズを満たすことができれば、絶対にそれを追求します。より柔軟性が必要な場合は、AWSが最適です(Azureの不明な機能がより適切な場合を除きますが、AWSを使用して、Azureで何ができるかに関係なく、AWSはより柔軟になります必要に応じて、使用するOSを選択することもできます)。
Azureの使用を開始したばかりですが、F#で実行できることにすでに感心しています:http : //code.msdn.microsoft.com/fsharpazure!これまでのところ、関数型プログラミングを管理された方法で使用できる唯一のクラウドプラットフォームです(もちろん、HaskellはEC2 ...または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は視野を広げます。
私がGAEを愛しているのと同じように、現在のプロジェクトでGAEを介してEC2を使用する主な理由の1つは、アプリケーションのフロントエンドを世界のさまざまな場所にあるデータセンターからサービスできるようにする必要があることです。GAEは一度に1つのデータセンターで実行されます。たとえば、アプリケーションの応答時間を最短にするために、アジアのユーザーがアジアのサーバーにアクセスする必要があります。dns、ロードバランサー、選択したデータベース、データのhadoop処理のためにS3にプッシュする水路などを管理する機能を追加すると、EC2は非常に魅力的なソリューションになります。
考慮すべき事項:
スピードアップ:選択した環境でどれくらいの速さで生産性を高めることができるか
コスト:コストは要因ですが、実際に顧客を持つ商用アプリを作成している場合、これらはすべて実行可能な選択肢です。「小さな」インスタンスの1つのprocで24時間365日の月額約90ドルで実行されるAzureを想定している場合、その時間に何人のユーザーにサービスを提供できますか?冗長性を確保するために2つ目のインスタンスを追加します。トラフィックがそれを保証するのであれば、それほど高価ではありません。そうでない場合、なぜあなたは安いホストプロバイダーではなくクラウドにいますか?これを実装するには、コスト要因が大きくなります。AWSは、独自のソリューションです。安定して適切に管理されるソリューションを得るには、多くの処理が必要です。AzureとGAEはすぐに使用できます。私の考えでは、AWSはあなたがそれに費やさなければならない仕事のために最も高価です。あなたは本当に細かなレベルでそれを制御する必要がありますか?もしそうなら、
必要なことを実行する機能:AWSをずっと使用できます。Azureは2番目、GAEは3番目です。JavaとPythonが欲しいなら、大したことはありません。C ++でリレーショナルDBや大規模なマルチスレッドデータ処理を行いたい場合は、大事です(これらのいずれかが今これを行うかどうかわかりませんか?)。
移植性はどうですか?後で自分のファームに戻したり、別のクラウドファームに移動したりできますか?それらはすべてある程度移植可能です。
考えることはたくさん...まだ自分自身でこれについて学んでいます。
需要を満たすためにインスタンスを手動で起動する必要がある場合、それはクラウドではありません。
AzureとEC2は、一部のサービスをサイドに備えた単なる仮想サーバーです。
更新:
EC2とAzureには、負荷がかかった状態で新しいインスタンスを自動的に開始することを管理するオプションがありますが、これを管理する必要があります。そして、稼働中のアイドル状態のインスタンスに対して料金を支払います。
GAEはこれをすぐに使用できるように自動的に処理し、リクエスト中にコードが実行されている間だけ料金を請求します。
その他の考慮事項を次に示します。
GAE-AWSおよびAzureよりもプラットフォーム上で高い位置にあり、すべてのトラフィックはghs.google.com DNSを経由してルーティングされ、マシンの1つを介してページを動的にロードするため、価格を低く抑えることができます。このアプローチではスケーリングはきめ細かく、Consは静的なIPではなく、フィルタリングまたはブロックされる傾向があります。静的IPの制限がないため、サイト固有のhttps証明書をセットアップできません。
AWSとAzureは、ほとんど静的IPと専用VMを提供するため、https証明書などの基本的な要件を満たすことができます。また、リレーショナルストレージのサポートも利用できます。この専用のVMの事実を反映するためにコストも高くなり、VMごとに40ドル/月のチャンクでスケーリングします。利点は、VMを自分で取得できるため、GAEでの30秒のCPU処理制限に制約されず、より大きなタスクを実行できることです。
したがって、フィルタリングされた国の顧客ベースを検討している場合、または静的IPで独自のDNSセットアップを行う場合、またはリレーショナルデータベースまたは30秒以上のタスクを必要とする要件がある場合。AWS、Azureの方がずっと使いやすいでしょう。
各クラウド製品が提供するソリューションを見て、ハイブリッドモデルに進みます。問題の中にはハンマーが必要なものと、ドライバーが必要なものがあります。ツールを理解し、適切な問題に適用してください。
上記の回答のいずれかにコメントを残すほどの評判はありません。これらのクラウドソリューションの適合性は、ニーズやスキルセットなどの多くの要因に依存します。
nosqlデータベースを必要とするソーシャルネットワーキングプロジェクトがあります。AppEngineは、さまざまなフレームワークをより適切にサポートしていれば、優れたソリューションになります。nonrelアダプタを備えたDjangoはPython GAEで動作しますが、私は多くの理由でRailsを好みます。Rails3は数か月前からリリースされており、コミュニティやGAEチームの誰もまだそれをサポートするレシピを書いていません。独自のレシピを書くスキル(RubyとRailsの内部、jruby、およびGAEの内部を知っている)がなければ、プラットフォームにたどり着くだけで他の人に翻弄されます。
AWSには多くの作業がありますが、少なくとも、内部の開発者として、またはより強力なサプリカントとしてではなく、管理者として、あらゆるツールを使用してプラットフォームにアクセスし、多くの問題に対処できます。
Ruby開発者向けのHerokuとEngineYardに関する私の不満は、データベースがどのように拡張されるかについての謎です。彼らはどのようにスケーリングしますか?
私の場合、NoSQLソリューションを選択していますが、Mongoが良い選択のようです。MongoMachineはHerokuやEYなどの推奨ソリューションのようですが、高価です。GBあたり2.50ドルのストレージ?ストレージはGAEまたはEBSで月額0.10 GBのみです。
私はかなり最近Google App Engineの実験を始めましたが、Webソーシャルネットワークの場合は、すべてのニーズを満たすと思います。簡単に理解でき、PythonまたはJavaで使用できます。ファイル経由でアクセスできるわけではないのは事実ですが、アプリケーションにとっては、GQL(提供するデータベースへのSQLのようなインターフェイス)はおそらく十分すぎるでしょう(そして非常に堅牢です)。
考慮すべきことの1つは、GAEのアプリケーションが、Googleアカウントを持つユーザー、またはGoogle Appsを使用するドメインのアカウントにログインできるインターフェイスを使用できることです(ショートカット)。これらのいずれかを選択します。したがって、既にGoogle Apps Webサイトを使用している場合、ユーザーは新しいアカウントを登録する必要がないため、Google App Engineは最適な選択肢です。
編集:Arachnidが指摘したように、独自のログインシステムをコーディングできないというわけではありません。申し訳ありませんが、私はあなたがそこに心配した場合。
他の2つの選択肢については、それらについて読んだだけで、テストしていません。しかし、私の研究から、そしてあなたがおっしゃるように、GAEはより簡単なフレームワークを提供すると信じています。
いずれにせよ、スペースと帯域幅の無料割り当てを使用してGAEを試して、ニーズに合うかどうかを確認できます。
幸運を祈ります。
AzureにはサーバーとしてのWindows / SQL "Platform as a Service"があり、間違いなく立ち往生せず、自分のデータセンターでWindows / SQLに戻るだけです(Linuxはありませんが、Java、Python、PHP、Ruby、Tomcatをサポートしています) 、Apacheなど)。Amazonと同様に、完全にアクセス可能な仮想マシンオプションも提供するため、好きなものをインストール/実行できます。
Amazonは仮想マシンのみであるため、まだインストール、パッチ、ライセンス、セキュリティなどを行う必要があります。私の意見では、クラウドへの移行の利点を打ち負かしています。データセンターから別のものに何かを移動しました。
Googleにはリレーショナルデータベースがなく、あなたは夢中になります。彼らは本当にPython開発者とJavaのいくつかの限定的なサポートにのみ対応しています。私の意見では、彼らは本当にクラウド空間のプレーヤーではありません。
ここで言及されていないことの1つは、恐ろしい名前の他に、誰もが「Windows Azure AppFabric Service Bus&ACS」について検討していることです...?
オンプレミスインフラストラクチャに投資するあらゆるビジネスの観点から、Azureを魅力的にする統合機能の非常に強力なスタックのようです。
しばらくAmazon EC2を実験し、いくつかの遅延を経験した後、コストのために実験しながらGoogle Appsの調査を開始しました。開発言語としてErlangを使いたいのですが、Pythonを扱うことができるので、それは決定的な要因ではありませんでした。静的IPを見なかったときはそうでした。また、スタックの上位に位置することについての全体的な部分は、パフォーマンスに関して少し緊張しています。
私は、AWSが安かったたいが、Googleが提供するまで、静的IPアドレスおよび好ましくは追加言語などのScala、JRubyの、そしてErlangのように、選択は私にとっては明らかです:AWS。最初の2つの言語もシンプルで、両方ともJVMベースです。私はそれについて何かを読んだことを覚えているように思えるので、回避策を通してすでに行われているかもしれません。
比較をサポートするプラットフォームを考えるだけでなく、スケーラビリティ、アクセスの容易さ、多用途性(実装の観点から)、さまざまなホスティングプラットフォームに対応でき、ビジネスケースでも経済的に実行可能で、企業向けの複数のソリューションがあるアプリケーション(つまり、ストレージ、配信、帯域幅、ライセンスポリシーなど)、サービス品質の実績の信頼性、セキュリティ監査、請求書の透明性、原価計算など。上記のすべてのメトリックを見ると、AWSスコアがはるかに高いと感じる。私は2年間AWSで10個の本番アカウントを管理していますが、同時に会社/ビジネスユニットは顧客の巨大なスケーラビリティの要求を満たすことができました。AWSでインフラストラクチャを更新する必要があるのは間違いありません。必須)、セキュリティなど しかし、あなたはすべてのツールを市場/ネットで自由に利用できます。既存のITリソースは、AWS上のすべてのインフラストラクチャも維持できます。
Azureは確かにVS 2010と統合されたIDEを備えていますが、アプリケーション(展開用プラットフォーム)を正常に展開した後、クラウドの実際のコスト計算が開始されます。リアルタイム展開/スケーラブルな生産シナリオに対処するために成熟するまでの長い道のり.......誰もが知っているように、MSは原価計算で多くの隠れた課題を果たします..見積り)。
GAEは、Python / Javaアプリに特化しています。アプリケーションのリライト(既存)、テスト、デプロイなどに多大な労力(リソースとコストの両方の面で)