Introduzione a Django

Le app Django in esecuzione su Google Cloud utilizzano la stessa infrastruttura alla base di tutti i prodotti Google, il che in genere migliora la scalabilità.

Piattaforme di hosting

Queste sono le opzioni disponibili per eseguire il deployment di Django su Google Cloud:

Opzione di deployment di Django Da utilizzare se vuoi Da non utilizzare se hai bisogno di Per iniziare
Ambiente standard di App Engine
  • Configurazione minima
  • Nessuna manutenzione del server
  • Scalabilità facile
  • Eseguibili binari non disponibili nell'ambiente Python standard di App Engine
Django nell'ambiente standard di App Engine
Ambiente flessibile di App Engine
  • La maggior parte dei vantaggi di App Engine
  • Runtime Docker personalizzati
  • Controllo sull'intera VM (al di fuori del container docker dell'applicazione)
Django nell'ambiente flessibile di App Engine
Cloud Run (completamente gestito)
  • Django in un ambiente container autonomo
  • Serverless senza App Engine
  • Controllo granulare su una serie autonoma di microservizi
  • Hardware personalizzato come le GPU o un cluster Kubernetes
Django on Cloud Run (completamente gestito)

Django on Cloud Run con Cloud Code per VS Code

Django on Cloud Run con Cloud Code per IntelliJ
Google Kubernetes Engine (GKE)
  • Container Django in un ambiente di microservizi
  • Un toolkit per creare la tua piattaforma basata su container
  • Una piattaforma e un ambiente con funzionalità complete che consentono agli sviluppatori di creare app e servizi su Internet. Per una soluzione basata su container, considera l'ambiente flessibile di App Engine o Cloud Run.
Django su Google Kubernetes Engine
Compute Engine
  • Infrastruttura di computing che utilizza macchine virtuali
  • VM Windows
  • Un ambiente serverless che non richiede la configurazione di un'infrastruttura personale
Django in Google Cloud Marketplace

Database

Il mapper ORM (Object-Relational Mapper) di Django funziona meglio con un database relazionale SQL. Se stai iniziando un nuovo progetto, Cloud SQL è un'ottima scelta. Con pochi clic puoi creare un database MySQL o PostgreSQL completamente gestito e ridimensionato da Google.

Puoi anche utilizzare altri database SQL se vuoi gestirli personalmente su Compute Engine o su un altro servizio.

A volte esistono validi motivi per utilizzare un database NoSQL, ad esempio la scalabilità o l'idoneità al modello dati. È possibile utilizzare il mapper ORM di Django con un database NoSQL con alcune limitazioni. Ad esempio, molti tipi di join di database possono essere espressi in Django, ma questi join non sono supportati da Datastore e altri database NoSQL come MongoDB.

Una possibilità è utilizzare un approccio misto SQL e NoSQL che prevede l'uso di database distinti per tipi diversi di dati.

Per una soluzione NoSQL gestita a elevata scalabilità, può esserti utile utilizzare Datastore, un database non relazionale che offre migliore scalabilità rispetto a una soluzione SQL.

Se scegli di utilizzare MongoDB, puoi eseguire il deployment tramite Cloud Marketplace e gestire in autonomia oppure puoi utilizzare il servizio di hosting di MongoDB fornito da mLab.

Per molti anni, l'approccio più comune per far funzionare il mapper ORM di Django con le soluzioni NoSQL è stato Django non-rel, ma il progetto non viene aggiornato. Un altro progetto chiamato Djangae, fornisce un backend per il mapper ORM di Django per Datastore senza il forking di Django. Tuttavia, non è supportato su App Engine.

Cache

App Engine è dotato di un sistema memcache incorporato. Per installare il sistema memcache su Compute Engine, utilizza Cloud Marketplace. Per installare il sistema memcache su Compute Engine o GKE, utilizza l'immagine Docker Memcached. Allo stesso modo, puoi installare Redis utilizzando Cloud Marketplace o l'immagine Docker Redis.

Inserimento in coda delle attività

App Engine è dotato di una funzionalità incorporata di inserimento in coda delle attività per i job in background a lunga esecuzione. Al di fuori di App Engine, puoi utilizzare Pub/Sub per inserire in coda le attività mediante la coda di attività Pub/Sub per Python (psq).

Cloud Marketplace include altre opzioni popolari di inserimento in coda delle attività come RabbitMQ e Kafka. Esistono anche immagini Docker per RabbitMQ e Kafka.