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.
quelle
Antworten:
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.quelle
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.
quelle
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? )
quelle
Ich denke, all diese Antworten sind etwas veraltet.
Jetzt können Sie verwenden
Google Cloud SQL
https://cloud.google.com/python/django/appengine
Eine weitere Neuigkeit ist, dass es BETA-Unterstützung für PostgreSQL gibt
quelle
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.
quelle
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 ).
quelle
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
quelle
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,
quelle