Ambiente flexível do App Engine para usuários do ambiente padrão

Este guia é uma introdução ao ambiente flexível para os usuários que já estão familiarizados com o ambiente padrão. Aqui, você encontra explicações sobre as semelhanças e as diferenças fundamentais entre os ambientes, além de recomendações em geral sobre a arquitetura para aplicativos que usam ambos os ambientes.

Para mais informações sobre o mapeamento entre os serviços disponíveis no ambiente padrão e os equivalentes no ambiente flexível, consulte Como migrar serviços do ambiente padrão para o flexível.

Semelhanças e diferenças fundamentais

Ambos os ambientes fornecem a infraestrutura de implantação, serviço e escalonamento do App Engine. As diferenças fundamentais estão na forma como o aplicativo é executado pelo ambiente e localmente, acessa serviços externos e é escalonado. Consulte também a página sobre como escolher um ambiente para um resumo geral das diferenças.

Execução do aplicativo

No ambiente padrão, o aplicativo é executado em uma instância leve dentro de um sandbox. Esse sandbox restringe o que o aplicativo pode fazer. Por exemplo, o aplicativo não consegue gravar em disco ou usar bibliotecas binárias que não estão incluídas na lista de permissões. O ambiente padrão também limita a quantidade de opções de CPU e memória disponíveis para o aplicativo. Devido a essas restrições, a maioria dos aplicativos padrão do App Engine tendem a ser aplicativos da Web sem estado, que respondem rapidamente às solicitações HTTP.

Por outro lado, o ambiente flexível executa o aplicativo em contêineres Docker nas máquinas virtuais (VMs, na sigla em inglês) do Google Compute Engine, que têm menos restrições. Por exemplo, você pode usar qualquer linguagem de programação que preferir, gravar em disco, usar qualquer biblioteca que desejar e, até mesmo, executar vários processos. O ambiente flexível também permite escolher qualquer tipo de máquina do Compute Engine para as instâncias, a fim de que o aplicativo tenha acesso a mais recursos de memória e CPU.

Como acessar serviços externos

No ambiente padrão, normalmente, o aplicativo acessa serviços, como o Cloud Datastore, por meio das google.appengine APIs integradas. No entanto, no ambiente flexível, essas APIs não estão mais disponíveis. Em vez disso, use as bibliotecas de cliente do Google Cloud. Essas bibliotecas funcionam em todos os tipos de ambiente, o que significa que o aplicativo será mais portátil. Se necessário, os aplicativos em execução no ambiente flexível geralmente também podem ser executados no Google Kubernetes Engine ou no Compute Engine sem grandes modificações.

Desenvolvimento local

No ambiente padrão, normalmente o aplicativo é executado localmente usando o SDK do App Engine. Esse SDK é responsável pela execução do aplicativo e emula os serviços do App Engine. No ambiente flexível, o SDK não é usado para executar aplicativos. Em vez disso, os aplicativos criados para o ambiente flexível devem ser escritos como aplicativos da Web padrão que podem ser executados em qualquer lugar. Como mencionado, o ambiente flexível apenas executa o aplicativo em um contêiner Docker. Isso significa que para testar o aplicativo localmente, basta executá-lo diretamente. Por exemplo, para executar um aplicativo Python usando o Django, basta executar python manage.py runserver.

Outra diferença fundamental é que os aplicativos do ambiente flexível em execução localmente usam os serviços reais do Cloud Platform, como o Cloud Datastore. Use um projeto diferente para testar localmente. Quando houver disponibilidade, use emuladores.

Características do escalonamento

Ambos os ambientes usam a infraestrutura de escalonamento automático do App Engine. No entanto, a maneira como cada um deles realiza esse escalonamento é diferente. O ambiente padrão pode escalonar de zero a milhares de instâncias muito rapidamente. Em contrapartida, é necessário que o ambiente flexível tenha, pelo menos, uma instância do aplicativo em execução. Além disso, ele pode levar mais tempo para escalonar verticalmente em resposta ao tráfego.

Quando usar o ambiente flexível

O ambiente flexível foi criado como um complemento do ambiente padrão. Se você já tem um aplicativo em execução no ambiente padrão, geralmente não é necessário migrá-lo totalmente para o ambiente flexível. Em vez disso, identifique os componentes do aplicativo que exigem mais recursos de CPU e RAM, bibliotecas ou programas especializados de terceiros ou, ainda, que precisam executar ações não permitidas no ambiente padrão. Em seguida, crie pequenos serviços do App Engine que usam o ambiente flexível para lidar com esses componentes. O serviço que já está em execução no ambiente padrão pode chamar os outros serviços usando HTTP, a versão alfa do Cloud Tasks ou o Cloud Pub/Sub.

Por exemplo, se você tiver um aplicativo da Web em execução no ambiente padrão e quiser adicionar um novo recurso para converter arquivos para PDF, poderá escrever um microsserviço em separado que será executado no ambiente flexível para apenas processar a conversão em PDF. Este microsserviço pode ser um programa simples que consiste em apenas um ou dois gerenciadores de solicitações. Ele poderá instalar e usar qualquer programa Linux disponível para ajudar na conversão, como o unoconv.

O aplicativo principal permanece no ambiente padrão e pode chamar esse microsserviço diretamente por HTTP. Se você julgar que a conversão levará muito tempo, o aplicativo também poderá usar a versão alfa do Cloud Tasks ou o Cloud Pub/Sub para enfileirar as solicitações.

Próximas etapas

Faça o mapeamento entre os serviços usados pelo app no ambiente padrão e os serviços equivalentes no ambiente flexível.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para Go