Arquivos de configuração

Cada versão de um serviço é definida em um arquivo .yaml que fornece o nome do serviço e a versão. Geralmente, o arquivo YAML recebe o mesmo nome do serviço que define, mas isso não é obrigatório. Se você implantar várias versões de um serviço, poderá criar diversos arquivos yaml no mesmo diretório, um para cada versão.

Normalmente, cria-se um diretório por serviço contendo os arquivos YAML e o código-fonte associado de cada um dos serviços. Os arquivos de configuração opcionais no nível do aplicativo, dispatch.yaml, cron.yaml, index.yaml e queue.yaml, estão incluídos no diretório de nível superior do aplicativo. O exemplo abaixo mostra três serviços. Em service1 e service2, os arquivos de origem e o arquivo YAML estão no mesmo nível. Em service3, há arquivos YAML para duas versões.

Gráfico hierárquico de serviços YAML

No caso de projetos pequenos e simples, é possível colocar todos os arquivos do app em um único diretório:

Gráfico hierárquico de pequenos serviços YAML

Cada arquivo YAML precisa incluir um parâmetro de versão. Para definir o serviço padrão, é possível incluir explicitamente o parâmetro service: default ou deixar o parâmetro de serviço fora do arquivo.

O arquivo de configuração de cada serviço define o tipo de escalonamento e a classe da instância para um determinado serviço/versão. Dependendo do tipo de escalonamento a ser especificado, os parâmetros usados variam. Quando o escalonamento não é especificado, adota-se o padrão. As configurações de classe de instância e escalonamento estão descritas na seção de referência de app.yaml.

Para cada serviço, também é possível especificar configurações que mapeiam solicitações de URL a scripts específicos e identificam arquivos estáticos para melhor eficiência do servidor. Essas configurações também estão incluídas no arquivo yaml e descritas na seção de referência de app.yaml.

O serviço padrão

Todos os aplicativos têm um serviço padrão único. É possível definir o serviço padrão no app.yaml com a configuração service: default, mas isso não é necessário. Todos os parâmetros de configuração relevantes aos serviços podem ser aplicados ao serviço padrão.

Arquivos de configuração opcionais

Estes arquivos de configuração controlam os recursos opcionais que se aplicam a todos os serviços de um app:

  • dispatch.yaml
  • queue.yaml
  • index.yaml
  • cron.yaml
  • dos.yaml

Para implantar atualizações desses arquivos de configuração no App Engine, execute o seguinte comando no diretório em que estiverem localizados:

    gcloud app deploy [CONFIG_FILE]

Um exemplo

No exemplo abaixo, você aprende a configurar arquivos YAML para um aplicativo com três serviços: um serviço padrão que processa solicitações da Web e mais dois serviços que processam solicitações móveis e processamento de back-end.

Comece por definir um arquivo de configuração denominado app.yaml que processará todas as solicitações relacionadas à Web:

runtime: python27
api_version: 1
threadsafe: true

Se o código do projeto do Console do GCP deste app fosse simple-sample, essa configuração criaria um serviço padrão com escalonamento automático e um endereço público de http://simple-sample.appspot.com.

Em seguida, suponha que você queira criar um serviço para processar solicitações da Web para dispositivos móveis. Neste exemplo, por causa dos usuários móveis, a latência máxima pendente será de apenas um segundo e sempre teremos pelo menos duas instâncias inativas. Para configurar isso, seria criado um arquivo de configuração mobile-frontend.yaml com o seguinte conteúdo:

service: mobile-frontend
runtime: python27
api_version: 1
threadsafe: true

automatic_scaling:
  min_idle_instances: 2
  max_pending_latency: 1s

O serviço criado por esse arquivo seria acessado em http://mobile-frontend.simple-sample.appspot.com.

Finalmente, adicione um serviço denominado my-service para processar o trabalho estático de back-end. Poderia ser um job contínuo que exportasse dados do Datastore para o BigQuery. A quantidade de trabalho é relativamente fixa. Portanto, você precisa de apenas um serviço residente a qualquer momento. Além disso, solicite serviços com uma grande configuração de memória, já que esses jobs precisarão processar muita coisa. Para configurar isso, seria necessário criar um arquivo de configuração my-service.yaml com o seguinte conteúdo:

service: my-service
runtime: python27
api_version: 1
threadsafe: true

instance_class: B8
manual_scaling:
  instances: 1

O serviço criado por esse arquivo seria acessível em http://my-service.simple-sample.appspot.com.

Observe a configuração manual_scaling:. O parâmetro instances: informa ao App Engine a quantidade de instâncias a serem criadas para esse serviço.

Também recomendamos fazer o download e dar uma olhada neste aplicativo de demonstração em Python.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2