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 do aplicativo de nível superior. O exemplo abaixo mostra três serviços.
Em service1
e service2
, os arquivos de origem estão no mesmo nível do arquivo YAML. Em service3
, há arquivos YAML para duas versões.
No caso de projetos pequenos e simples, você pode colocar todos os arquivos do app em um único diretório:
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 escalonamento e classe de instância estão descritas na seção de referência de app.yaml
.
Para cada serviço, também é possível especificar configurações que associem solicitações de URL a scripts específicos e identifiquem arquivos estáticos para melhor eficiência do servidor. Essas configurações também estão incluídas no arquivo yaml e estão 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 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
modifica as regras padrão de roteamento enviando solicitações recebidas para um serviço específico com base no caminho ou nome do host no URL.queue.yaml
configura filas push e pull.index.yaml
especifica quais índices são necessários para o aplicativo ao usar consultas do Datastore.cron.yaml
configura tarefas programadas regularmente que operam em horários definidos ou em intervalos regulares.
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 definindo um arquivo de configuração chamado app.yaml
que gerenciará todas
as solicitações relacionadas à Web:
runtime: python27
api_version: 1
threadsafe: true
Se o ID do projeto do Console do Google Cloud para este aplicativo fosse simple-sample
, essa
configuração criaria um serviço padrão com escalonamento automático e um
endereço público de https://simple-sample.uc.r.appspot.com
.
Em seguida, suponha que você queira criar um serviço para lidar com solicitações da Web móvel.
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, você precisa criar 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 poderia ser acessado em https://mobile-frontend-dot-simple-sample.uc.r.appspot.com
.
Por fim, adicione um serviço chamado my-service
para gerenciar o trabalho de back-end estático.
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, você precisa 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 poderia ser acessado em
https://my-service-dot-simple-sample.uc.r.appspot.com
.
Observe a configuração manual_scaling:
. O parâmetro instances:
informa ao App
Engine quantas instâncias serão criadas para esse serviço.