Windows Azure gegen Amazon EC2 gegen Google App Engine


159

Welche Plattform würden Sie aus Entwicklersicht für eine große Social-Web-Anwendung in Betracht ziehen? Wenn Sie uns einige Details zu den Stärken der jeweiligen Alternative mitteilen könnten, wäre dies großartig.


2
Ich habe das Gleiche kürzlich verglichen und meine Vor- und Nachteile auf meinem Blog gepostet. Azure ist raus (basierend auf den Kosten eines kleinen Projekts), aber EC2 und Google App Engine sind starke Konkurrenten! blog.dantup.com/2010/10/…
Danny Tuppeny

2
Diese Frage sollte Community-Wiki sein.

Rackspace ftw!
Greg

Antworten:


227

Ich habe die gleiche App für GAE (Python und jetzt Java) und Azure geschrieben. Ich werde wahrscheinlich weiterhin beide verwenden, für verschiedene Dinge. Hier sind ein paar Gedanken, die ich weiter aktualisieren werde:

Gründe für die Verwendung von GAE:

  • Grundsätzlich erhalten Sie eine kostenlose VM pro Tag. Mit Azure zahlen Sie fast 100 US-Dollar pro Monat, auch wenn Sie keinen einzigen Website-Besucher haben. Wenn Ihre Datenbank größer als 1 GB ist, zahlen Sie zusätzlich 90 USD (9 USD -> 99 USD) für die Speicherung. Update: Azure verfügt jetzt über verschiedene VM- und DB-Größen zu unterschiedlichen Preisen. Details hier .
  • Die Zahlung von GAE erfolgt in angemessenem Umfang - die meisten Ressourcen werden pro Anfrage / GB / MB berechnet, wobei die meisten Ressourcen täglich kostenlos zugewiesen werden. Im November 2011 wurde jedoch gemeinsam mit Azure und AWS eine Gebühr für den Webserver pro Instanzstunde erhoben. Details hier .
  • GAE hat die geringste Verwaltungslast. Sobald Sie eingerichtet sind, ist die Bereitstellung und erneute Bereitstellung schnell und sie führen automatisch alle Aktionen aus. Sie kümmern sich beispielsweise nicht darum, wie viele Server Ihre App verwendet, wie die Daten gespeichert werden und wie der Lastausgleich erfolgt.
  • Mail funktioniert einfach. Zum Zeitpunkt des Schreibens bietet Azure kein SMTP-Out an, sodass Sie einen Drittanbieter-Server benötigen.
  • Hervorragende Integration in viele Google-Angebote - Kalender, E-Mail, was auch immer. Sie können die Nutzerverwaltung an Google delegieren, wenn Sie keine Kontrolle über Ihre Nutzerbasis haben möchten.
  • Mit GAE kennen Sie alle Funktionen, die sie zum Shop hinzufügen. Mit Azure bekommen Sie das Gefühl, dass Sql Azure Database die meiste Liebe bekommt, aber es wird teurer. Azure Storage hat wahrscheinlich die meisten Probleme. Keine relationale Integrität, kein Order-by, Sie werden mehr mit dem In-Memory-Kontext experimentieren. Der GAE-Store unterliegt weitaus weniger Einschränkungen und bietet mehr Funktionen als Azure Tables.
  • Gute Wahl, wenn Sie bereits Python- oder JVM-basierte Sprachen verwenden. Heutzutage werden viele Sprachen mit Java-Bytecode kompiliert.
  • Das Aktualisieren der App geht sehr schnell. Für Python hatte ich eine Tastenkombination eingerichtet und es dauerte überhaupt keine Zeit. Ich benutze jetzt das Eclipse Plugin für Java und es funktioniert sehr gut. Azure ist etwas fummeliger.
  • Eine lokal getestete App wird wahrscheinlich in der Cloud ohne (viele oder keine) Änderungen ausgeführt. Bei Azure ist die Konfiguration anders und ich habe einige Zeit damit verbracht, das Hochladen von Dateien zu stoppen, zu löschen und zu starten, bevor ich es richtig verstanden habe.
  • GAE hat eine großartige Benutzeroberfläche, die einen Protokollbetrachter und einen Dateneditor enthält. Bei Azure müssen Sie derzeit externe Viewer / Editoren dafür finden.
  • Mit GAE können Sie mehrere Versionen Ihrer Anwendung auf demselben Datenspeicher ausführen. Sie können eine Version bereitstellen, testen und dann die aktuelle Live-Version festlegen, wenn Sie bereit sind. Sie können zurückwechseln, wenn etwas schief geht.


    Gründe für die Verwendung von Azure:

  • Die Leistungsmerkmale und die Auswirkungen auf die Kosten des App Engine-Datenspeichers werden Sie überraschen. Wenn Sie etwas anderes als einfaches CRUD ausführen, müssen Sie härter arbeiten als mit einer normalen Datenbank. Keine Ad-hoc-Anfragen.
  • Azure hat zwei Speicheransätze, die eine größere Auswahl bieten. Dies sind die SQL Azure-Datenbank (SAD), eine relationale Datenbank, und der Azure-Speicher, der aus nicht relationalen Tabellen, Blobs und Warteschlangen besteht. Wenn Sie eine Investition in SQL Server haben, ist es einfach, auf SAD zuzugreifen, dies ist jedoch recht kostspielig und möglicherweise weniger skalierbar. Update: App Engine verfügt über eine MySQL-API in eingeschränkter Betaphase.
  • Azure scheint besser zu sein, wenn Sie über einen SOA-Ansatz verfügen. Ihre Architekturen scheinen von Erfahrungen in der Unternehmenswelt zu profitieren. GAE scheint sich mehr auf die einfache Bereitstellung von Webseiten zu konzentrieren.
  • Sie können die App unter Debuggen ausführen, Haltepunkte setzen usw.
  • Azure verfügt über eine "Staging" -Umgebung, in der Sie die Cloud bereitstellen können, diese jedoch erst dann aktivieren können, wenn Sie zufrieden sind, dass sie funktioniert.
  • Ich benutze .Net für andere Dinge und die Integration mit .Net im Backend ist viel einfacher als mit GAE. (Update - Die Verwendung von Java unter GAE funktioniert einwandfrei, und das Timeout von 10 Sekunden beträgt jetzt 30 Sekunden.)
  • Integration mit vielen MS "Live" -Angeboten.

    Also keine offensichtlichen Antworten. Ich habe momentan die Standardeinstellung für App Engine, da die Kosten und die Benutzerfreundlichkeit sehr hoch sind. Ich verwende Azure möglicherweise für sehr MS-orientierte Apps. Ich verwende Amazon S3 zum Herunterladen, werde EC2 jedoch wahrscheinlich nicht verwenden, da ich es bevorzuge, alles unter der Anwendungsebene den Experten zu überlassen.


  • 10
    Richard, vielleicht ist ein weiteres Plus für Azure eine relationale Datenbank. Bigtables Scherben sind ein etwas fremdes Paradigma.
    Hyperslug

    22
    Mit App Engine können Sie auch mehrere Versionen Ihrer App bereitstellen. Jede Version erhält eine eigene URL, die Sie testen können. Wenn Sie bereit sind, markieren Sie diese Version einfach als Standard. Einfach zu testen, bereitzustellen und bei Bedarf auf eine frühere Version zurückzusetzen, wenn etwas schief geht.

    Azure zahlt nach Belieben, ohne Verpflichtungen, nur für die Nutzung. Die monatliche Verpflichtung beträgt mindestens 99 US-Dollar.
    Akash Kava

    1
    Auf microsoft.com/windowsazure/pricing wird SQL Azure folgendermaßen beschrieben: "* Web Edition: Relationale Datenbank mit bis zu 1 GB = 9,99 USD / Monat * Business Edition: Relationale Datenbank mit bis zu 10 GB = 99,99 USD / Monat * Datenübertragungen = 0,10 USD / Monat 0,15 US-Dollar / GB - (0,30 US-Dollar / 0,45 US-Dollar / GB in Asien) "
    Richard Watson,

    1
    App Engine bietet jetzt SQL-Unterstützung für Block Storage. code.google.com/apis/sql
    devnul3

    176

    Ich bin eindeutig voreingenommen - ich arbeite im App Engine-Team und arbeite im Bereich Entwicklerbeziehung - aber das ist meine Einstellung:

    Sie sind nicht direkt vergleichbar. Es gibt eine Reihe von Apps, die Sie für jede von ihnen schreiben können, aber Sie werden in jedem Fall eine andere Sache schreiben. App Engine bietet eine eingeschränkte Laufzeitumgebung - kein Schreiben in Dateien, keine Sockets usw. - und ein nicht relationales DBMS. Im Gegenzug erhalten Sie eine Laufzeitumgebung, die unbegrenzt skalierbar ist, und eine angemessene Sicherheit, dass Ihre App so groß skaliert wird, wie Sie es möchten.

    Auf der anderen Seite bietet Azure eine etwas weniger eingeschränkte Umgebung, in der Sie ein breiteres Spektrum an Apps schreiben können. Sie müssen jedoch mehr schreiben, da Sie mehr von dem Stapel selbst implementieren, und die Skalierbarkeit ist viel sicherer .

    Schließlich bietet AWS die ultimative Do-it-yourself-Lösung. Sie stellen die Hardware und den Speicher zur Verfügung und nicht viel mehr. Sie bauen Ihren Stack von Grund auf auf, warten ihn, erweitern ihn und so weiter. Ihre App lässt sich genau dann skalieren, wenn Sie sie maßstabsgetreu schreiben. Dies ist keine leichte Aufgabe. Sie haben jedoch die vollständige Kontrolle über Ihre Hardware.

    Mein Rat wäre: Wenn Ihre App zum App Engine-Modell passt - und eine Social Network App wahrscheinlich ein ziemlich gutes Beispiel dafür ist - schreiben Sie Ihre App auf App Engine (Java oder Python, Ihre Wahl). Es ist billiger und es ist viel einfacher, eine App zu schreiben, die skaliert.

    Wenn Ihre App nicht zum GAE-Modell passt, wählen Sie Azure oder AWS, je nachdem, ob Sie für den MS-Stack schreiben und wie viel Kontrolle Sie über die Ausführungsumgebung haben möchten. Wenn der größte Teil Ihrer App auf GAE passt, kleine Teile jedoch nicht, können Sie einen Hybrid in Betracht ziehen - beispielsweise Live-Serving auf GAE, Speicherung auf S3 oder Massenverarbeitung auf EC2.


    Was ist mit Problemen wie diesem: Als App Engine schief gelaufen ist ?
    Cristian Ciupitu

    @Cristian Ich bin mir nicht sicher, was Sie hören möchten - jeder Dienst hat gelegentliche Ausfallzeiten. Dies beinhaltet sowohl App Engine als auch EC2.
    Nick Johnson

    @ Nick Johnson: Sie haben Recht, jeder Service hat gelegentliche Ausfallzeiten und ich erwarte keine 100% ige Verfügbarkeit. Andererseits sieht dieses Problem nicht nach Ausfallzeiten aus. Für mich scheint es eine Einschränkung der Google App Engine zu sein, dh Ihr Code muss in ziemlich kurzer Zeit ausgeführt werden. Ich bin nicht mit GAE vertraut, bitte korrigieren Sie mich, wenn ich etwas missverstehe.
    Cristian Ciupitu

    1
    @ Christian Ah. Die Ausnahme selbst wird ausgelöst, weil zu viel Zeit für die Ausführung aufgewendet wurde, aber die Ursache für die Verlangsamung waren einige temporäre Leistungsprobleme.
    Nick Johnson

    Ich bin damit einverstanden, dass "sie nicht vergleichbar sind". Der Vergleich dieser Dienstleistungen ist wie der Vergleich von Äpfeln und Orangen. Beides sind Früchte, das war's auch schon.
    Bis

    27

    Für mich ist Lock-In der entscheidende Faktor.

    Wenn Sie sich für Google entscheiden, funktioniert Ihre Anwendung nur bei Google. Wenn Sie nach einiger Zeit weniger als zufrieden sind, stecken Sie fest.

    Wenn Sie sich für MS entscheiden, funktioniert Ihre Anwendung nur unter Azure. Gleiche Sache.

    Bei Amazon erhalten Sie einen oder mehrere virtuelle Server, die genau so funktionieren, wie Sie es gewohnt sind. Nicht zufrieden? Holen Sie sich Ihre App, installieren Sie sie auf echter Hardware, fertig.


    3
    GAE kann Java-Servlet-Standardanwendungen ausführen und standardbasierte Persistenz verwenden.
    Stephen Denne

    4
    GAE ist völlig offen (obwohl Sie mit der Verwendung eines JDO - Storage - API - Stick benötigen.)

    1
    Beschränkt Google immer noch die Datenmenge, die Sie gleichzeitig abrufen können? Ihre Sperre basiert mehr auf Daten als auf Code.
    Mark Ransom

    4
    Sie können AppScale verwenden, um Ihre Apps auf EC2 oder an einem beliebigen anderen Ort auszuführen
    Amir

    3
    Ist heute darauf gestoßen, dass jemand in einer Woche von Google wechseln konnte. Sie geben auch zu, dass es Monate dauern könnte, wenn sie von Anfang an keine guten Praktiken angewandt hätten. carlosble.com/?p=719
    Mark Ransom

    20
    • Wenn Sie .NET Developer sind, wechseln Sie zu Azure.
    • Wenn Sie Python oder Java verwenden, rufen Sie Google auf.
    • Wenn Sie auf Ruby sind, gehen Sie zu Amazon

    Meine derzeitige persönliche Wahl wäre Google mit Java (auch wenn ich die meiste Zeit .NET bin). Denken Sie an die Kosten - ihr Schema ist schwer zu vergleichen.

    Lesen Sie diesen Artikel - http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure


    8
    Nicht alle .NET-Entwickler sollten zu Azure wechseln. Amazon EC2 ist für sie eine durchaus akzeptable Option. Aber +1 für die Bezugnahme auf den ausgezeichneten Artikel.
    Andrew Arnott

    Ja, Amazon ist etwas Freiheit der virtuellen Maschine, aber die Community ist anfangs hauptsächlich auf Ruby ausgerichtet ...

    1
    AWS unterstützt .Net-Entwickler auf ihrem Windows 2003 Server AMI, aber ich vermute, dass eine gute Anzahl von .Net-Entwicklern lieber auf Windows Server 2008 bereitstellen würde, das noch nicht auf AWS implementiert wurde. Wenn Sie regelmäßig in den AWS-Foren sind, haben Sie möglicherweise festgestellt, dass Amazon in dieser Angelegenheit etwas ruhiger ist.
    Richard Dorman

    2
    Ich bin ein .NET-Entwickler, aber der Preis für die Verwendung von Azure für eine Website, auf der 0 Treffer erzielt wurden, hat sich nach meinem Geschmack von Google ausgewirkt. Ich habe einige Vergleiche in meinem Blog geschrieben: blog.dantup.com/2009/12/… blog.dantup.com/2009/12/…
    Danny Tuppeny

    4
    Wenn Sie Ruby verwenden, ziehen Sie Heroku oder EngineYard anstelle von Amazon in Betracht.
    Andy318

    20

    Wie Arachnid bin ich vielleicht voreingenommen, weil ich google. Allerdings bin ich auch ein Amazon-Aktionär, so dass sich die erste teilweise verzerren kann ;-). Keine Azure-Erfahrung (obwohl ich auch MSFT-Aktien besitze, hoffe ich, dass auch sie gut abschneiden - noch eine weitere Tendenz ;-).

    Ich gehe ganz einfach davon aus, dass App Engine Ihnen auf einfache Weise die Möglichkeit bietet, (innerhalb seiner Grenzen) nur durch Codierung zu arbeiten - es sind keine Systemverwaltungsaufgaben erforderlich. AWS ist viel flexibler, aber Sie werden wesentliche Systemadministration Arbeit (bei allen und nicht wirklich trivial) brauchen Vorteil dieser Flexibilität zu nehmen. Am Ende würde ich also dem Vorschlag von Arachnid folgen: Wenn App Engine Ihre Anforderungen erfüllen kann, entscheiden Sie sich auf jeden Fall dafür. Wenn Sie mehr Flexibilität benötigen, scheint AWS der richtige Weg zu sein (es sei denn, die mir unbekannten Funktionen von Azure sollten besser zusammenpassen). Ich denke jedoch, dass AWS flexibler sein wird, unabhängig davon, was Azure beispielsweise mit AWS für Sie tun kann kann sogar auswählen, welches Betriebssystem verwendet werden soll (falls erforderlich).


    14

    Ich habe gerade mit der Arbeit mit Azure begonnen und bin bereits beeindruckt, dass Sie dies in F # tun können: http://code.msdn.microsoft.com/fsharpazure! Bisher ist es die einzige Cloud-Plattform, die es ermöglicht, funktionale Programmierung auf verwaltete Weise zu verwenden (natürlich können Sie Haskell auch in EC2 ... oder Algol 68 ausführen). Ich bin sehr beeindruckt von der Qualität der Visual Studio-Integration - Sie erhalten eine lokale "Cloud" zum Testen, DevFabric, mit einem Speicher, der ein echter SQL Server ist, sodass Sie vor dem Hochladen spielen können. Kann GAE das tun? Wenn ich mir Azure anschaue und VS mit F # (von Linux und OCaml) lerne, wünschte ich mir, ich hätte schon vor langer Zeit dafür auf MS Stack umgestellt. Es ist sehr einfach, SQL-Speicher zu erstellen und in VS zu überprüfen - sehr praktisch. Open Source hat kein passendes Toolset und es ist an der Zeit, dass die Leute MS eine angemessene Überlegung machen - sie haben hier einen großartigen Job gemacht. Ich bleibe mit Sicherheit bei meiner Mac OSX-Basis (Dual-Boot in Vista) und meine Vermutung ist, Da Azure lokal entwickelt werden kann, erhalte ich eine separate Vista-Box für die Azure-Entwicklung. .NET ist wirklich überwältigend, wenn Sie aus der Unix-Pipe-Welt kommen - PowerShell, SQL und LINQ, C # und F # (was mein Hauptgrund ist) -, aber es stellt sich heraus, dass sich alles summiert und es sich lohnt, es zusätzlich zu lernen, nicht stattdessen von Linux; In jedem Fall erweitert Azure Ihren Horizont.


    2
    Azure verfügt nicht über etwas, das auch nur remote mit der Funktionalität von Amazon Elastic Map Reduce (basierend auf Open Source Hadoop) übereinstimmt. Es ist nicht einmal möglich, die Anzahl der Arbeiterrollen programmgesteuert festzulegen.

    3
    Microsoft versucht offensichtlich, seine .NET-Entwicklerbasis zu monetarisieren, und es ist wahr, dass die Nutzung des Microsoft-Stacks von Vorteil ist. Ich bin nicht davon überzeugt, dass dies allein das teure, blockartige Kalkulationsmodell wettmacht. Der springende Punkt beim Cloud-Computing ist die wartungsfreie Pay-as-you-go-Elastizität, die Azure noch nicht bietet.

    Sie können Clojure in GAE verwenden. the-deadline.appspot.com/login

    8

    So sehr ich GAE auch liebe, ein Hauptgrund, warum ich für mein aktuelles Projekt mit EC2 statt GAE arbeite, ist, dass ich das Front-End meiner Anwendung von Rechenzentren in verschiedenen Teilen der Welt aus warten lassen muss. GAE wird jeweils in einem Rechenzentrum ausgeführt. Ich möchte beispielsweise, dass Benutzer in Asien Server in Asien erreichen, um die schnellstmöglichen Antwortzeiten für meine Anwendung zu erzielen. Erweitern Sie die Verwaltung von DNS, Load Balancern, Datenbank Ihrer Wahl, Flume Pushing in S3 für die Hadoop-Verarbeitung von Daten usw. ... und EC2 wird zu einer wirklich überzeugenden Lösung.


    5

    Einige Dinge zu beachten:

    Auf dem Laufenden halten: Wie schnell können Sie mit der gewählten Umgebung produktiv werden, welche Art von Dokumenten vorhanden sind und ob diese klar und gut unterstützt sind. Beispiele sind offensichtlich und nützlich

    Kosten: Kosten sind ein Faktor, aber wenn Sie eine kommerzielle App erstellen, die tatsächlich Kunden hat, sind dies alles mögliche Entscheidungen. Wenn Sie davon ausgehen, dass Azure mit einem Proc auf einer "kleinen" Instanz für etwa 90 US-Dollar pro Monat rund um die Uhr ausgeführt wird, wie viele Benutzer können Sie in dieser Zeit warten? Fügen Sie eine zweite Instanz für Redundanz hinzu ... das ist immer noch nicht so teuer, wenn Ihr Datenverkehr dies rechtfertigt. Wenn dies nicht der Fall ist, warum befinden Sie sich in der Cloud statt bei einem preiswerten gehosteten Anbieter? Größere Kostenfaktoren kommen in Ihre Zeit, um dies umzusetzen. AWS ist eine eigene Lösung. Es ist viel zu tun, um eine stabile und gut verwaltete Lösung zu erhalten. Azure und GAE haben das bereits im Auslieferungszustand. Meiner Meinung nach ist AWS am teuersten, da Sie viel Arbeit investieren müssen. Benötigen Sie wirklich die Kontrolle über diese feine Granularität? Wenn ja,

    Fähigkeit zu tun, was Sie wollen: AWS den ganzen Weg. Azure ist an zweiter Stelle, GAE an dritter Stelle. Kein Problem, wenn Sie Java und Python wollen. Biggie, wenn Sie eine relationale Datenbank oder eine umfangreiche Multithread-Datenverarbeitung in C ++ ausführen möchten (sind Sie sich nicht sicher, ob dies jetzt bei einer dieser Datenbanken der Fall ist?).

    Was ist mit Portabilität? Können Sie es später in Ihre eigene Farm zurücknehmen oder in eine andere Cloud-Farm verschieben? Sie sind alle bis zu einem gewissen Grad tragbar.

    Es gibt viel zu überlegen ... ich lerne immer noch darüber.


    TyphoonAE und AppScale sind großartige Tools zum Ausführen von GAE-Apps an anderer Stelle.

    4

    Wenn Sie Instanzen manuell starten müssen, um den Bedarf zu decken, handelt es sich nicht um eine Cloud.

    Azure und EC2 sind nur virtuelle Server mit einigen Diensten.

    Aktualisieren:

    EC2 und Azure bieten Ihnen Optionen, um das automatische Starten neuer Instanzen unter Last zu verwalten. Dies muss jedoch noch verwaltet werden. Und Sie bezahlen für Instanzen, die nicht in Betrieb sind.

    GAE übernimmt dies automatisch und berechnet Ihnen nur die Zeit, in der Ihr Code während der Anforderungen ausgeführt wird.


    1
    Ich denke, Amazon CloudWatch löst das Problem des Startens zusätzlicher Instanzen basierend auf dem Datenverkehr.

    1
    Eine der häufigsten Demos, die ich für Azure gesehen habe, ist die Skalierbarkeits-Demo, in der sie Code schreiben, um Schwellenwerte für das Hoch- oder Herunterfahren von Web-Workern basierend auf der Last festzulegen. Es ist im Windows Azuer Training Kit enthalten: microsoft.com/downloads/en/…

    4

    Hier sind einige andere Überlegungen.

    GAE - Befindet sich als Service-Stack höher auf der Plattform als AWS und Azure. Der gesamte Datenverkehr wird über das DNS von ghs.google.com geleitet. Dadurch wird die Seite dynamisch über einen der Computer geladen, sodass die Preise niedrig gehalten werden können. Die Skalierung ist bei diesem Ansatz feinkörnig. Nachteile sind keine statischen IP-Adressen, die gefiltert oder blockiert werden können. Aufgrund der nicht statischen IP-Beschränkung können Sie kein standortspezifisches https-Zertifikat einrichten.

    AWS und Azure bieten Ihnen eine statische IP-Adresse und eine dedizierte VM, die grundlegende Anforderungen wie ein https-Zertifikat erfüllen. Sie erhalten auch Unterstützung für relationalen Speicher. Die Kosten sind ebenfalls höher, um diese dedizierte VM-Tatsache widerzuspiegeln. Sie skalieren also pro VM in 40-Dollar-Schritten pro Monat. Der Vorteil ist, dass Sie, da Sie eine VM für sich selbst haben, nicht an die 30-Sekunden-CPU-Verarbeitungsbeschränkung für GAE gebunden sind und größere Aufgaben ausführen können.

    Wenn Sie also Kundenstämme in gefilterten Ländern in Betracht ziehen oder möchten, dass eine statische IP-Adresse Ihr eigenes DNS-Setup ausführt, oder Anforderungen haben, die relationale Datenbank- oder mehr als 30-Sekunden-Aufgaben erfordern. AWS, Azure ist viel benutzerfreundlicher.


    3

    Schauen Sie sich die Lösungen an, die jedes Cloud-Angebot bietet, und wählen Sie das Hybridmodell. Einige Probleme erfordern einen Hammer und andere einen Schraubendreher. Lernen Sie Ihre Werkzeuge kennen und wenden Sie sie auf das richtige Problem an.


    3

    Ich habe nicht genug Ruf, um einen Kommentar für eine der obigen Antworten zu hinterlassen. Die Eignung einer dieser Cloud-Lösungen hängt von vielen Faktoren ab, einschließlich Ihren Anforderungen und Ihren Fähigkeiten.

    Ich habe ein soziales Netzwerkprojekt, für das eine NOSQL-Datenbank erforderlich ist. AppEngine wäre eine gute Lösung, wenn es die verschiedenen Frameworks besser unterstützen würde. Django mit nonrel Adapter funktioniert auf Python GAE, aber ich bevorzuge Rails aus vielen Gründen. Rails3 ist seit ein paar Monaten unterwegs und noch keiner in der Community oder im GAE-Team hat ein Rezept geschrieben, um es zu unterstützen. Wenn Sie nicht über die Fähigkeiten verfügen, Rubin- und Rails-Interna, Jruby- und GAE-Interna zu kennen, um Ihr eigenes Rezept zu schreiben, sind Sie anderen Leuten ausgeliefert, nur um auf die Plattform zu gelangen.

    AWS ist viel arbeitsintensiver, aber zumindest können Sie mit beliebigen Tools auf die Plattform zugreifen und sich mit vielen Problemen administrativ befassen, anstatt als interner Entwickler oder Anbieter höherer Berechtigungen.

    Meine Beschwerde über Heroku und EngineYard für Ruby-Entwickler ist das Rätsel, wie Datenbanken skaliert werden. Wie skalieren sie?

    In meinem Fall entscheide ich mich für eine NoSQL-Lösung und Mongo scheint eine gute Wahl zu sein. MongoMachine scheint die empfohlene Lösung für Leute wie Heroku oder EY zu sein, ist aber wahnsinnig teuer. 2,50 USD / GB Speicherplatz? Der Speicherplatz für GAE oder EBS beträgt nur 0,10 USD pro Monat.


    1

    Ich habe vor einiger Zeit angefangen, mit Google App Engine zu experimentieren, und für ein soziales Web-Netzwerk würde es meiner Meinung nach all Ihren Anforderungen gerecht. Es ist leicht zu verstehen und kann entweder mit Python oder Java verwendet werden. Es ist wahr, dass Sie keinen Zugriff auf Dateien erhalten, aber für Ihre Anwendung wird GQL (die SQL-ähnliche Schnittstelle zu der von ihnen bereitgestellten Datenbank) wahrscheinlich mehr als genug sein (und es ist recht robust).

    Möglicherweise möchten Sie berücksichtigen, dass eine Anwendung auf GAE eine Schnittstelle verwenden kann, über die sich Benutzer mit Google-Konten oder Konten in einer Domain, die Google Apps verwenden, anmelden können (eine Verknüpfung). Sie wählen eine davon. Wenn Sie bereits eine Google Apps-Website verwenden, ist Google App Engine eine gute Wahl, da Ihre Nutzer keine neuen Konten registrieren müssen.

    EDIT: Wie Arachnid betonte, ist es nicht so, dass Sie Ihr eigenes Anmeldesystem nicht codieren können. Entschuldigung, wenn ich Sie besorgt habe.

    Die beiden anderen Alternativen habe ich nur gelesen und nicht getestet. Aber ich glaube, GAE bietet meiner Recherche nach einen einfacheren Rahmen und, wie Sie sagten, gute Preise.

    In jedem Fall können Sie GAE mit dem freien Speicherplatz- und Bandbreitenkontingent ausprobieren und prüfen, ob es Ihren Anforderungen entspricht.

    Viel Glück.


    Nitpick: GQL ist nicht die Datenbank. GQL ist eine SQL-ähnliche Abfragesprache für die Python-Laufzeit, die auf dem Datenspeicher geschrieben ist. Sie müssen es nicht einmal verwenden - es gibt auch die Abfrage-API.
    Nick Johnson

    Sie können auch beliebige Benutzer in einer GAE-App anmelden. GAE bietet lediglich eine Verknüpfung für die Verwendung von Google-Konten.
    Nick Johnson

    Richtig, schlechte Wortwahl in beiden Fällen, danke für den Hinweis. Wird es bearbeiten :)

    BigTable ist Googles Datenspeicher-Engine. Nachdem ich einige Zeit damit verbracht hatte, fragte ich mich, ob ich meine ganze Karriere damit verbracht hatte, zu glauben, dass SQL-RDBMS für das Schreiben von Web-Apps unerlässlich sind. Das BigTable-Speichermodell ist einfach, flexibel, performant und skalierbar und funktioniert überraschend gut.

    1

    Azure hat Windows / SQL als Server "Platform as a Service", und Sie stecken definitiv NICHT fest, kehren Sie einfach in Ihrem eigenen Datencenter zu Windows / SQL zurück (Kein Linux, aber sie unterstützen Java, Python, PHP, Ruby, Tomcat) , Apache usw.). Wie bei Amazon wird auch hier die vollständig zugängliche Virtual Machine-Option bereitgestellt, sodass Sie installieren und ausführen können, was Sie möchten.

    Amazon hat nur eine virtuelle Maschine, Sie müssen also noch installieren, patchen, lizenzieren, sichern usw. ... Meiner Meinung nach sind die Vorteile des Wechsels in die Cloud ein Nachteil. Sie haben gerade etwas von Ihrem Rechenzentrum in ein anderes verschoben.

    Google hat keine relationale Datenbank und Sie würden stecken bleiben. Sie richten sich nur an Python-Entwickler und bieten eingeschränkte Unterstützung für Java. Sie sind meiner Meinung nach wirklich kein Spieler im Cloud-Bereich.


    4
    Jeff - Nachdem ich Microsoft-Partner für SQL Server 2008 geschult habe, bin ich mit den Vorteilen des Windows / SQL-Stacks definitiv vertraut, aber es fällt mir schwer zuzustimmen, dass man mit Googles BigTable STUCK ist. Es gibt ungefähr ein halbes Dutzend guter Bibliotheken, die die BigTable-API umschließen und sie als alles von einem Pseudo-RDBMS bis zu einem indizierten Dokumentsilo verfügbar machen. BigTable wurde von Grund auf für die Skalierung auf vielen Servern entwickelt (Google stellte fest, dass der Schweißpunkt 1.500 pro Cluster betrug), was eine Leistung ist, die SQL einfach nicht gut kann.

    1

    Eine Sache, die hier nicht erwähnt wird, ist, was jemand neben dem schrecklichen Namen für den "Windows Azure AppFabric Service Bus & ACS" hält ...?

    Es scheint ein wirklich leistungsstarker Stapel von Integrationsfunktionen zu sein, mit denen Azure aus der Sicht eines jeden Unternehmens, das in die lokale Infrastruktur investiert, attraktiv wird.


    Ja, aber die Kehrseite ist, dass Microsoft offiziell "Nein" zum lokalen Azure-Hosting für Unternehmen gesagt hat, was die Attraktivität des Busses beeinträchtigt.

    1
    Zwar stimmt der Name, aber in der Praxis ist das nicht der Fall, aber Microsoft bietet mit Hyper-V (das kostenlos ist) und Dingen wie Systems Center und InTune einen sehr überzeugenden privaten Cloud-Stack an. Es ist einfach nicht "Azure". Wenn Sie dies wünschen, wird es in Kürze die Option für "Azure-Appliances" für Drittanbieter geben, aber Sie müssen ziemlich groß sein, um diese Kosten zu rechtfertigen. Ich habe gehört, dass Sie mindestens etwa 1000 Knoten unterstützen müssen, daher ist dies eher für Besitzer von Rechenzentren gedacht.

    0

    Nachdem ich eine Weile mit Amazon EC2 experimentiert und einige Verzögerungen aufgetreten bin, habe ich mich aus Kostengründen mit Google Apps befasst. Ich bevorzuge Erlang als Entwicklungssprache, kann aber mit Python umgehen, das war also kein entscheidender Faktor. Als ich keine statische IP sah, war das. Auch der ganze Teil darüber, dass es höher auf dem Stack liegt, macht mich ein bisschen nervös in Bezug auf die Leistung.

    Ich wünschte, AWS wäre billiger, aber bis Google statische IPs und vorzugsweise zusätzliche Sprachen wie Scala, JRuby und Erlang bereitstellt , ist die Wahl für mich klar: AWS . Die ersten beiden Sprachen sollten ebenfalls einfach sein, beide basieren auf JVM. Vielleicht sogar schon durch Workarounds gemacht worden, da ich mich anscheinend daran erinnere, etwas darüber gelesen zu haben.


    Um pedantisch zu sein, können Sie Scala, JRuby und sogar Clojure auf App Engine ausführen, da die gesamte JVM unter der Haube läuft. Nun, ob es einfach ist , diese Sprachen zu benutzen oder nicht, ist eine andere Geschichte ...
    Chris Smith

    0

    Jungs, ich denke, abgesehen davon, welche Plattform der Vergleich unterstützt, sollte er sich auf Skalierbarkeit, Benutzerfreundlichkeit und Vielseitigkeit (in Bezug auf die Implementierung) beziehen. Er kann verschiedene Hosting-Plattformen unterstützen, die für den Geschäftsfall gleichermaßen wirtschaftlich sind. Er hat mehrere Lösungen für Unternehmen Anwendungen (z. B. Speicher, Bereitstellung, Bandbreite, Lizenzierungsrichtlinien usw.), nachverfolgbare Glaubwürdigkeit der Servicequalität, geprüfte Sicherheit, Transparenz bei der Abrechnung sowie Kosten usw. Wenn Sie sich alle oben genannten Messdaten ansehen, ist AWS meiner Meinung nach weit überlegen . Ich verwalte seit 2 Jahren 10 Produktionskonten bei AWS und gleichzeitig konnte das Unternehmen / der Geschäftsbereich die enormen Skalierbarkeitsanforderungen der Kunden erfüllen. Ohne Zweifel muss man bei AWS die Infrastruktur warten, Updates (falls vorhanden / falls vorhanden) erforderlich), Sicherheit usw. Aber Sie haben alle Tools auf dem Markt / im Netz frei. Bestehende IT-Ressourcen können auch die gesamte Infrastruktur in AWS verwalten.

    Azure verfügt zwar über eine integrierte IDE mit VS 2010, die tatsächlichen Kosten für eine Cloud werden jedoch erst nach erfolgreicher Bereitstellung der Anwendung (Plattform für die Bereitstellung) berechnet. Es ist noch ein langer Weg, um Echtzeit - Bereitstellungs - und skalierbare Produktionsszenarien zu adressieren ....... Wie jeder weiß, spielt MS viele versteckte Pläne für die Kosten. Es ist sehr schwierig, die anfallenden oder entstehenden Kosten (beim Versenden) zu ermitteln Schätzungen).

    GAE ist sehr spezifisch für Python / Java-Apps. Riesiger Aufwand (sowohl in Bezug auf Ressourcen als auch Kosten), um die Anwendung neu zu schreiben (vorhanden), zu testen, bereitzustellen usw.

    Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
    Licensed under cc by-sa 3.0 with attribution required.