it-swarm-eu.dev

Windows Azure vs Amazon EC2 vs. Google App Engine

Z pohledu vývojáře, kterou platformu byste zvažovali pro velkou sociální webovou aplikaci? Pokud byste mohli poskytnout nějaké podrobnosti o tom, co považujete za silné stránky, která alternativa by byla skvělá.

159
iulianchira

Napsal jsem stejnou aplikaci na GAE (Python a nyní Java) a Azure. Pravděpodobně budu i nadále používat oba, pro různé věci. Zde je několik myšlenek, které budu průběžně aktualizovat:

Důvody použití GAE:

  • V zásadě dostanete za den jednu bezplatnou VM. U Azure platíte každý měsíc téměř 100 $, i když nemáte jednoho návštěvníka webu. Pokud vaše db přesáhne 1 GB, zaplatíte za úložiště dalších 90 $ (9 $ -> 99 $). Aktualizace: Azure má nyní různé VM a velikosti DB v různých cenových bodech. Podrobnosti zde .
    • Platba GAE je přiměřeně jemnozrnná - většina zdrojů je účtována za žádost/GB/MB, opět s bezplatnou denní alokací pro většinu zdrojů. V listopadu 2011 se však připojila k Azure a AWS a účtovala poplatky za webový server za instanční hodinu. Podrobnosti zde .
    • GAE má nejlehčí zatížení administrátora. Jakmile nastavíte, nasazení a opětovné nasazení je rychlé a vše automaticky upraví. Nemusíte se například obávat toho, kolik serverů vaše aplikace používá, jak shardovat data, jak vyrovnávat zatížení.
    • Mail prostě funguje. V době psaní Azure nenabízí SMTP, takže potřebujete server třetí strany.
    • Skvělá integrace s mnoha nabídkami Google - kalendáře, pošta, cokoli. Pokud nechcete mít kontrolu nad svou uživatelskou základnou, můžete správu uživatelů delegovat na Google.
    • S GAE znáte všechny funkce, které do obchodu přidají, dostanete. S Azure získáte pocit, že Sql Azure Database získá většinu lásky, ale bude to dražší. Azure Storage bude pravděpodobně mít nejvíce gotchas. Žádná relační integrita, žádné pořadí, budete se pohrávat s kontextem v paměti více. Obchod GAE má mnohem méně omezení a více funkcí než Azure Tables.
    • Dobrá volba, pokud již používáte Python nebo jazyky založené na JVM). Mnoho jazyků se nyní kompiluje do Java bytecode v dnešní době).
    • Aktualizace aplikace je velmi rychlá. Pro Pythona jsem měl nastavení klávesové zkratky a netrvalo to vůbec čas. Nyní používám Eclipse Plugin pro Java a funguje to velmi dobře. Azure je chmurnější).
    • Lokálně testovaná aplikace bude pravděpodobně spuštěna v cloudu bez (hodně nebo jakýchkoli) změn. U Azure je konfigurace jiná a já jsem strávil nějaký čas zastavením-mazáním-budováním-nahráváním-spuštěním, než jsem to udělal správně.
    • GAE má skvělé uživatelské rozhraní, které zahrnuje prohlížeč protokolu a editor dat. V Azure musíte v tuto chvíli najít externí prohlížeče/editory.
    • GAE vám umožní mít na stejném datovém úložišti spuštěno více verzí vaší aplikace. Až budete připraveni, můžete nasadit, otestovat verzi a poté nastavit aktuální „živou“ verzi. Pokud se něco pokazí, můžete se vrátit zpět.


      Důvody k použití Azure:

    • Výkonové charakteristiky a důsledky nákladů datového úložiště App Engine vás překvapí. Pokud děláte něco jiného než jednoduchý CRUD, budete muset pracovat tvrději, než byste měli s normální DB. Žádné dotazy ad-hoc.
    • Azure má dva přístupy k ukládání a nabízí větší výběr. Jsou to SQL Azure Database (SAD), což je relační DB, a Azure Storage, který se skládá z nerelačních tabulek, bloků a front. Pokud máte investici do SQL Serveru, pak se SAD snadno přesune, ale je docela nákladný a může být méně škálovatelný. Aktualizace: App Engine má MySQL API v omezené beta verzi.
    • Azure se zdá být lépe navržen, pokud máte přístup typu SOA. Zdá se, že jejich architektury těží ze zkušeností v podnikovém světě. Zdá se, že GAE se více zaměřuje na jednoduché zobrazování webových stránek.
    • Aplikaci můžete spouštět v režimu ladění, v bodech přerušení atd.
    • Azure má „inscenační“ prostředí, ve kterém se můžete nasadit do cloudu, ale nechat ho žít, dokud nebudete spokojeni, že to funguje.
    • Používám. Net pro jiné věci a jejich integrace s .Net na backendu je mnohem jednodušší než s GAE. (Aktualizace - pomocí Java na GAE funguje dobře a časový limit 10 sekund je nyní 30 sekund).
    • Integrace s mnoha MS "Live" nabídkami.

      Takže žádné zřejmé odpovědi. V tuto chvíli jsem nastaven na App Engine kvůli nákladům a snadnosti použití. Mohl bych použít Azure pro velmi orientované aplikace. Používám Amazon S3 pro stahování, ale pravděpodobně nepoužívám EC2, protože raději nechám vše pod úrovní aplikace na odborníky.
  • 227
    Richard Watson

    Jsem jednoznačně zaujatý - pracuji v týmu App Engine, který dělá vztahy s vývojáři - ale tohle je moje věc:

    Nejsou přímo srovnatelné. Pro každou z nich můžete napsat sadu aplikací, ale v každém případě budete psát něco jiného. App Engine poskytuje omezené běhové prostředí - žádné zápisy do souborů, žádné sokety atd. - a nerelační DBMS. Ale na oplátku dostanete runtime prostředí, které se škáluje na neurčito, a přiměřenou míru jistoty, že vaše aplikace bude škálovat tak velká, jak chcete.

    Na druhou stranu Azure poskytuje o něco méně omezené prostředí, které vám umožní psát širší škálu aplikací, ale vyžaduje, abyste psali více - protože sami implementujete více zásobníku - a poskytuje mnohem volnější záruku škálovatelnosti .

    Konečně AWS poskytuje dokonalé řešení do-it-yourself. Poskytují hardware a úložiště a nic jiného. Sestavujete svůj zásobník od základů, udržujete jej, upgradujete jej a tak dále. Vaše aplikace se přizpůsobí, pouze pokud ji zapíšete do měřítka, což není žádná malá výzva. Ale máte úplnou kontrolu nad hardwarem.

    Moje rada by byla: Pokud vaše aplikace vyhovuje modelu App Engine - a aplikace v sociální síti bude pravděpodobně docela dobrým příkladem těch, které tak učiní - napište svou aplikaci do App Engine (Java nebo Python, podle vašeho výběru). Je to levnější a je mnohem snazší napsat aplikaci, která měří měřítko.

    Pokud vaše aplikace neodpovídá modelu GAE, vyberte Azure nebo AWS, v závislosti na tom, zda píšete pro zásobník MS, a na tom, jakou kontrolu nad prováděcím prostředím chcete. Pokud se většina vaší aplikace hodí na GAE, ale malé části tomu tak není, můžete zvážit hybrid - například živé zobrazování na GAE, ale ukládání na S3 nebo hromadné zpracování na EC2.

    176
    Nick Johnson

    Pro mě je rozhodujícím faktorem blokování.

    Pokud se rozhodnete pro Google, bude vaše aplikace fungovat pouze na Google. Pokud zjistíte, že jste po nějaké době méně spokojeni, jste zaseknutí.

    Pokud se rozhodnete pro MS, bude vaše aplikace fungovat pouze na Azure. Stejná věc.

    V Amazonu získáte virtuální servery, které fungují přesně jako stroje, na které jste zvyklí. Nespokojený? Vyzvedněte aplikaci, nainstalujte na skutečný hardware, hotovo.

    27
    lucvdv
    • Pokud jste vývojář .NET - přejděte na Azure.
    • Pokud jste na Python nebo Java -), přejděte na Google.
    • Pokud jste na Ruby -), přejděte do Amazonu

    Moje osobní volba by teď byla Google s Java (i když jsem většinu času .NET).) Přemýšlejte o nákladech - jejich schéma je obtížné porovnat.

    Podívejte se na tento článek - http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure

    20
    Mash

    Stejně jako Arachnid, i já mohu být zkreslený, protože jsem googler. Jsem však také akcionářem Amazonky, takže to zkreslení může částečně vyrovnat první ;-). Žádné zkušenosti s Azure (i když také držím akcie MSFT, takže doufám, že se jim také povede dobře - další zkreslení ;-).

    Moje velmi jednoduché vzít na to, že App Engine snadno nabízí schopnost pracovat (v rámci jeho omezení) jen kódováním - nejsou potřeba žádné úkoly správy systému. AWS je mnohem flexibilnější, ale budete budete potřebovat značnou práci se správou systému (a ve skutečnosti není vůbec triviální), abyste mohli tuto flexibilitu využít. Nakonec bych doporučil Arachnidův návrh: pokud App Engine dokáže splnit vaše potřeby, rozhodně jděte na to; Pokud potřebujete větší flexibilitu, zdá se, že AWS je to správná cesta (pokud by schopnosti Azureovy neznámé osoby pro mě nebyly lepší, ale myslím si, že AWS bude flexibilnější bez ohledu na to, co Azure dokáže, například s AWS, můžete dokonce vybrat, který operační systém použít, pokud to potřebujete).

    20
    Alex Martelli

    Právě jsem začal pracovat s Azure a už jsem ohromen, že to můžete udělat v F #: http://code.msdn.Microsoft.com/fsharpazure ! Zatím je to jediná cloudová platforma, která umožňuje ovládat funkční programování řízeným způsobem (samozřejmě můžete udělat Haskell v EC2 ... nebo ALGOL 68). Jsem velmi ohromen kvalitou integrace Visual Studio - dostanete místní „cloud“ k testování, DevFabric, s úložištěm, které je skutečným SQL serverem, takže můžete hrát před nahráním. Může to GAE udělat? Když se podívám na Azure, učím se VS s F # (pocházející z Linuxu a OCamlu), přál bych si, abych už dávno přešel na MS stack. Je velmi snadné vytvořit úložiště SQL a zkontrolovat jej ve VS - je velmi užitečné. Open Source nemá odpovídající sadu nástrojů a je čas, aby lidé spravedlivě zvážili MS - zde udělali skvělou práci. Jistě se držím své základny Mac OSX (duální bootování do Vista) a moje pouta je, že se Azure může vyvíjet lokálně, dostanu samostatný Vista box pro Azure vývoj. .NET je opravdu ohromující, když přicházíte ze světa unixových dýmek - PowerShell, SQL a LINQ, C # a F # (což je můj hlavní důvod) - ale ukázalo se, že to vše přidává a stojí za to se učit kromě, nikoli místo toho , Linux; a ve všech případech Azure rozšíří vaše obzory.

    14
    Alexy

    Stejně jako Miluji GAE, jedním z hlavních důvodů, proč chodím s EC2 přes GAE pro svůj aktuální projekt, je to, že musím mít možnost nechat si opravit přední část své aplikace z datových center umístěných v různých částech světa. GAE běží současně v jednom datovém centru. Například potřebuji, aby uživatelé v Asii zasáhli servery v Asii pro co nejrychlejší možnou dobu odezvy pro moji aplikaci. Přidejte možnost správy dns, load balancerů, databáze výběru, flume tlačení do S3 pro hadoop zpracování dat atd. A EC2 se stává opravdu působivým řešením.

    8
    Jon Stevens

    Některé věci, které je třeba zvážit:

    Zrychlení: jak rychle se můžete stát produktivním s vybraným prostředím, jaký druh dokumentů existuje a jsou jasné a dobře podporované ukázky zřejmé a užitečné

    Cena: cena je faktor, ale pokud děláte komerční aplikaci, která bude ve skutečnosti mít zákazníky, to vše jsou schůdné možnosti. Pokud předpokládáte, že Azure, s jedním procem v „malé“ instanci, běží za zhruba 90 $ měsíčně za 24x7 použití ... Kolik uživatelů můžete v té době obsluhovat? Přidejte druhou instanci pro nadbytečnost ... stále to není tak nákladné, pokud to váš provoz vyžaduje. Pokud tomu tak není, proč jste v cloudu místo levného hostovaného poskytovatele? Větší nákladové faktory přicházejí do vašeho času na realizaci tohoto. AWS je roll your own solution. To je hodně zvládnout získat řešení, které bude stabilní a dobře spravované. Azure a GAE to mají mimo krabici. Podle mého názoru je AWS nejdražší kvůli práci, kterou do něj musíte vložit. Opravdu potřebujete kontrolu nad tím v tak jemné úrovni granularity? Pokud ano, vyfoukněte chuchvalec a kupte si vlastní krabice, možná ... no AWS bude stále levnější než náklady na hardware.

    Schopnost dělat to, co chcete: AWS celou cestu. Azure je druhý, GAE je třetí. Žádné biggie, pokud chcete Java a Python. Biggie, pokud chcete dělat relační DB nebo rozsáhlé zpracování více podprocesů v C++).

    A co přenosnost? Můžete si ji vzít později na svou vlastní farmu nebo ji přesunout do jiné cloudové farmy? Všechny jsou do jisté míry přenosné.

    Hodně přemýšlet o ... stále se o tom stále učím.

    5
    Spanky

    Pokud potřebujete instance spustit ručně, abyste splnili požadavek, nejedná se o cloud.

    Azure a EC2 jsou pouze virtuální servery s některými službami na straně.

    Aktualizace:

    EC2 a Azure vám poskytují možnosti ke správě spouštění nových instancí automaticky při zatížení, ale stále musíte toto spravovat. A platíte za případy, které jsou v chodu a nečinné.

    GAE zpracovává tento automaticky po vybalení z krabice a účtuje se vám pouze za dobu, kdy je váš kód spuštěn během požadavků.

    4
    Peter Knego

    Zde je několik dalších úvah.

    GAE - sedí na platformě výše jako zásobník služeb než AWS a Azure, veškerý provoz směrován prostřednictvím jejich DNS ghs.google.com DNS, dynamicky načítá zobrazování vaší stránky prostřednictvím jednoho ze svých strojů, což jim umožňuje udržovat nízké ceny. škálování je jemně zrnitý s tímto přístupem, nevýhody není statický ip, náchylný k filtrování nebo blokování. Z důvodu omezení statického ip nebudete moci nastavit žádný https cert pro konkrétní web.

    AWS a Azure vám do značné míry poskytují statickou IP a vyhrazený VM, což umožňuje takové základní požadavky, jako je https cert. získáte také podporu relačních úložišť. Náklady jsou také vyšší, aby odrážely tento vyhrazený VM fakt, a budete škálovat na VM, takže v kusy 40 dolarů/měsíc). Výhodou je to, že dostanete a VM pro sebe, nejste omezeni na 30sekundové omezení zpracování procesorů na GAE a můžete spouštět větší úkoly).

    Pokud tedy uvažujete zákaznickou základnu ve filtrovaných zemích nebo chcete, aby statická IP prováděla vlastní nastavení DNS, nebo máte požadavky, které vyžadují relační db nebo více než 30 sekundové úkoly. AWS, s Azure by bylo mnohem přátelštější pracovat.

    4
    savagepanda

    Podívejte se na řešení, která nabízí každá cloudová nabídka, a jděte na hybridní model. Některé problémy vyžadují kladivo a jiné šroubovák. Seznamte se se svými nástroji a aplikujte je na správný problém.

    3
    Joo Park

    Nemám dost pověsti, abych zanechal komentář k jedné z výše uvedených odpovědí. Vhodnost kteréhokoli z těchto cloudových řešení závisí na mnoha faktorech včetně vašich potřeb a dovedností.

    Mám projekt sociálních sítí, který vyžaduje databázi nosql. AppEngine by bylo dobrým řešením, kdyby mělo lepší podporu pro různé rámce. Django with nonrel adapter funguje na Python GAE, ale raději Rails _ z mnoha důvodů. Rails3 je už několik měsíců a nikdo v komunitě ani v týmu GAE ještě nenapsal recept na jeho podporu. Pokud nemáte sadu dovedností - znáte Ruby a Rails interní, jruby a interní GAE - psát svůj vlastní recept, jste na milost jiných lidí jen proto, abyste dostat se na platformu.

    AWS je mnohem víc práce, ale přinejmenším se můžete dostat na platformu pomocí jakýchkoli nástrojů a řešit mnoho problémů administrativně, spíše než jako interní vývojář nebo žadatel o vyšší pravomoci.

    Moje stížnost na Heroku a EngineYard pro vývojáře Ruby je záhadou toho, jak se databáze mění. Jak se měřítko?

    V mém případě volím řešení NoSQL a Mongo se zdá být dobrou volbou. MongoMachine se zdá být doporučeným řešením pro Heroku nebo EY, ale je to šílené drahé. Úložný prostor 2,50 $/GB? Úložiště je pouze 0,10 $ GB/měsíc na GAE nebo EBS.

    3
    HappyCoder

    Začal jsem experimentovat s Google App Engine docela nedávno a pro webovou sociální síť věřím, že by vyhovovala všem vašim potřebám. Je snadné to pochopit a lze jej použít buď s Python nebo Java.) Je pravda, že vám nedává přístup k souborům, ale pro vaši aplikaci GQL (SQL- jako je rozhraní k databázi, kterou poskytují), bude pravděpodobně více než dost (a je to docela robustní).

    Jedna věc, kterou byste mohli zvážit, je to, že aplikace na GAE může používat rozhraní, které umožní uživatelům s účty Google nebo účty v doméně pomocí přihlášení do služby Google Apps (zkratka). Vyberete si jeden z těchto. Pokud již tedy používáte web Google Apps, byla by pro vás skvělá volba Google App Engine, protože vaši uživatelé by nemuseli registrovat nové účty.

    EDIT: Jak Arachnid zdůraznil, není to tak, že nemůžete kódovat svůj vlastní přihlašovací systém. Promiň, jestli tě tam trápím.

    Pokud jde o další dvě alternativy, četl jsem o nich pouze a netestoval je. Ale věřím, že GAE poskytuje jednodušší rámec z mého výzkumu a jak jste zmínil skvělé ceny.

    V každém případě můžete vyzkoušet GAE pomocí bezplatné kvóty na prostor a šířku pásma a zjistit, zda vyhovuje vašim potřebám.

    Hodně štěstí.

    1
    alkar

    Azure má Windows/SQL jako server „Platform as a Service“ a rozhodně NENÍ zaseknutý, stačí se vrátit do Windows/SQL ve svém vlastním datovém centru (Ne linux, ale ano, podporují Javu, Python, PHP, Ruby, Tomcat , Apache atd.). Stejně jako Amazon budou poskytovat také plně přístupnou možnost virtuálního počítače, takže můžete instalovat/spustit, co chcete.

    Amazon má pouze virtuální stroj, takže stále musíte intall, patch, license, secure, etc. ... Podle mého názoru je to trochu porážky výhod přechodu do cloudu. Právě jste přesunuli něco ze svého datového centra do jiného.

    Google nemá relační databázi a vy byste byli STUCK. Opravdu se starají pouze o vývojáře Python vývojáři a nějakou omezenou podporu Java.) Podle mého názoru opravdu nejsou hráčem v cloudovém prostoru.

    1
    Jeff

    Jedna věc, která zde není zmíněna, je to, co někdo považuje za "Windows Azure AppFabric Service Bus & ACS" kromě strašného jména ...?

    Zdá se, že se jedná o skutečně silný balík integračních funkcí, díky nimž bude Azure přitažlivý z pohledu jakéhokoli podnikání s investicemi do infrastruktury budov.

    1
    Doobi

    Po chvíli experimentování s Amazon EC2 a zasažení několika zpoždění jsem začal zkoumat Google Apps, zatímco experimentoval kvůli nákladům. Upřednostňuji Erlang jako vývojový jazyk, ale umím se vypořádat s Pythonem, takže to nebyl rozhodující faktor. Když jsem neviděl žádnou statickou IP, tak to bylo. Také celá část o tom, že je nahoře nahoře, mě z hlediska výkonu trochu nervózní.

    Přál bych si, aby byl AWS levnější, ale dokud Google neposkytne statické IP a nejlépe další jazyky jako Scala, JRuby a Erlang, výběr je pro mě jasný: AWS . První dva jazyky by měly být také jednoduché, oba jsou založeny na JVM. Může to být dokonce již provedeno prostřednictvím obchůzek, jak se zdá, že si o tom něco přečtu.

    0
    Bill Barnhill

    Kluci si myslím, že kromě přemýšlení o tom, jaká platforma podporuje srovnání, by mělo být škálovatelnost, snadný přístup, všestranný (pokud jde o implementaci), může se přizpůsobit různým hostitelským platformám, stejně ekonomicky životaschopným pro obchodní případ, má více podnikových řešení aplikací (viz. skladování, dodávka, šířka pásma, licenční politika atd.), sledování důvěryhodnosti kvality služeb, auditované zabezpečení, transparentnost ve fakturaci i náklady atd. Pokud se podíváte na všechny výše uvedené metriky, cítím, že AWS skóre je mnohem vyšší . Spravuji 10 produkčních účtů na AWS od 2 let a zároveň společnost/obchodní jednotka byla schopna uspokojit velké požadavky zákazníků na škálovatelnost .... Není pochyb o tom, že AWS potřebuje udržovat infrastrukturu, aktualizace (pokud existují/pokud existují) povinné), zabezpečení atd. Máte však všechny nástroje dostupné na trhu/síť volně. Stávající IT zdroje mohou také udržovat veškerou infrastrukturu na AWS.

    Azure jistě má integrovaný IDE s VS 2010, ale skutečné náklady na jakýkoli cloud se začnou po úspěšném nasazení aplikace (platforma pro nasazení). Stále je to dlouhá cesta, jak dospět k řešení nasazení v reálném čase/škálovatelné scénáře produkce ....... Jak každý ví, že MS hraje mnoho skrytých programů nákladů na náklady .. je velmi obtížné rozeznat vzniklé nebo vzniklé náklady (při odesílání odhadů).

    GAE je velmi specifický pro Python/Java aplikace). Obrovské úsilí (jak z hlediska zdroje, tak nákladů) při přepisování aplikace (existující), testování, nasazeno atd.

    0
    Rajshekar