Para armazenar dados e arquivos no App Engine, use os serviços do Google Cloud ou qualquer outro serviço de armazenamento compatível com sua linguagem e que possa ser acessado na instância do App Engine. Os bancos de dados de terceiros podem ser hospedados no Compute Engine, em outro provedor de nuvem, localmente ou gerenciados por um fornecedor terceirizado.
Serviços de armazenamento do Google Cloud
Para aplicativos do App Engine em execução no ambiente flexível do Python, recomendamos um dos seguintes serviços do Google Cloud Storage:
- Firestore no modo Datastore para armazenar dados em um banco de dados NoSQL. Observe que o Firestore no modo Datastore está disponível para todos os ambientes de execução, exceto o .NET.
- Cloud SQL para MySQL para armazenar dados em um banco de dados MySQL.
- Cloud SQL para PostgreSQL para armazenar dados em um banco de dados PostgreSQL.
- Cloud Storage para ler e gravar arquivos no ambiente de execução, além de armazenar e disponibilizar arquivos estáticos, como filmes, imagens ou outro conteúdo estático.
Veja uma lista completa dos produtos de armazenamento do Google Cloud na página Produtos do Cloud Storage.
Como hospedar no Compute Engine
As instâncias do App Engine fazem parte da mesma rede interna privada que as do Compute Engine. O aplicativo do App Engine comunica-se com serviços hospedados no Compute Engine no mesmo projeto sem passar pela Internet pública. Em muitos casos, o aplicativo conecta-se ao serviço usando o endereço IP interno da instância, sem precisar atribuir o banco de dados a um endereço IP público externo. Se você preferir, atribua um endereço IP público para permitir que o banco de dados seja acessado de fora do Google Cloud.
Muitos bancos de dados terceirizados conhecidos, como Redis, MongoDB, PostgreSQL, Cassandra, Hadoop e Microsoft SQL Server, são implantados rapidamente no Compute Engine com o uso do Google Cloud Marketplace. Consulte os seguintes guias para mais detalhes sobre como implantar o MySQL ou o PostgreSQL.
Outros fornecedores de nuvem
Os aplicativos do App Engine se conectam a bancos de dados externos, hospedados em outras nuvens públicas, se os servidores desses bancos e seu firewall estiverem configurados para aceitar conexões. O aplicativo do App Engine se conecta pela Internet usando o endereço IP público desse serviço externo.
Bancos de dados gerenciados por um fornecedor de terceiros
Muitos fornecedores oferecem serviços de banco de dados gerenciado, como o mLab para MongoDB (em inglês). O Redis Labs oferece armazenamento em cache hospedado do Redis (em inglês). Esses fornecedores administram a hospedagem, configuração e manutenção dos bancos de dados. O App Engine pode se conectar a esses serviços externos pela Internet, da mesma forma que a outras nuvens públicas, usando o endereço IP público desse serviço.
No local
Se você quiser tornar bancos de dados locais acessíveis a um aplicativo do App Engine, configure a rede interna e o firewall para informar um endereço IP público ao banco de dados ou conecte-se por meio da VPN.
Ao configurar o Cloud VPN, o aplicativo do App Engine acessa a rede no local sem expor diretamente o servidor de banco de dados à Internet pública. O App Engine e o Compute Engine usam a mesma infraestrutura de rede, por isso, use a conexão VPN para estabelecer uma conexão entre o aplicativo do App Engine e o banco de dados no local usando o endereço IP interno do servidor de banco de dados.
Considerações sobre produção
Configure o App Engine para fazer o escalonamento automático e horizontal do aplicativo com base em várias métricas. Ao contrário dos aplicativos da Web, os bancos de dados muitas vezes exigem mudanças não triviais para atender à escala. Em aplicativos de produção, o App Engine pode sobrecarregar rapidamente um banco de dados durante os picos de tráfego. Ao configurar e implantar bancos de dados, pense na carga média de tráfego estimada e a carga durante os picos.