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.
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.
Antworten:
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:
Gründe für die Verwendung von Azure:
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.
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.
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
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.