It's easy to get started developing Django apps that run on GCP. And because the apps you create run on the same infrastructure that powers all of Google's products, you can be confident that they will scale to serve all of your users, whether there are a few or millions of them.
There are four main options for deploying Django on GCP.
|Django Deployment Option||Use if you want||Don't use if you need||Get Started|
|App Engine standard environment||
||Django on App Engine standard environment|
|App Engine flexible Environment||
||Django on App Engine flexible environment|
|Google Kubernetes Engine||
||Django on GKE|
||Django in Google Cloud Platform Marketplace|
The Django object-relational mapper (ORM) works best with a traditional SQL database. If you are starting a new project, Cloud SQL is a good choice. With a few clicks you can create a MySQL or PostgreSQL database that is managed and scaled by Google.
You can also use other SQL databases if you're willing to manage them yourself on Compute Engine or another service.
In some cases, there are compelling reasons to use a NoSQL database, for example, scalability or suitability for your data model. Although using the Django ORM with a NoSQL database can be challenging, it is possible with some limitations. For example, many types of database joins can be expressed in Django, but are not supported by Cloud Datastore and other NoSQL databases like MongoDB.
One possibility is to use a mixed SQL and NoSQL approach that uses different databases for different types of data.
For a managed, massively-scalable NoSQL solution, consider Cloud Datastore, which is a non-relational database that scales better than a SQL solution.
For many years, the most popular approach to making the Django ORM work with NoSQL solutions was Django non-rel, but the project is a fork of Django that has not been kept up to date with the main line. A new project called Djangae has emerged, which provides a Django ORM backend for Cloud Datastore without forking Django. While Djangae looks extremely promising, it is not an officially supported way to run Django on App Engine.
App Engine comes with a built-in Memcached service. To install Memcached on Compute Engine, you can use GCP Marketplace. To install Memcached on either Compute Engine or GKE, use the Memcached Docker image. Similarly, you can install Redis by using GCP Marketplace or the Redis docker image.
App Engine comes with a built-in task queue feature for long-running background jobs. Outside of App Engine, consider the massively scalable Cloud Pub/Sub service, which can be turned into a task queue using Cloud Pub/Sub Task Queue for Python (psq).