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 (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:
    PythonJavaNode.jsGoRubyPHP 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 (pré-lançamento), Ruby, Go 1.11 e Go 1.12 e versões posteriores 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, 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 para Java 8, Java 11, Java 17, Node.js, Python 3, PHP 7.X, PHP 8.1 (pré-lançamento), 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

 

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.