Feedback zur Verwendung von Google App Engine? [geschlossen]

125

Ich möchte ein sehr kleines, schnelles und schmutziges Nebenprojekt machen. Ich mag die Tatsache, dass die Google App Engine auf Python läuft und Django direkt eingebaut ist - gibt mir eine Entschuldigung, diese Plattform auszuprobieren ... aber meine Frage lautet:

Hat jemand die App-Engine für etwas anderes als ein Spielzeugproblem verwendet? Ich sehe einige gute Beispiel-Apps da draußen, daher würde ich davon ausgehen, dass dies für das eigentliche Geschäft gut genug ist, wollte aber ein Feedback erhalten.

Alle anderen Erfolgs- / Misserfolgsnotizen wären großartig.

Agartzke
quelle
8
sollte Community-Wiki sein
SilentGhost

Antworten:

63

Ich habe die App-Engine für meine kleine Bebenüberwachungsanwendung http://quakewatch.appspot.com/ ausprobiert.

Mein Ziel war es, die Funktionen der App Engine zu sehen. Hier sind die wichtigsten Punkte:

  1. Es kommt nicht standardmäßig mit Django, es hat ein eigenes Webframework, das pythonisch ist, einen URL-Dispatcher wie Django und es verwendet Django-Vorlagen. Wenn Sie also Django exp haben. Sie werden es einfach zu bedienen finden
  2. Sie können keinen lang laufenden Prozess auf dem Server ausführen. Sie antworten lediglich auf eine Anfrage, die schnell erfolgen sollte. Andernfalls wird sie durch Appengine beendet. Wenn Ihre App also viel Backend-Verarbeitung benötigt, ist Appengine nicht der beste Weg, da Sie sonst die Verarbeitung durchführen müssen auf einem eigenen Server
  3. Meine Quakewatch-App verfügt über eine Abonnementfunktion. Dies bedeutet, dass ich die neuesten Beben per E-Mail senden musste, aber ich kann keinen Hintergrundprozess in der App-Engine ausführen, um die neue Bebenlösung zu überwachen. Hier muss ein Drittanbieter-Service wie pingablity.com verwendet werden Stellen Sie eine Verbindung zu einer Ihrer Seiten her, die den Abonnement-E-Mailer ausführt, aber auch hier müssen Sie darauf achten, dass Sie nicht viel Zeit hier verbringen oder die Aufgabe in mehrere Teile aufteilen
  4. Es bietet Django-ähnliche Modellierungsfunktionen, aber das Backend ist völlig anders, aber für ein neues Projekt sollte es keine Rolle spielen.

Aber insgesamt denke ich, dass es hervorragend zum Erstellen von Apps geeignet ist, die nicht viel Hintergrundverarbeitung benötigen.

Bearbeiten: Jetzt können Aufgabenwarteschlangen zum Ausführen der Stapelverarbeitung oder für geplante Aufgaben verwendet werden

Bearbeiten: Nachdem ich ein Jahr lang an einer echten Anwendung auf GAE gearbeitet / diese erstellt habe, ist meine Meinung jetzt, dass Sie GAE nicht verwenden, es sei denn, Sie erstellen eine Anwendung, die auf Millionen und Abermillionen von Benutzern skaliert werden muss. Das Verwalten und Ausführen trivialer Aufgaben in GAE bereitet aufgrund der verteilten Natur Kopfschmerzen. Um Fehler zu vermeiden, die die Frist überschreiten, Entitäten zu zählen oder komplexe Abfragen durchzuführen, ist komplexer Code erforderlich. Daher sollte eine kleine komplexe Anwendung bei LAMP bleiben.

Bearbeiten: Modelle sollten unter Berücksichtigung aller Transaktionen, die Sie in Zukunft wünschen, speziell entworfen werden, da Entitäten nur in derselben Entitätsgruppe in einer Transaktion verwendet werden können und das Aktualisieren von zwei verschiedenen Gruppen zu einem Albtraum wird, z. B. Geld von Benutzer1 zu Benutzer2 zu überweisen Eine Transaktion ist nur möglich, wenn sie sich in derselben Entitätsgruppe befinden. Für häufige Aktualisierungszwecke ist es jedoch möglicherweise nicht am besten, sie zu derselben Entitätsgruppe zu machen. Lesen Sie diese http://blog.notdot.net/2009/9/Distributed-Transactions- On-App-Engine

Anurag Uniyal
quelle
6
Jetzt kann der Batch-Prozess auf GAE
Anurag Uniyal
2
Überprüfen Sie auch die neue Task Queue Python-API in den App-Engine-Dokumenten.
Jason Rikard
11
Ein Großteil dieser Informationen ist veraltet - Django 0.96 jetzt in GAE vom 17. Juli 2009 gebaut
ine
3
Djanjo 1.0.x ist jetzt auch in GAE enthalten. Sie können auswählen, welche Version von Django Sie möchten.
Laurent
5
Nur ein weiteres Update, Django 1.1 ist jetzt sowohl mit GAE als auch mit früheren Versionen verfügbar.
SingleNegationElimination
36

