[Eine aktualisierte Liste 21. August 09]
Helfen Sie mir, eine Liste aller Vor- und Nachteile des Erstellens einer Anwendung in der Google App Engine zu erstellen
Vorteile:
- Keine Notwendigkeit, Server oder Serverplatz zu kaufen (keine Wartung).
- Erleichtert die Lösung des Skalierungsproblems.
- Geben Sie bis zu einem bestimmten Grad an verbrauchten Ressourcen frei.
Nachteile:
- In Google App Engine eingeschlossen?
- Entwickler haben schreibgeschützten Zugriff auf das Dateisystem in App Engine.
- App Engine kann nur Code ausführen, der von einer HTTP-Anforderung aufgerufen wird (außer für geplante Hintergrundaufgaben).
- Benutzer können beliebige Python-Module hochladen, jedoch nur, wenn sie reines Python sind. C- und Pyrex-Module werden nicht unterstützt.
- App Engine begrenzt die maximale Anzahl von Zeilen, die von einer Entität zurückgegeben werden, auf 1000 Zeilen pro Datenspeicheraufruf. ( Update - App Engine unterstützt jetzt Cursor für den Zugriff auf größere Abfragen.)
- Java-Anwendungen dürfen nur eine Teilmenge (The JRE Class White List) der Klassen aus der JRE Standard Edition verwenden.
- Java-Anwendungen können keine neuen Threads erstellen.
Bekannte Probleme!! : http://code.google.com/p/googleappengine/issues/list
Harte Grenzen
Apps pro Entwickler - 10
Zeit pro Anforderung - 30 Sek.
Dateien pro App - 3.000
HTTP-Antwortgröße - 10 MB
Datenspeicherelementgröße - 1 MB
Anwendungscodegröße - 150 MB
Update Der Blob-Speicher ermöglicht jetzt die Speicherung von Dateien mit bis zu 50 MB
Pro oder Contra?
Die Infrastruktur von App Engine beseitigt viele der Systemverwaltungs- und Entwicklungsprobleme beim Erstellen von Anwendungen, die auf Millionen von Treffern skaliert werden können. Google übernimmt die Bereitstellung von Code in einem Cluster, die Überwachung, das Failover und das Starten von Anwendungsinstanzen nach Bedarf.
Während andere Dienste es Benutzern ermöglichen, nahezu jede * NIX-kompatible Software zu installieren und zu konfigurieren, müssen Entwickler bei App Engine Python oder Java als Programmiersprache und eine begrenzte Anzahl von APIs verwenden. Aktuelle APIs ermöglichen das Speichern und Abrufen von Daten aus einer nicht relationalen BigTable-Datenbank. HTTP-Anfragen stellen; Email schicken; Bilder manipulieren; und Caching. Die meisten vorhandenen Webanwendungen können nicht ohne Änderungen auf App Engine ausgeführt werden, da sie eine relationale Datenbank erfordern.
quelle
Antworten:
Vorteile:
Nachteile:
Ich würde sagen, es ist nicht für ernsthafte Unternehmen gedacht und auf lange Sicht teuer.
quelle
(Eine riesige Neuheit) PRO: GAE unterstützt jetzt MySQL : https://developers.google.com/cloud-sql/
quelle
Vorteile:
integrierte Benutzeroberfläche für einheitliche Protokolle
integrierte Webschnittstelle für Aufgabenwarteschlangen
integrierte Indizes für die Liste der primären Objekte.
Nachteile:
lose Protokolle sehr schnell
Sehr teuer
Sehr teuer
Sehr teuer
Nicht hackbar. Skaliert, weil Sie verpflichtet sind, skalierbar zu codieren.
Längere Entwicklungszyklen. Manchmal möchte man einfach etwas zusammen hacken und nach 5 Stunden wegwerfen. Mit Appengine müssen Sie es richtig codieren und eine Menge Dinge schreiben, um sicherzustellen, dass es skaliert. Sie können nicht einfach "find. | Grep .avi | xargs ffmpeg -compress ...." :)
Sie verlieren Stunden damit, die einfachsten Aufgaben wie das Senden von Push-Benachrichtigungen an APNS (iPhone) auszuführen. Obwohl es in Ordnung ist, wenn Sie in Zukunft nur noch Android unterstützen möchten.
Schrecklich, die Datenbank zu bereinigen. Es ist ein RIESIGES Problem, Zeilen in der Datenbank zu reparieren, vor allem, weil es furchtbar langsam ist, aber es erfordert auch viel Code, um innerhalb der Zeitbeschränkungen eine ordnungsgemäße Schleife durchzuführen.
Es war ein Schmerz, Lucene zu portieren, um an seinem "Dateisystem" zu arbeiten.
Langsam für das, was Sie bezahlen.
Noch teurer, wenn Ihre App Verkehrsspitzen aufweist. Meine App hat diese Spitzen, wenn ein Benutzer mit vielen Followern eine Aktion ausführt und wir Benachrichtigungen an seine Follower senden müssen. Aus diesem Grund muss ich 10 inaktive Server immer eingeschaltet lassen ($$$$$), um Spitzen zu verarbeiten.
Appengine ist nicht schlecht, da ich die Option habe, $$$$ zu brennen, anstatt mir Sorgen um die Skalierbarkeit zu machen und Engpässe zu beheben, um die Servernutzung zu reduzieren. Manchmal lohnt es sich.
Mein Rat an Leute, die neue Produkte starten, ist, auf hetzner.de zu gehen, wo ich meine anderen Produktserver hoste. Es ist billig und extrem hackbar. Ich habe einen Server bei hetzner, der dreimal mehr Verkehr verarbeitet als das Produkt, das ich auf Appengine habe. Der Preisunterschied beträgt 100 US-Dollar pro Monat, Versionen 2700 US-Dollar pro Monat!
Ich habe Erfahrung als Systemadministrator, daher würde ich unter dem Strich niemals Appengine anstelle eines eigenen ROOT-Servers wählen. Seien Sie nicht der gelangweilte Softwareentwickler, der neue Dinge ausprobieren möchte, anstatt großartige Produkte zu entwickeln!
quelle
Pro: Unbegrenzte Skalierbarkeit Ihrer Anwendung und Skalierung mit der Nachfrage.
quelle
Con: In einigen Ländern (Argentinien) nicht verfügbar.
Bearbeiten
Weltweit verfügbar, jedoch nur über Google Groups for App Engine.
quelle
Bei der Beurteilung der Vor- und Nachteile halte ich es für wichtig, den Markt zu klären, für den man steht. Entwickler, die nach einer kostengünstigen Lösung suchen, um den steilen Teil ihrer geplanten Hockeyschläger-Wachstumskurve zu bewältigen, werden die bereits aufgeführten Nachteile schwer wiegen. Für einen Kleinunternehmer ist GAE jedoch ein Geschenk Gottes. Diese Leute suchen am häufigsten nach "der Cloud", um ihr Geschäft effektiver zu betreiben (dh physische Produkte und Dienstleistungen zu verkaufen). Für die SMB, GAE können die bereits aufgeführten Profis im Vergleich zu den Entwicklern, die nach Hockeyschlägern suchen, viel wertvoller sein, während die Nachteile nur einen Bruchteil des Maßes der Entwickler ausmachen. Ich sehe nicht, dass das GAE-Team irgendetwas im Zusammenhang mit der Positionierung von KMU tut, also denke ich, dass ich bei solchen Antworten nur an Supermans Umhang ziehe und in den Wind spucke. Wirklich sollte GAE jetzt absolut den SMB-Raum regieren. Wenn nicht (ich habe keine Einsichten bezüglich der Benutzerbasis), dann ist es ein sehr beklagenswerter Fehler.
quelle
Ich glaube, GAE ist noch nicht ausgereift, um die grundlegenden Funktionen für seriöse Unternehmen wie Datastore mit komplexem Primärschlüssel, java.awt. * Support, bereitzustellen. Dies sind nur einige Beispiele, die ich nenne.
Abgesehen von dem freien Speicherplatz und dem Aufbau einiger "Hobby" -Websites bin ich der festen Überzeugung, dass GAE NICHT der Ort ist, an dem sich Java-Leute umsehen sollten.
Ich habe Anwendungen, die auf JSP / Servlets und MySQL basieren, und denke über eine Migration auf GAE nach. Ich werde jedoch mehr Zeit für die Migration aufwenden, als nur einen Speicherplatz von einem Java-Hosting-Anbieter wie EATJ usw. Zu kaufen (Sorry nicht Marketing, nur eine Erfahrung).
Ein weiteres großes Problem ist die Migration meiner vorhandenen mySQL-Daten nach GAE. Bulkupload ist wirklich erbärmlich und hat keine Client-Unterstützung.
Keine Unterstützung für das Hochladen der lokalen Datenbank zur Server-Datenbank.
Sobald die GAE mit "allen oben genannten Nachteilen" fertig ist, werden wir uns diese Migration ansehen können.
quelle
Sie sind gezwungen, eine Mobiltelefonleitung zu besitzen, und Ihr Land + Mobilfunkanbieter muss in der Lage sein, internationale SMS zu empfangen.
(Ich hasse Handys und meine Mutter oder Kollegen bekommen keine SMS)
quelle
Con: Keine anderen RDBMS- oder NoSQL-Datenbanken sind nicht möglich ....
quelle
Con: Alle Ihre Basis gehören uns
... im Ernst:
Con: Sie steuern nicht die Umgebung, in der Ihre Anwendung ausgeführt wird. Die gleichen Nachteile wie beim Auslagern von Komponenten. Spaß für Spielzeug, (noch) nicht fürs Geschäft IMHO.
Verschiedene Dinge wie die API für proprietäre Backends von Google, wie das Datenbanksystem und andere "Sperren" und Frameworks, die bedeuten, dass Ihr Code an das System gebunden ist, können später Kostenprobleme verursachen, wenn Sie von GAE migrieren möchten. Natürlich können Sie konnte abstrakt diese.
Ich mag GAE, AppJet und andere. Die sind cool. Aber alles hat seinen Platz. Wenn Sie Freiheit und die Möglichkeit wünschen, die Module, API, Syntax / stdlib-Versionen Ihrer Sprache und so weiter zu steuern, geben Sie die Kontrolle nicht an einen Dienstanbieter ab.
Das Fehlen von Standards für Umgebungen und Spezifikationen für das, was Ihre App erwarten kann, beunruhigt mich in der Cloud.
gesunder Menschenverstand wirklich Sachen.
quelle
Con: Beschränkt auf Java und Python
quelle