Ficheiros de configuração

Cada versão de um serviço é definida num ficheiro .yaml, que indica o nome do serviço e da versão. Normalmente, o ficheiro YAML tem o mesmo nome que o serviço que define, mas isto não é obrigatório. Se estiver a implementar várias versões de um serviço, pode criar vários ficheiros YAML no mesmo diretório, um para cada versão.

Normalmente, cria um diretório para cada serviço, que contém os ficheiros YAML do serviço e o código fonte associado. Os ficheiros de configuração opcionais ao nível da aplicação (dispatch.yaml, cron.yaml, index.yaml e queue.yaml) estão incluídos no diretório da app de nível superior. O exemplo abaixo mostra três serviços. Em service1 e service2, os ficheiros de origem estão ao mesmo nível que o ficheiro YAML. Em service3, existem ficheiros YAML para duas versões.

Gráfico de hierarquia dos serviços YAML

Para projetos pequenos e simples, todos os ficheiros da app podem estar num diretório:

Gráfico de hierarquia de serviços YAML pequenos

Todos os ficheiros YAML têm de incluir um parâmetro de versão. Para definir o serviço predefinido, pode incluir explicitamente o parâmetro service: default ou deixar o parâmetro de serviço fora do ficheiro.

O ficheiro de configuração de cada serviço define o tipo de escalabilidade e a classe de instância para um serviço/versão específico. São usados diferentes parâmetros de dimensionamento consoante o tipo de dimensionamento que especificar. Se não especificar a escala, a escala automática é a predefinição. As definições de classe de instância e escalabilidade são descritas na secção de app.yaml referência.

Para cada serviço, também pode especificar definições que mapeiam pedidos de URL para scripts específicos e identificam ficheiros estáticos para uma melhor eficiência do servidor. Estas definições também estão incluídas no ficheiro YAML e são descritas na secção de app.yaml referência.

O serviço predefinido

Cada aplicação tem um único serviço predefinido. Pode definir o serviço predefinido no app.yaml com a definição service: default, mas não é necessário fazê-lo. Todos os parâmetros de configuração relevantes para os serviços podem aplicar-se ao serviço predefinido.

Ficheiros de configuração opcionais

Estes ficheiros de configuração controlam as funcionalidades opcionais que se aplicam a todos os serviços numa app:

  • dispatch.yaml substitui as regras predefinidas de encaminhamento enviando pedidos recebidos para um serviço específico com base no caminho ou no nome de anfitrião no URL.
  • queue.yaml configura as filas de push e de pull.
  • index.yaml especifica os índices de que a sua app precisa se usar consultas do Datastore.
  • cron.yaml configura tarefas agendadas regularmente que operam em horários definidos ou em intervalos regulares.

Para implementar atualizações destes ficheiros de configuração no App Engine, execute o comando seguinte a partir do diretório onde se encontram:

    gcloud app deploy [CONFIG_FILE]

Um exemplo

Segue-se um exemplo de como configuraria ficheiros YAML para uma aplicação que tem três serviços: um serviço predefinido que processa pedidos Web, além de mais dois serviços que processam pedidos de dispositivos móveis e processamento de back-end.

Comece por definir um ficheiro de configuração denominado app.yaml que irá processar todos os pedidos relacionados com a Web:

runtime: python27
api_version: 1
threadsafe: true

Se o Google Cloud ID do projeto da consola para esta app for simple-sample, esta configuração cria um serviço predefinido com escalabilidade automática e um endereço público de https://simple-sample.uc.r.appspot.com.

Em seguida, suponha que quer criar um serviço para processar pedidos da Web para dispositivos móveis. Para o bem dos utilizadores de dispositivos móveis (neste exemplo), a latência pendente máxima será de apenas um segundo e teremos sempre, pelo menos, duas instâncias inativas. Para configurar esta opção, crie um ficheiro 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 que este ficheiro cria fica acessível em https://mobile-frontend-dot-simple-sample.uc.r.appspot.com.

Por fim, adicione um serviço denominado my-service para processar o trabalho estático de back-end. Pode ser uma tarefa contínua que exporta dados do Datastore para o BigQuery. A quantidade de trabalho é relativamente fixa, pelo que precisa simplesmente de 1 serviço residente em qualquer altura. Além disso, estas tarefas têm de processar uma grande quantidade de dados na memória. Por isso, é recomendável usar serviços com uma configuração de memória aumentada. Para configurar esta opção, crie um my-service.yaml ficheiro de configuração 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 que este ficheiro cria fica acessível em https://my-service-dot-simple-sample.uc.r.appspot.com.

Repare na definição manual_scaling:. O parâmetro instances: indica ao App Engine quantas instâncias criar para este serviço.

Também pode transferir esta app de demonstração em Python e consultá-la.