Escolher um ambiente do App Engine

É 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, 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 e Python 3.11
    • Java 8, Java 11 e Java 17
    • Node.js 10, Node.js 12, Node.js 14, Node.js 16 e Node.js 18
    • PHP 5.5, PHP 7.2, PHP 7.3, PHP 7.4 e PHP 8.1
    • Ruby 2.5, Ruby 2.6, Ruby 2.7, e Ruby 3.0
    • Go 1.12, Go 1.13, Go 1.14, Go 1.15, Go 1.16, Go 1.18, Go 1.19 e Go 1.20 (pré-lançamento)
  • 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 Depende do ambiente de execução e do tipo de escalonamento. 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
  • Java 8, Java 11, Java 17, Node.js, Python 3, PHP 7.X, PHP 8.1, Ruby, Go 1.11 e Go 1.12+ têm acesso de leitura e gravação ao diretório /tmp.
  • O Python 2.7 e o PHP 5.5 não têm acesso de gravação ao disco.
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, Google Tarefas e outros. Yes 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, para Java 8, Java 11, Java 17, Node.js, Python 3, PHP 7.X, PHP 8.1, Ruby, Go 1.11 e Go 1.12+.
  • Não para Python 2.7 e PHP 5.5.
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

Veja também uma comparação detalhada dos ambientes.

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.

Migrar do ambiente padrão para o ambiente flexível

Se você tem um aplicativo no ambiente padrão, talvez queira mover alguns serviços para o ambiente flexível. Para ver orientações, consulte as recomendações na comparação dos ambientes.

Para migrar serviços específicos para Python, Java, Go e PHP, consulte Como migrar serviços do ambiente padrão para o ambiente flexível.

Faça um teste

Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho do ambiente padrão do Ruby em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.

Faça uma avaliação gratuita do ambiente padrão do Ruby