Ich verwende GAE, um mehrere Anwendungen mit hohem Datenverkehr zu hosten. Wie in der Größenordnung von 50-100 req / sec. Es ist großartig, ich kann es nicht genug empfehlen.

Meine bisherigen Erfahrungen mit der Webentwicklung habe ich mit Ruby (Rails / Merb) gemacht. Python zu lernen war einfach. Ich habe mich nicht mit Django oder Pylons oder einem anderen Framework angelegt, sondern nur mit den GAE-Beispielen begonnen und aus den bereitgestellten grundlegenden Webapp-Bibliotheken das erstellt, was ich brauchte.

Wenn Sie an die Flexibilität von SQL gewöhnt sind, kann der Datenspeicher etwas gewöhnungsbedürftig sein. Nichts zu traumatisch! Die größte Anpassung ist die Abkehr von JOINs. Sie müssen die Idee ablegen, dass Normalisierung entscheidend ist.

Ben

mainsozial
quelle
23

Einer der zwingenden Gründe für die Verwendung von Google App Engine ist die Integration in Google Apps für Ihre Domain. Im Wesentlichen können Sie damit benutzerdefinierte, verwaltete Webanwendungen erstellen, die auf die (kontrollierten) Anmeldungen Ihrer Domain beschränkt sind.

Der größte Teil meiner Erfahrung mit diesem Code bestand darin, eine einfache Zeit- / Aufgabenverfolgungsanwendung zu erstellen. Die Template-Engine war einfach und machte eine mehrseitige Anwendung dennoch sehr zugänglich. Die Anmelde- / Benutzererkennungs-API ist ähnlich nützlich. Ich konnte ein Paradigma für öffentliche und private Seiten ohne allzu große Probleme erstellen. (Ein Benutzer würde sich anmelden, um die privaten Seiten anzuzeigen. Einem anonymen Benutzer wurde nur die öffentliche Seite angezeigt.)

Ich war gerade im Datenspeicher des Projekts, als ich für "echte Arbeit" weggezogen wurde.

Ich konnte in sehr kurzer Zeit viel erreichen (es ist noch nicht getan). Da ich Python noch nie zuvor verwendet hatte, war dies besonders angenehm (sowohl weil es eine neue Sprache für mich war, als auch weil die Entwicklung trotz der neuen Sprache immer noch schnell war). Ich bin auf sehr wenig gestoßen, was mich glauben ließ, dass ich meine Aufgabe nicht erfüllen könnte. Stattdessen habe ich einen ziemlich positiven Eindruck von der Funktionalität und den Merkmalen.

Das ist meine Erfahrung damit. Vielleicht ist es nicht mehr als ein unvollendetes Spielzeugprojekt, aber es ist ein informierter Test der Plattform, und ich hoffe, das hilft.

el2iot2
quelle
Fast identisch mit meiner Situation - abgesehen von "echter Arbeit", aber immer noch etwas, das ich tun und am Ende funktionsfähig haben muss.
Agartzke
Hier gilt das gleiche. Ein großes Plus ist auch, dass die Installation der Entwicklungsumgebung ein Kinderspiel ist (Sie codieren innerhalb einer Minute). Gleiches gilt für Bereitstellungen.
Jilles
12

Die Idee "App Engine mit Django" ist etwas irreführend. App Engine ersetzt die gesamte Django-Modellebene. Seien Sie also darauf vorbereitet, sich mit dem Datenspeicher von App Engine vertraut zu machen, der eine andere Art der Modellierung und des Denkens über Daten erfordert.

sutee
quelle
Guter Punkt - es scheint, dass es standardmäßig Djangos Vorlagen aufgreift, aber nicht unbedingt den Rest davon.
Agartzke
7

Ich habe GAE verwendet, um http://www.muspy.com zu erstellen

Es ist ein bisschen mehr als ein Spielzeugprojekt, aber auch nicht allzu komplex. Ich bin immer noch auf einige Probleme angewiesen, die von Google angegangen werden müssen, aber insgesamt war die Entwicklung der Website eine erfreuliche Erfahrung.

Wenn Sie sich nicht mit Hosting-Problemen, Serveradministration usw. befassen möchten, kann ich es auf jeden Fall empfehlen. Vor allem, wenn Sie Python und Django bereits kennen.

Alexander Kojevnikov
quelle
7

