É possível executar os aplicativos no App Engine usando o ambiente flexível ou padrão do App Engine. Também é possível optar por usar os dois ambiente simultaneamente para o aplicativo e permitir que seus serviços tenham os benefícios individuais de cada um deles.
Ambientes do App Engine
O App Engine é indicado para aplicativos projetados com arquitetura de microsserviços (em inglês), principalmente se você decidir utilizar ambos os ambientes. Use as seções a seguir para saber mais e entender qual ambiente atende melhor às necessidades do seu aplicativo.
Quando escolher o ambiente padrão
As instâncias do aplicativo são executadas em um sandbox (em inglês), usando o ambiente de execução de uma das linguagens compatíveis, que estão listadas abaixo.
Aplicativos que precisam lidar com escalonamento rápido.
O ambiente padrão é ideal para aplicativos com as seguintes características:
- O código-fonte é escrito em versões específicas das linguagens de programação compatíveis:
- Python 2.7, Python 3.7, Python 3.8, Python 3.9, Python 3.10 (visualização)
- Java 8, Java 11 e Java 17
- Node.js 10, Node.js 12, Node.js 14 e Node.js 16
- PHP 5.5, PHP 7.2, PHP 7.3, PHP 7.4 e PHP 8.1 (pré-lançamento)
- Ruby 2.5, Ruby 2.6, Ruby 2.7, e Ruby 3.0
- Go 1.11, Go 1.12, Go 1.13, Go 1.14, Go 1.15 e Go 1.16
- Destina-se a ser executado gratuitamente ou a um custo muito baixo, em que você paga apenas pelo que precisa e quando precisa. Por exemplo, o aplicativo pode ser escalonado para 0 instâncias quando não há tráfego.
- Passa por picos súbitos e extremos de tráfego que exigem escalonamento imediato.
Quando escolher o ambiente flexível
As instâncias do aplicativo são executadas em contêineres do Docker em máquinas virtuais (VM, na sigla em inglês) do Compute Engine.
Aplicativos que recebem tráfego consistente, passam por flutuações de tráfego regulares ou atendem aos parâmetros para aumentar e diminuir gradualmente a escala.
O ambiente flexível é ideal para aplicativos com as seguintes características:
- Código-fonte escrito em uma versão de qualquer uma das linguagens de programação compatíveis:
Python, Java, Node.js, Go, Ruby, PHP ou .NET - Executado em um contêiner do Docker que inclui um ambiente de execução personalizado ou código-fonte escrito em outras linguagens de programação.
- Usa ou depende de frameworks que incluem código nativo.
- Acessa os recursos ou serviços do projeto do Google Cloud que estejam na rede do Compute Engine.
Comparar os recursos de alto nível
A tabela a seguir resume as diferenças entre os dois ambientes:
Recurso |
Ambiente padrão |
Ambiente flexível |
Tempo de inicialização de instâncias |
Segundos |
Minutos |
Tempo limite máximo da solicitação |
60 minutos |
|
Linhas de execução em segundo plano |
Sim, com restrições |
Sim |
Processos em segundo plano |
Não |
Sim |
Depuração SSH |
Não |
Sim |
Escalonamento |
Manual, básico, automático |
Manual, automático |
Escalonamento para zero |
Sim |
Não, mínimo de 1 instância |
Gravação em disco local |
|
Sim, em disco temporário (inicializado em cada inicialização de VM) |
Modificação do ambiente de execução |
Não |
Sim (pelo Dockerfile) |
Tempo de implantação |
Segundos |
Minutos |
Patches de segurança automáticos no local |
Sim |
Sim (exclui o ambiente de execução da imagem do contêiner) |
Acesso a APIs e serviços do Google Cloud, como Cloud Storage, Cloud SQL, Memorystore, Tarefas e outro |
Sim |
Sim |
WebSockets |
Nenhum Java 8, Python 2 e PHP 5 fornecem uma API Sockets proprietária (Beta), mas a API não está disponível em ambientes de execução padrão mais recentes. |
Sim |
Compatível com a instalação de binários de terceiros |
|
Sim |
Local |
América do Norte, Ásia-Pacífico ou Europa |
América do Norte, Ásia-Pacífico ou Europa |
Preço |
Baseado em instância/hora |
Baseado no uso de vCPU, memória e discos permanentes |
Comparar o ambiente flexível com o Compute Engine
O ambiente flexível do App Engine apresenta as seguintes diferenças em relação ao Compute Engine:
-
As instâncias de VM do ambiente flexível são reiniciadas semanalmente. Durante as reinicializações, os serviços de gerenciamento do Google aplicam todas as atualizações de sistema operacional e segurança necessárias.
-
Você sempre tenha acesso raiz às instâncias de VM do Compute Engine. Por padrão, o acesso SSH às instâncias de VM no ambiente flexível está desativado. Se você quiser, é possível ativar o acesso raiz às instâncias de VM do seu aplicativo.
-
As implantações de código podem levar mais tempo à medida que as imagens de contêiner são criadas usando o serviço Cloud Build.
-
A região geográfica de uma instância de VM do ambiente flexível é determinada pelo local especificado para o aplicativo do App Engine do projeto do Cloud. Os serviços de gerenciamento do Google garantem que as instâncias de VM compartilhem o mesmo local para otimizar o desempenho.