Vor- und Nachteile von Google App Engine [geschlossen]

70

[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:

  1. Keine Notwendigkeit, Server oder Serverplatz zu kaufen (keine Wartung).
  2. Erleichtert die Lösung des Skalierungsproblems.
  3. Geben Sie bis zu einem bestimmten Grad an verbrauchten Ressourcen frei.

Nachteile:

  1. In Google App Engine eingeschlossen?
  2. Entwickler haben schreibgeschützten Zugriff auf das Dateisystem in App Engine.
  3. App Engine kann nur Code ausführen, der von einer HTTP-Anforderung aufgerufen wird (außer für geplante Hintergrundaufgaben).
  4. Benutzer können beliebige Python-Module hochladen, jedoch nur, wenn sie reines Python sind. C- und Pyrex-Module werden nicht unterstützt.
  5. 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.)
  6. Java-Anwendungen dürfen nur eine Teilmenge (The JRE Class White List) der Klassen aus der JRE Standard Edition verwenden.
  7. 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.

Rishi
quelle
3
Schön, wie Sie es schaffen, Funktionen wie Cron und Task Queues in "Nachteile" zu verwandeln.
Nick Johnson
Ich bin ein Anfänger, der Google App Engine verwenden möchte. Ich habe keine Ahnung, was Cron oder Task Queues tun. Sie können mir helfen, auf einige Anfänger-Tutorials oder Bücher hinzuweisen. Es ist ein Wiki !!
Rishi
5
Viele dieser Daten sind veraltet. Die App Engine hat viele Funktionen hinzugefügt, seit diese Frage gestellt wurde. Es scheint auch ziemlich auf die Nachteile konzentriert zu sein.
Peter Recore
Dateien per App auf 10.000 aktualisiert, sie "Dokument" dies in ihrer Blog - Post: googleappengine.blogspot.com/2011/10/... ;-)
Malartre
Ich hatte nur Nachteile mit AppEngine. Es war eine Freude, mit Heroku zu arbeiten, und sie verfügen über eine umfangreiche Dokumentation. Auch Ihr eigenes VPS ist die beste Kontrolle, erfordert jedoch viel Sysadmin-Zeug.
Chloe

Antworten:

14

Vorteile:

  • Skalierbar
  • Einfach und billiger (kurzfristig).
  • Gute Option für Start-ups / Einzelpersonen.
  • Geeignet für Apps, die nur Daten speichern und abrufen.

Nachteile:

  • Nicht für CPU-intensive Berechnungen geeignet. Sie sind langsamer und teurer.
  • Skalierbarkeit spielt keine große Rolle, denn wenn eine App im Google-Maßstab funktioniert, verdient sie wahrscheinlich genug Geld, um auf ihren eigenen Servern ausgeführt zu werden.
  • Sie haben hier und da viele Einschränkungen, weshalb eine gründliche Datenanalyse schwierig ist. Als ob Sie mit GAE kein soziales Diagramm erstellen können.

Ich würde sagen, es ist nicht für ernsthafte Unternehmen gedacht und auf lange Sicht teuer.

Arpit Tambi
quelle
1
Beantworten Sie hier und da einige Fragen, damit ich Ihre Antworten positiv bewerten kann.
Arpit Tambi
6
Über den Nachteil, dass Skalierbarkeit keine Rolle spielt, denke ich, dass sie Sie gegen den Digg- oder Lifehacker-Effekt versichert. Wie in erstellen Sie eine Hobby-Website, die plötzlich viral wird, wie ytinstant.com. Wenn Sie sich auf Ihren eigenen Servern befinden, hält es dem Medienrummel auf keinen Fall stand, aber auf GAE kein Problem.
Neil
5
Sie könnten den Mangel an Konfiguration in Profis hinzufügen. In einzelnen Server-Setups müssen Sie mehr als nur ein grundlegendes Verständnis und bestimmte Erfahrungen mit Serverkonfigurationen haben, was einige Zeit in Anspruch nimmt, einschließlich des Testens der spezifischen Konfiguration usw.
topless
1
Wenn Sie Ihre eigenen Server betreiben, benötigen Sie Personal, um diese zu verwalten und zu warten. Bei GAE wird kein solches Personal benötigt, was einen großen Kostenvorteil für Unternehmen jeder Größe darstellt, nicht nur für Start-ups.
Andrei Volgin
2
Die meisten "Einschränkungen" von GAE liegen in den Köpfen der Entwickler, die einfach nicht wissen, wie sie es richtig verwenden sollen. Mit GAE können Sie eine sehr gründliche Datenanalyse mit extrem hohen Geschwindigkeiten durchführen: Der nicht relationale Datenspeicher ist eine hervorragende Plattform für solche Aufgaben.
Andrei Volgin
13