Ich denke, App Engine ist zu diesem Zeitpunkt ziemlich cool für kleine Projekte. Es gibt viel zu sagen, wenn man sich nie um das Hosting sorgen muss. Die API bringt Sie auch in die Richtung, skalierbare Apps zu erstellen, was eine gute Praxis ist.

  • App-Engine-Patch ist eine gute Ebene zwischen Django und App Engine, die die Verwendung der Auth-App und mehr ermöglicht.
  • Google hat ein SLA- und Preismodell bis Ende 2008 versprochen.
  • Anforderungen müssen in 10 Sekunden abgeschlossen sein, Unteranforderungen an Webdienste müssen in 5 Sekunden abgeschlossen sein. Dies zwingt Sie dazu, eine schnelle, einfache Anwendung zu entwerfen, die ernsthafte Verarbeitung auf andere Plattformen (z. B. einen gehosteten Dienst oder eine EC2-Instanz) verlagert.
  • Weitere Sprachen folgen in Kürze! Google wird aber nicht sagen was :-). Mein Geld ist als nächstes auf Java.
Nachmittag
quelle
Ab Februar 2009 wurden viele der oben genannten Einschränkungen aufgehoben.
Husayt
3
Wenn jemand diese Antwort bearbeiten kann, wäre es schön zu reflektieren, dass Java tatsächlich die nächste verfügbare Sprache ist.
JasonSmith
1
@jhs Dein Kommentar macht das gut!
Nachmittag
Und die Go-Sprache wird jetzt auch unterstützt!
Davewasthere
6

Diese Frage wurde vollständig beantwortet. Was gut ist. Aber eines ist vielleicht erwähnenswert. Die Google App Engine verfügt über ein Plugin für die Eclipse-Idee, mit dem es eine Freude ist, zu arbeiten.

Wenn Sie Ihre Entwicklung bereits mit Eclipse durchführen, werden Sie sich darüber sehr freuen.

Um auf der Website der Google App Engine bereitzustellen, muss ich nur auf eine kleine Schaltfläche klicken - mit dem Flugzeuglogo - super.

laut
quelle
4

Schauen Sie sich das SQL-Spiel an , es ist sehr stabil und hat tatsächlich die Verkehrsbeschränkungen an einem Punkt verschoben , so dass es von Google gedrosselt wurde. Ich habe nur gute Nachrichten über App Engine gesehen, außer dass Sie Ihre App auf Servern hosten, die jemand anderes vollständig kontrolliert.

Joe Skora
quelle
SQL-Spiel wurde von Google App Engine auf einen privaten Server verschoben.
Systempuntoout
4

Ich habe GAE verwendet, um eine einfache Anwendung zu erstellen, die einige Parameter, Formate akzeptiert und E-Mails sendet. Es war sehr einfach und schnell. Ich habe auch einige Leistungsbenchmarks für die GAE-Datenspeicher- und Memcache-Dienste erstellt ( http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html ). Es ist nicht so schnell. Meiner Meinung nach ist GAE eine seriöse Plattform, die bestimmte Methoden durchsetzt. Ich denke, es wird sich zu einer wirklich skalierbaren Plattform entwickeln, auf der schlechte Praktiken einfach nicht erlaubt sind.

David Gruzman
quelle
4

Ich habe GAE für meine Flash-Gaming-Site Bearded Games verwendet . GAE ist eine großartige Plattform. Ich habe Django-Vorlagen verwendet, die so viel einfacher sind als die alten Zeiten von PHP. Es kommt mit einem großartigen Admin-Panel und gibt Ihnen wirklich gute Protokolle. Der Datenspeicher unterscheidet sich von einer Datenbank wie MySQL, ist jedoch viel einfacher zu bearbeiten. Das Erstellen der Website war einfach und unkompliziert und sie haben viele hilfreiche Ratschläge auf der Website.

Josh Patton
quelle
3

Ich habe GAE und Django verwendet, um eine Facebook-Anwendung zu erstellen. Ich habe http://code.google.com/p/app-engine-patch als Ausgangspunkt verwendet, da es Django 1.1-Unterstützung bietet. Ich habe nicht versucht, einen der Befehle "manage.py" zu verwenden, da ich davon ausgegangen bin, dass sie nicht funktionieren würden, aber ich habe mich nicht einmal damit befasst. Die Anwendung hatte drei Modelle und verwendete auch Pyfacebook, aber das war das Ausmaß der Komplexität. Ich bin gerade dabei, eine viel kompliziertere Anwendung zu erstellen, über die ich auf http://brianyamabe.com zu bloggen beginne .

byamabe
quelle
Ich fing an, manage.py zu verwenden, um den Server und einige Unit-Tests auszuführen. Das Ausführen des Servers funktioniert einwandfrei, aber da meine Anwendung als Facebook-App ausgeführt wird, ist sie nicht allzu nützlich (ich benötige einen gehosteten Server, auf den Facebook verweist). Unit-Tests funktionierten auch und es funktionierte sogar mit Vorrichtungen. Es gelang mir jedoch nicht, Geräte, die auf andere Modelle verwiesen, zum Laufen zu bringen. Ich habe immer noch nicht herausgefunden, ob es ein Problem mit meinem Gerät oder ein Problem mit dem App-Engine-Patch ist.
Byamabe