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.
Para projetos pequenos e simples, todos os ficheiros da app podem estar num diretório:
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.