Warum Django in Google App Engine verwenden?

88

Bei der Untersuchung von Google App Engine (GAE) wird deutlich, dass die Verwendung von Django für die Entwicklung in Python auf GAE äußerst beliebt ist. Ich habe im Internet nach Informationen zu Kosten und Nutzen der Verwendung von Django gesucht, um herauszufinden, warum es so beliebt ist. Während ich in der Lage gewesen war eine Vielzahl von Quellen zu finden , wie Django auf GAE und die verschiedenen Methoden , dies zu tun laufen, habe ich keine vergleichende Analyse gefunden auf , warum Django die Webapp Rahmen zur Verwendung von Google bereitgestellt vorzuziehen ist.

Um es klar auszudrücken, ist sofort ersichtlich, warum die Verwendung von Django auf GAE für Entwickler mit vorhandenen Fähigkeiten in Django (zweifellos die Mehrheit der Python-Webentwickler) oder vorhandenem Code in Django (wo die Verwendung von GAE eher eine Portierungsübung ist) nützlich ist. Mein Team evaluiert GAE jedoch für die Verwendung in einem völlig neuen Projekt. Unsere bisherigen Erfahrungen beziehen sich auf TurboGears und nicht auf Django.

Es war ziemlich schwierig festzustellen, warum Django für ein Entwicklungsteam von Vorteil ist, wenn die BigTable-Bibliotheken Djangos ORM ersetzt haben, Sitzungen und Authentifizierung notwendigerweise geändert werden und Djangos Vorlagen (falls gewünscht) verfügbar sind, ohne den gesamten Django-Stapel zu verwenden.

Schließlich ist klar, dass die Verwendung von Django den Vorteil hat, eine "Exit-Strategie" bereitzustellen, wenn wir uns später von GAE entfernen und eine Plattform benötigen, die auf den Exodus abzielt.

Ich wäre sehr dankbar, wenn ich Ihnen helfen könnte, darauf hinzuweisen, warum die Verwendung von Django besser ist als die Verwendung von Webapp auf GAE. Ich bin auch völlig unerfahren mit Django, daher sind Ausarbeitungen zu kleineren Funktionen und / oder Annehmlichkeiten, die mit GAE funktionieren, auch für mich wertvoll.

Travis Bradshaw
quelle
Holy Crap Terry Bradshaw schreibt Code?
Woot4Moo
4
Django ist vorteilhaft, weil es fantastisch ist. Das ist es wirklich. :)
jathanism
Ich bin ebenfalls neu in der Google App Engine und dies ist selbst für 2018 eine schrecklich gut formulierte Frage (obwohl Django ORM anscheinend jetzt auf GAE viel besser unterstützt wird). :)
Divij Sehgal

Antworten:

19

Wir verwenden Django in unseren Appengine-Instanzen meistens, wenn wir dem Benutzer tatsächliche Websites bereitstellen müssen. Es hat eine großartige Template-Engine, URL-Routing und die gesamte integrierte Anforderungs- / Antwort- / Fehlerbehandlung. Auch wenn wir das magische Orm / Admin-Zeug nicht verwenden können, hat es viel zu bieten.

Für API-Dienste haben wir etwas sehr Einfaches aufgebaut webob. Es ist viel leichter, weil es nicht alles braucht, was Django bietet, und daher in manchen Situationen etwas schneller.

Koen Bok
quelle
1
Danke Koen. Ein Teil meiner Verwirrung über die Attraktivität von Django ergab sich aus der Idee, dass URL-Routing und die Behandlung von Anfragen / Antworten / Fehlern ebenfalls Merkmale der bereitgestellten Webanwendung waren und dass die Template-Engine auch ohne Django mit Webanwendung verwendet werden kann. Irre ich mich Bietet Django diese Dienste besser an als das Webapp-Framework?
Travis Bradshaw
Sie sind umfangreicher und flexibler in Django, würde ich sagen. Also ist es besser, wenn du das wirklich brauchst :-)
Koen Bok
2
Ich denke, das ist die Antwort, die ich suche! Dieser Django ist für Webapp weitgehend redundant, aber in der Funktionalität, die sie gemeinsam nutzen, ist Django flexibler und robuster. Es scheint, als wäre es sicherlich eine Entscheidung "am Rande", aber ich denke, alle anderen Vorschläge sowie Ihre Vorschläge liefern eine überzeugende Antwort. Vielen Dank.
Travis Bradshaw
1
In C geschriebene Python-Module werden ebenfalls nicht unterstützt.
Ryu_hayabusa
51