(Eine riesige Neuheit) PRO: GAE unterstützt jetzt MySQL : https://developers.google.com/cloud-sql/

Programmierer
quelle
3
Die besten Nachrichten, die ich je über GAE gehört habe. Danke
bnguyen82
7

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!

Rafael Sanches
quelle
Nach zwei Jahren mit App Engine denke ich das gleiche
Makkasi
Ich weiß es noch nicht im Jahr 2013, aber GAE ist heutzutage ziemlich billig.
Tim
1
@ TimCastelijns hängt von Ihrer Anwendung ab. Wenn Sie eine App haben, die 5 US-Dollar für jede http-Anfrage verdient, ist sie in der Tat sehr günstig. Es ist sehr teuer für jedes soziale Netzwerk, bei dem der Fokus auf Wachstum und nicht auf frühzeitiger Monetarisierung liegt.
Rafael Sanches
5

Pro: Unbegrenzte Skalierbarkeit Ihrer Anwendung und Skalierung mit der Nachfrage.

Randell
quelle
4

Con: In einigen Ländern (Argentinien) nicht verfügbar.

Bearbeiten

Weltweit verfügbar, jedoch nur über Google Groups for App Engine.

Voyager
quelle
Dort definitiv verfügbar - Sie müssen nur eine Nachricht in der Gruppe hinterlassen, um Ihr Konto zu aktivieren, wenn Sie keine SMS empfangen können.
Nick Johnson
Der Link der Voyager ist korrekt und meine eigene Empfehlung ist veraltet. Die Verwendung dieses Links ist jetzt der beste Weg, um Ihr Konto zu aktivieren, wenn Sie keine SMS empfangen können. :)
Nick Johnson
Ich musste nie eine Nachricht hinterlassen oder so, es hat einfach funktioniert (Buenos Aires)
Mauricio Scheffer
@ Mauricio: Es hat sich seit letztem August geändert.
Esteban Küber
2

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.

stevep
quelle
2

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.

Arvind
quelle
1

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)

WhyNotHugo
quelle
siehe Nicks Antwort auf die Antwort des Reisenden. Sie können App Engine ohne Telefon erhalten.
Peter Recore
Außerdem benötigen Sie nur ein Telefon, um sich anzumelden. nicht für immer. Wenn Sie vorhaben, ein echtes Geschäft zu betreiben, sind solche geringen Startkosten trivial.
Peter Recore
Keine Antwort von diesem Formular, auch nicht nach einer Woche oder so. Und NEIN, ich plane keine echten Geschäfte.
WhyNotHugo
1

Con: Keine anderen RDBMS- oder NoSQL-Datenbanken sind nicht möglich ....

Prassee
quelle
Guter Punkt, ich wünschte, sie würden die ORDBMS-Systeme unterstützen: D
1

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.

Aiden Bell
quelle
Bitte erläutern Sie die Umgebungskontrolle. Was sind auch die Schwierigkeiten beim Portieren Ihrer Anwendung auf eine andere Domain
Rishi
-3

Con: Beschränkt auf Java und Python

Randell
quelle
9
Durch Entfernen des Java-Teils wird dies zu einem Pro.
Aiden Bell
4
Es ist nicht wahr! Mit Java können Sie beispielsweise JRuby oder Jython (möglicherweise nicht) oder Scala, Groovy usw. verwenden.
Luke
Was ist mit den hier aufgelisteten
Rishi
Die meisten sind JVM-basierte Sprachen. Hmmm ...
Randell
1
Die Go-Sprache wird ebenfalls unterstützt (im 'experimentellen Modus')
mjn