Como organizar arquivos de configuração

Use este documento para entender como estruturar os serviços e recursos relacionados do seu aplicativo do App Engine.

Estrutura do diretório

Cada versão do serviço do App Engine é definida em um arquivo de configuração app.yaml. Para aplicativos simples, o requisito mínimo para implantação é definir o arquivo app.yaml. O arquivo app.yaml atua como um descritor de implantação e define o tipo de escalonamento, além dos recursos de CPU, disco e memória para a versão específica de um serviço. Se você pretende implantar várias versões de um serviço, é possível criar vários arquivos YAML no mesmo diretório para representar a configuração de cada uma delas.

Quando você está desenvolvendo localmente, é possível criar diretórios separados para cada serviço na raiz do aplicativo. Se você hospedar o aplicativo fora de um sistema de controle de versão (VCS, na sigla em inglês), como o GitHub, também poderá estruturá-lo para usar diretórios separados em um repositório ou usar repositórios separados para cada serviço. Cada diretório ou repositório precisa representar um único serviço e conter o arquivo app.yaml desse serviço com o código-fonte associado.

É possível especificar um nome exclusivo para cada arquivo app.yaml do seu serviço. Por exemplo, você pode dar o nome do serviço a um arquivo de configuração ou usar nomes exclusivos para representar cada versão desse serviço específico, como service1.yaml ou app.flexible.yaml.

Os outros arquivos de configuração opcionais precisam estar no diretório raiz ou no repositório do serviço default do aplicativo. Esses arquivos de configuração opcionais aplicam configurações gerais do aplicativo que não são específicas de um determinado serviço, incluindo os arquivos dispatch.yaml e cron.yaml.

Exemplos

O exemplo a seguir demonstra como fica um aplicativo com três serviços se ele estiver sendo desenvolvido localmente. O arquivo dispatch.yaml opcional foi adicionado a esse aplicativo no diretório raiz. Na raiz, também há três diretórios para cada um dos serviços do aplicativo. O subdiretório de service1 inclui os arquivos de origem e configuração para esse serviço. Da mesma forma, service2 e service3 estão em diretórios separados, que contêm os arquivos de cada serviço. No entanto, service3 inclui duas versões do arquivo de configuração YAML:

Gráfico da hierarquia de serviços YAML

Se o aplicativo de serviço for único, ele incluirá apenas o serviço default, e todos os arquivos residirão no mesmo diretório, na raiz desse aplicativo. No exemplo a seguir, demonstramos a possível estrutura de um único aplicativo de serviço, incluindo o arquivo de configuração dispatch.yaml opcional e dois arquivos de configuração que representam versões diferentes desse serviço, service1.yaml e service2.yaml:

Gráfico da hierarquia de pequenos serviços YAML

Considerações sobre o design do tempo de atividade da instância

Falhas de hardware ou software que causam o encerramento antecipado ou reinicializações frequentes da instância podem ocorrer sem qualquer aviso e levar muito tempo para serem solucionadas. O aplicativo precisa ser capaz de lidar com essas falhas.

Confira algumas boas estratégias para evitar a inatividade devido a reinícios da instância:

  • Reduza o tempo necessário para a reinicialização das instâncias ou para que novas instâncias sejam inicializadas.
  • Para cálculos de longa duração, crie checkpoints periodicamente para que seja possível retomar a partir desse estado.
  • O aplicativo precisa ser "sem estado" para que nada seja armazenado na instância.
  • Use filas para executar tarefas assíncronas.
  • Se você configurar as instâncias para escalonamento manual:
    • use o balanceamento de carga em várias instâncias;
    • configure mais instâncias do que o necessário para processar o tráfego normal;
    • escreva uma lógica de fallback que use resultados em cache quando não houver uma instância de escalonamento manual disponível.

Saiba mais sobre instâncias em Como as instâncias são gerenciadas.

O serviço default

Cada aplicativo do App Engine inclui um serviço default. É preciso implantar a versão inicial do aplicativo no serviço default antes de criar e implantar outros serviços no aplicativo.

Esse serviço padrão pode ser especificado no arquivo app.yaml com a configuração service: default.

As solicitações enviadas ao aplicativo usando o projeto do GCP são enviadas para o serviço default, por exemplo, https://[PROJECT_ID].appspot.com. Para saber mais sobre como segmentar outros serviços, consulte Comunicação entre serviços.

Arquivos de configuração opcionais

Estes arquivos de configuração controlam os recursos opcionais que se aplicam a todos os serviços em um aplicativo individual. Consulte os tópicos a seguir para saber detalhes sobre cada um dos recursos opcionais:

Considerações sobre armazenamento de dados e arquivos

No App Engine, é fácil acessar outros serviços do GCP, como o Cloud Datastore, Cloud SQL e Cloud Storage.

Também é possível usar um banco de dados externo ou de terceiros caso ele seja compatível com sua linguagem e possa ser acessado na instância do App Engine.

Para ver detalhes sobre como armazenar arquivos no GCP ou externamente, consulte Noções básicas sobre armazenamento de dados e arquivos.

Você também pode escolher como quer disponibilizar o conteúdo estático. É possível fazer isso diretamente do aplicativo no App Engine, hospedar o conteúdo em uma opção do GCP, como o Cloud Storage, ou usar uma rede de fornecimento de conteúdo (CDN, na sigla em inglês) de terceiros. Para mais informações sobre exibição de conteúdo estático, consulte este artigo.

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

Enviar comentários sobre…

Ambiente flexível do App Engine para documentos .NET