Django ist wahrscheinlich nicht die richtige Wahl für Sie, wenn Sie sicher sind, dass GAE für Sie richtig ist. Die Stärken der beiden Technologien stimmen nicht sehr gut überein - Sie verlieren eine Menge von Djangos wundervollem Orm auf GAE vollständig, und wenn Sie es verwenden, schreiben Sie Code, der für Bigtable und die Funktionsweise von GAE nicht direkt geeignet ist.

Die Sache mit GAE ist, dass es die großartige Skalierbarkeit erhält, indem Sie gezwungen werden, Code zu schreiben, der sich von Grund auf leicht skalieren lässt. Sie können einfach nicht eine Reihe von Dingen ausführen, die schlecht skaliert sind (natürlich können Sie immer noch schlecht skalierten Code schreiben, aber Sie vermeiden einige Fallstricke). Der Nachteil ist, dass Sie am Ende wirklich um das Framework herum codieren, wenn Sie etwas wie Django verwenden, das für eine andere Umgebung entwickelt wurde.

Wenn Sie sehen, dass Sie GAE aus irgendeinem Grund jemals verlassen und in die Infrastruktur investieren, ist dies ein Problem für Sie. Das Codieren für bigtable bedeutet, dass es schwieriger ist, zu einer anderen Architektur zu wechseln (obwohl das Apache-Projekt daran arbeitet, dies mit der HBase-Komponente des Hadoop-Projekts für Sie zu lösen). Es wäre immer noch viel Arbeit, von GAE abzuweichen.

Was ist der treibende Motivator für die Verwendung von GAE, abgesehen davon, dass es sich um ein Google-Produkt und ein cooles Schlagwort handelt? Gibt es einen Grund, warum eine Skalierung mit dem Angebot von mediatemple für Sie wahrscheinlich nicht gut funktioniert? Sind Sie sicher, dass die Art und Weise, wie GAE skaliert, für Ihre Anwendung geeignet ist? Wie sind die Kosten im Vergleich zu dedizierten Servern, wenn Sie damit rechnen, diesen Leistungsbereich zu erreichen? Können Sie Ihr Problem mit den von GAE bereitgestellten Tools im Vergleich zu einem herkömmlichen Server-Setup mit Lastenausgleich gut lösen?

Abgesehen davon würde ich persönlich empfehlen, diese bestimmte Servicestruktur nicht Ihrer Wahl des Frameworks zu überlassen, es sei denn, Sie benötigen die grenzwertig lächerliche Skalierung, die GAE bietet, unbedingt. Ich mag Django, also würde ich sagen, dass Sie es verwenden sollten, aber nicht auf GAE.

Bearbeiten (Juni 2010): Als Aktualisierung dieses Kommentars einige Zeit später: Google hat SQL-ähnliche Funktionen für GAE angekündigt, die nicht kostenlos sind, mit denen Sie jedoch problemlos SQL-Befehle ausführen können, um Berichte über Ihre Daten zu generieren.

Darüber hinaus gibt es bevorstehende Änderungen an der GAE-Abfragesprache, die komplexe Abfragen weitaus einfacher ermöglichen. Schauen Sie sich die Videos von Google I / O 2010 an.

Darüber hinaus wird während des Summer of Code 2010-Projekts gearbeitet, um den Django-Kern ohne SQL-Unterstützung zu unterstützen und die Arbeit mit GAE erheblich zu vereinfachen.

GAE wird als Hosting-Plattform immer attraktiver.

Bearbeiten (August 2011):

Und Google hat die Kosten für die meisten Nutzer der Plattform durch eine Änderung der Preisstruktur erheblich erhöht. Das Lockin-Problem ist besser geworden (wenn Ihre Anwendung groß genug ist, können Sie die Apache-Alternativen bereitstellen), aber für die meisten Anwendungen ist das Ausführen von Servern oder VPS-Bereitstellungen billiger.

Sehr wenige Menschen haben wirklich BigData-Probleme. "Oh, mein Startup könnte eines Tages skalieren" ist kein BigData-Problem. Bauen Sie jetzt Sachen und holen Sie sie mit den Standardwerkzeugen aus der Tür.

