Os apps do Django para Google Cloud são executados na mesma infraestrutura que capacita todos os produtos do Google, o que costuma melhorar a escalonabilidade.
Plataformas de hospedagem
Estas são as opções disponíveis para implementar o Django no Google Cloud:
Opção de implantação do Django | Use se quiser | Não use se precisar de | Primeiros passos |
---|---|---|---|
Ambiente padrão do App Engine |
|
|
Django no ambiente padrão do App Engine |
Ambiente flexível do App Engine |
|
|
Django no ambiente flexível do App Engine |
Cloud Run (totalmente gerenciado) |
|
|
Django no Cloud Run (totalmente gerenciado)
Django no Cloud Run com Cloud Code para VS Code Django no Cloud Run com Cloud Code para IntelliJ |
Google Kubernetes Engine (GKE) |
|
|
Django no Google Kubernetes Engine |
Compute Engine |
|
|
Django no Google Cloud Marketplace |
Bancos de dados
O mapeador objeto-relacional (ORM, na sigla em inglês) do Django funciona melhor com um banco de dados SQL relacional. Se você está iniciando um novo projeto, o Cloud SQL é uma boa escolha. Em poucas etapas, é possível criar um banco de dados MySQL ou PostgreSQL gerenciado e escalonado pelo Google.
Use também outros bancos de dados SQL se quiser gerenciá-los no Compute Engine ou em outro serviço.
Em alguns casos, há motivos justificáveis para usar um banco de dados NoSQL, como, por exemplo, a escalabilidade ou adequação do seu modelo de dados. Usar o ORM do Django com um banco de dados NoSQL é possível com algumas limitações. Por exemplo, muitos tipos de junções de bancos de dados podem ser expressos no Django, mas elas não são compatíveis com o Datastore e outros bancos de dados NoSQL, como o MongoDB.
Uma alternativa é usar uma abordagem mista de SQL e NoSQL que utilize bancos de dados distintos para tipos de dados diferentes.
Para uma solução NoSQL gerenciada e amplamente escalonável, considere usar o Datastore, que é um banco de dados não relacional com uma escalabilidade melhor quando comparado a uma solução SQL.
Caso você escolha usar o MongoDB, implante-o por meio do Cloud Marketplace e gerencie da sua maneira. Se preferir, use o serviço gerenciado de hospedagem MongoDB fornecido pela mLab (em inglês).
Por muitos anos, a abordagem mais conhecida para fazer o ORM do Django funcionar com soluções NoSQL era o Django non-rel (em inglês), mas o projeto não foi mantido. Outro projeto, intitulado Djangae (em inglês), fornece um back-end de ORM do Django para Datastore, sem derivar do Django. Porém, ele não é compatível no App Engine.
Caches
O App Engine é fornecido com um sistema Memcache integrado. Para instalar o sistema Memcache no Compute Engine, use o Cloud Marketplace. Para instalar o sistema Memcache no Compute Engine ou no GKE, use a imagem do Docker do Memcached (em inglês). Da mesma forma, é possível instalar o Redis por meio do Cloud Marketplace ou da imagem do Docker do Redis.
Como enfileirar tarefas
O App Engine é fornecido com um recurso de enfileiramento de tarefas integrado para a execução longa de jobs em segundo plano. Fora do App Engine, use o Pub/Sub para enfileirar tarefas com o Pub/Sub Task Queue for Python (psq) (em inglês).
Outras opções conhecidas de enfileiramento de tarefas estão disponíveis no Cloud Marketplace, incluindo o RabbitMQ e o Kafka. Há também imagens do Docker (em inglês) para RabbitMQ e Kafka.