Erste Schritte mit Django

Django-Apps, die auf Google Cloud ausgeführt werden, beruhen auf derselben Infrastruktur wie alle Google-Produkte, was im Allgemeinen die Skalierbarkeit verbessert.

Plattformen hosten

Es gibt vier Hauptoptionen für die Bereitstellung von Django auf Google Cloud:

Bereitstellungsoption für Django Verwenden, wenn Folgendes gewünscht wird: Nicht verwenden, wenn Folgendes benötigt wird: Nächste Schritte
App Engine-Standardumgebung
  • Minimalkonfiguration
  • Keine Serverwartung
  • Einfache Skalierbarkeit
  • Ausführbare Binärdateien nicht in der Python-Standardumgebung in App Engine verfügbar
Django in der App Engine-Standardumgebung
Flexible App Engine-Umgebung
  • Die meisten Vorteile von App Engine
  • Benutzerdefinierte Docker-Laufzeiten
  • Kontrolle über die gesamte VM (außerhalb des Docker-Containers der Anwendung)
Django in der flexiblen App Engine-Umgebung
Google Kubernetes Engine (GKE)
  • Django-Container in einer Mikrodienst-Umgebung
  • Toolkit zur Entwicklung eigener Container-basierter Plattformen
  • Eine voll funktionsfähige Plattform und Umgebung, mit der Entwickler Anwendungen und Dienste über das Internet erstellen können. Für eine containerbasierte Lösung sollte die flexible Umgebung in Betracht gezogen werden.
Django in Google Kubernetes Engine
Compute Engine
  • IT-Infrastruktur, die VMs verwendet
  • Windows-VMs
  • Eine serverlose Umgebung, in der Sie keine eigene Infrastruktur konfigurieren müssen
Django im Google Cloud Marketplace

Datenbanken

Der objektrelationale Mapper (ORM) von Django funktioniert optimal mit einer relationalen SQL-Datenbank. Für ein neues Projekt ist Cloud SQL eine gute Wahl. Mit wenigen Klicks können Sie eine MySQL- oder PostgreSQL-Datenbank erstellen, die von Google verwaltet und skaliert wird.

Sie können auch andere SQL-Datenbanken verwenden, wenn Sie diese selbst in Compute Engine oder einem anderen Dienst verwalten möchten.

Manchmal gibt es zwingende Gründe, eine NoSQL-Datenbank zu verwenden, beispielsweise die Skalierbarkeit oder die Eignung für Ihr Datenmodell. Die Verwendung von Django ORM mit einer NoSQL-Datenbank ist mit einigen Einschränkungen möglich. So können zum Beispiel viele Arten von Datenbank-Joins in Django ausgedrückt werden. Diese Joins werden jedoch nicht von Datastore und anderen NoSQL-Datenbanken wie MongoDB unterstützt.

Eine Möglichkeit besteht darin, einen gemischten SQL- und NoSQL-Ansatz zu verfolgen, bei dem unterschiedliche Datenbanken für unterschiedliche Datentypen verwendet werden.

Datastore eignet sich als verwaltete und extrem skalierbare NoSQL-Lösung. Sie ist eine nicht relationale Datenbank, die besser als eine SQL-Lösung skaliert werden kann.

Wenn Sie sich für MongoDB entscheiden, können Sie die Datenbank über den Cloud Marketplace bereitstellen und selbst verwalten oder den verwalteten MongoDB-Hostingdienst von mLab verwenden.

Viele Jahre lang war Django non-rel der beliebteste Ansatz zur Nutzung von Django ORM mit NoSQL-Lösungen, aber das Projekt wird nicht fortgeführt. Ein weiteres Projekt namens Djangae bietet ein ORM-Back-End von Django für Datastore und ist dabei keine Abspaltung von Django. Es wird jedoch von App Engine nicht unterstützt.

Caches

App Engine umfasst ein integriertes Memcache-System. Wenn Sie das Memcache-System auf Compute Engine installieren möchten, verwenden Sie den Cloud Marketplace. Sie können auch das Memcached Docker-Image verwenden, um das Memcache-System entweder auf Compute Engine oder GKE zu installieren. Sie haben aber auch die Möglichkeit, Redis über den Cloud Marketplace oder mit dem Redis-Docker-Image zu installieren.

Aufgabenwarteschlange

App Engine bietet für Hintergrundjobs mit langer Laufzeit eine integrierte Warteschlangenfunktion für Aufgaben. Außerhalb von App Engine können Sie Pub/Sub verwenden, um Aufgaben mit Pub/Sub Task Queue for Python (psq) in eine Warteschlange zu stellen.

Im Cloud Marketplace stehen noch weitere beliebte Optionen für Aufgabenwarteschlangen zur Verfügung. So zum Beispiel RabbitMQ und Kafka, für die auch Docker-Images existieren.