Paul McMillan
quelle
Danke für die nachdenkliche Antwort, Paul. Wir bewerten GAE weitgehend, da das Kostenmodell gut zu unserem vorgeschlagenen Geschäftsplan passt. Die Möglichkeit, kostenlos zu starten und dann schrittweise mit einem sehr detaillierten Kostenmodell zu skalieren, ist sehr attraktiv. Darüber hinaus haben wir keine Erwartung, dass wir in Zukunft von GAE wegziehen oder migrieren müssen, und eine Plattformbindung für dieses Projekt ist akzeptabel. Ich habe den Kommentar "Ausstiegsstrategie" in meine Frage aufgenommen, hauptsächlich, um ziemlich umfassend zu sein, was ich durch Lesen und Recherchieren gelernt habe, bevor ich diese Frage gestellt habe. Danke noch einmal!
Travis Bradshaw
Wie bewerten Sie die Kosten für die Entwicklungszeit? Eines der schönen Dinge an Django ist, dass Sie sich weniger Gedanken über die Definition Ihrer Datenmodelle machen als mit Bigtable. Bigtable zwingt Sie dazu, Ihre Verwendungen klarer zu definieren, bevor Sie sie überhaupt verwenden können. Bestimmte Abfragen sind mit "normalem" SQL erheblich einfacher.
Paul McMillan
3
Achten Sie darauf, dass Sie die Pfennige nicht zu stark einklemmen. Kostenlos ist nett, aber der Service kostet schnell echtes Geld. Wenn Sie im "kostenlosen" Servicelevel unterwegs sind, hosten Sie es auf einem anderen Server / Hosting, für das Sie bereits bezahlen. Wenn Sie in das nicht kostenlose Servicelevel einsteigen, sind die 20 US-Dollar pro Monat für einen VPS, den Sie später problemlos skalieren können, hinsichtlich der Kosten im Rauschen.
Paul McMillan
11
Vergessen Sie nicht zu überlegen, wie oft Ad-hoc-Berichte für Ihren Datensatz ausgeführt werden müssen. Ich bin an einer wachsenden sozialen Anwendung beteiligt und GAE wird ... Ich werde keinen Albtraum sagen, aber es ist äußerst ressourcenintensiv, Wissen aus unseren Daten abzuleiten. Zwischen dem Löschen alter Protokolle durch Google und den extremen Längen, die zum Durchsuchen aller Daten erforderlich sind, ist die Berichterstellung weitaus teurer als bei einer SQL-Datenbank. Das sind Kosten, die ich beim Start nicht berücksichtigt habe. Zweitens, wenn Sie wirklich wachsen und anfangen, Geld zu verdienen, ist die Kontrolle, die Sie über Backups verlieren, ein Faktor.
JasonSmith
2
Informationen zu Lock-In-Problemen finden Sie in AppScale, einem Google App Engine-Klon. Wir haben an der Plattform gearbeitet, seit GAE herauskam, und viele Benutzer haben sie für ihre Produktions-Python- und Java-Anwendungen. Sie haben direkten Zugriff auf die Computer, auf denen es ausgeführt wird, damit Sie mehr Kontrolle über die Infrastruktur haben. github.com/AppScale/appscale.git
Navraj Chohan
16

Ich habe viele Projekte auf GAE gemacht. Einige in Django, andere in ihrem normalen Rahmen.

Für kleine Dinge verwende ich normalerweise ihren normalen Rahmen für Einfachheit und Schnelligkeit. Wie http://stdicon.com , http://yaml-online-parser.appspot.com/ oder http://text-twist.appspot.com/ .

Für große Dinge gehe ich mit Django, um all die nette Middleware und Plugins zu nutzen. Wie http://metaward.com .

Grundsätzlich lautet mein Lackmustest. Brauche ich mehr als 2 Wochen, um zu schreiben und ein echtes Softwareprojekt zu sein? Wenn ja, gehen Sie mit Django für die Addons.

Es hat den zusätzlichen Vorteil, dass wenn Ihr Projekt für BigTable schlecht geeignet ist, Sie schnell portieren (wie ich es getan habe Ist BigTable langsam oder bin ich dumm? )

Paul Tarjan
quelle
+1, bigtable ist nur schlecht für einige Arten von Projekten und Abfragen. Es ist großartig für das, was Google tut, und kann für das, was Sie tun möchten, schrecklich sein.
Paul McMillan
Danke Paul! Können Sie mich mit Ressourcen verknüpfen, die die Django-Middleware und Plugins beschreiben, die auf GAE funktionieren? Wenn es für unser Projekt nützliche Add-Ons gibt, wäre dies sicherlich ein Grund, sich eher für Django als für Webapp zu entscheiden. Die offensichtlich nützlicheren (wie Sitzung und Authentifizierung) scheinen eindeutige Django-ORM-Abhängigkeiten zu haben.
Travis Bradshaw
2
Grundsätzlich funktioniert jedes Addon, das keine models.py hat, perfekt. Und wenn sie eine models.py haben, können Sie wahrscheinlich die 1-zu-1-Konvertierung in bigtable durchführen und sie trotzdem verwenden, wenn Sie möchten. Einige, die ich benutze, sind django_annoying, django_debug_toolbar und aus dem Contrib-Bereich csrf, humanize und natürlich admin.
Paul Tarjan
11

Ich denke, all diese Antworten sind etwas veraltet.

Jetzt können Sie verwenden Google Cloud SQL

Django ist ein beliebtes Python-Webframework von Drittanbietern. In Verbindung mit Google Cloud SQL können alle Funktionen von Anwendungen, die auf App Engine ausgeführt werden, vollständig unterstützt werden . Unterstützung für die Verwendung von Google Cloud SQL mit Django bietet ein benutzerdefiniertes Django-Datenbank-Backend, das das MySQL-Backend von Django umschließt.

https://cloud.google.com/python/django/appengine

Eine weitere Neuigkeit ist, dass es BETA-Unterstützung für PostgreSQL gibt

Andilabs
quelle
3

Ich habe Erfahrung mit Django und nicht mit GAE. Aufgrund meiner Erfahrungen mit Django war die Einrichtung sehr einfach und der Bereitstellungsprozess in Bezug auf Webprojekte unglaublich einfach. Zugegeben, ich musste Python lernen, um die Dinge wirklich in den Griff zu bekommen, aber am Ende des Tages würde ich es wieder für ein Projekt verwenden. Dies war vor fast 2 Jahren, bevor es 1.0 erreichte, also bin ich mein Wissen ein bisschen veraltet.

Wenn Sie sich Sorgen über einen Plattformwechsel machen, ist dies vermutlich die bessere Wahl.

Woot4Moo
quelle
1
Danke für die schnelle Antwort! Ich stimme zu, dass Django ein Framework ist, das schnell gestartet werden kann, aber das ist für uns kein wirkliches Problem. Wir haben vier recht erfahrene Python-Entwickler mit Webentwicklungshintergrund, sodass der Einstieg in jedes Framework schnell und problemlos vonstatten gehen wird. Bei der Wahl zwischen Django und Webapp auf GAE bleibt jedoch die Frage, welche die bessere Wahl ist und warum .
Travis Bradshaw
@ Woot4Moo Wenn Sie keine Erfahrung mit GAE haben, setzen Sie es ein, ich bin neu bei GAE, aber der Preis verwirrt mich ziemlich, zufällige Gebühren, ich denke Pythonanywhere, könnten Sie mir einige Empfehlungen geben?
Manza
0

Ich kann die Frage nicht beantworten, aber Sie möchten vielleicht einen Blick auf web2py werfen. Es ähnelt Django in vielerlei Hinsicht, aber seine Datenbankabstraktionsschicht funktioniert auf GAE und unterstützt den größten Teil der GAE-Funktionalität (nicht alle, aber wir versuchen aufzuholen). Auf diese Weise können Sie Ihren Code in eine andere Datenbank verschieben (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres und - bald - Sybase und MongoDB -, wenn GAE für Sie hervorragend funktioniert ).

mdipierro
quelle
0

Wenn Sie Ihre App außerhalb von GAE ausführen möchten, können Sie weiterhin Django verwenden. Mit der GAE-Webanwendung werden Sie nicht wirklich so viel Glück haben

George Godik
quelle
Vielen Dank, obwohl ich genau das in der ursprünglichen Frage erwähne: "Schließlich ist klar, dass die Verwendung von Django den Vorteil hat, eine" Exit-Strategie "bereitzustellen, wenn wir uns später von GAE entfernen und eine Plattform benötigen, die auf den Exodus abzielt. ""
Travis Bradshaw
0

Ich bin noch sehr neu in der Entwicklung von Google App-Engines, aber die von Django bereitgestellten Schnittstellen sehen viel besser aus als die Standardschnittstellen. Die Vorteile hängen davon ab, was Sie zum Ausführen von Django in der App-Engine verwenden. Mit dem Google App Engine Helper für Django können Sie die volle Leistung der Google App Engine mit einigen Django-Funktionen nutzen.

Django non-rel versucht, so viel Leistung wie möglich von Django bereitzustellen, läuft jedoch auf der App-Engine, um eine zusätzliche Skalierbarkeit zu erreichen. Insbesondere enthält es Django-Modelle (eines der Hauptmerkmale von Django), aber dies ist eine undichte Abstraktion aufgrund der Unterschiede zwischen relationalen Datenbanken und Bigtable. Es wird höchstwahrscheinlich Kompromisse bei Funktionalität und Effizienz sowie eine erhöhte Anzahl von Fehlern und Macken geben. Natürlich könnte sich dies unter Umständen wie den in der Frage beschriebenen lohnen, aber ansonsten würde ich dringend empfehlen, den Helfer zu Beginn zu verwenden, da Sie dann die Möglichkeit haben, später entweder auf eine reine App-Engine oder auf Django non-rel umzusteigen. Wenn Sie zu Django non-rel wechseln,

Casebash
quelle