File di configurazione

Ogni versione di un servizio è definita in un file .yaml, che indica il nome del servizio e della versione. Di solito il file YAML ha lo stesso nome del servizio che definisce, ma non è obbligatorio. Se esegui il deployment di più versioni di un servizio, puoi creare più file yaml nella stessa directory, uno per ogni versione.

In genere, crei una directory per ogni servizio, che contiene i file YAML del servizio e il codice sorgente associato. I file di configurazione facoltativi a livello di applicazione (dispatch.yaml, cron.yaml, index.yaml e queue.yaml) sono inclusi nella directory dell'app di primo livello. L'esempio seguente mostra tre servizi. In service1 e service2, i file di origine si trovano allo stesso livello del file YAML. In service3 sono presenti file YAML per due versioni.

Grafico della gerarchia dei servizi YAML

Per progetti piccoli e semplici, tutti i file dell'app possono trovarsi in una directory:

Grafico della gerarchia di piccoli servizi YAML

Ogni file YAML deve includere un parametro di versione. Per definire il servizio predefinito, puoi includere esplicitamente il parametro service: default o lasciare il parametro del servizio fuori dal file.

Il file di configurazione di ogni servizio definisce il tipo di scalabilità e la classe di istanza per un servizio/una versione specifici. Vengono utilizzati parametri di scalabilità diversi a seconda del tipo di scalabilità specificato. Se non specifichi la scalabilità, il valore predefinito è la scalabilità automatica. Le impostazioni di scalabilità e della classe di istanze sono descritte nella sezione di app.yaml documentazione.

Per ogni servizio puoi anche specificare impostazioni che mappano le richieste di URL a script specifici e identificano i file statici per una maggiore efficienza del server. Queste impostazioni sono incluse anche nel file yaml e sono descritte nella sezione di riferimento app.yaml.

Il servizio predefinito

Ogni applicazione ha un unico servizio predefinito. Puoi definire il servizio predefinito in app.yaml con l'impostazione service: default, ma non è necessario. Tutti i parametri di configurazione pertinenti ai servizi possono essere applicati al servizio predefinito.

File di configurazione facoltativi

Questi file di configurazione controllano le funzionalità facoltative che si applicano a tutti i servizi di un'app:

  • dispatch.yaml sostituisce le regole di routing predefinite inviando le richieste in entrata a un servizio specifico in base al percorso o al nome host nell'URL.
  • queue.yaml configura sia le code push sia le code pull.
  • index.yaml specifica gli indici di cui ha bisogno la tua app se utilizzi le query Datastore.
  • cron.yaml configura attività programmate ricorrenti eseguite in orari specifici o a intervalli regolari.

Per eseguire il deployment degli aggiornamenti di questi file di configurazione in App Engine, esegui il seguente comando dalla directory in cui si trovano:

    gcloud app deploy [CONFIG_FILE]

Un esempio

Ecco un esempio di come configurare i file YAML per un'applicazione che ha tre servizi: un servizio predefinito che gestisce le richieste web e altri due servizi che gestiscono le richieste mobile e l'elaborazione di backend.

Inizia definendo un file di configurazione denominato app.yaml che gestirà tutte le richieste relative al web:

runtime: python27
api_version: 1
threadsafe: true

Se l'ID progetto della console Google Cloud per questa app è simple-sample, questa configurazione creerà un servizio predefinito con scalabilità automatica e un indirizzo pubblico https://simple-sample.uc.r.appspot.com.

Supponiamo che tu voglia creare un servizio per gestire le richieste del web mobile. Per gli utenti di dispositivi mobili (in questo esempio), la latenza massima in attesa sarà di solo un secondo e avremo sempre almeno due istanze inattive. Per configurare questa opzione, crea un file di configurazione mobile-frontend.yaml con i seguenti contenuti:

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

automatic_scaling:
  min_idle_instances: 2
  max_pending_latency: 1s

Il servizio creato da questo file sarà quindi raggiungibile all'indirizzo https://mobile-frontend-dot-simple-sample.uc.r.appspot.com.

Infine, aggiungi un servizio denominato my-service per gestire il lavoro di backend statico. Potrebbe trattarsi di un job continuo che esporta i dati da Datastore a BigQuery. La quantità di lavoro è relativamente fissa, quindi ti basta un servizio residente in un determinato momento. Inoltre, questi job dovranno gestire una grande quantità di elaborazione in memoria, quindi ti consigliamo di utilizzare servizi con una configurazione di memoria maggiore. Per configurare questa opzione, crea un file di configurazione my-service.yaml con i seguenti contenuti.

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

instance_class: B8
manual_scaling:
  instances: 1

Il servizio creato da questo file sarà quindi raggiungibile all'indirizzo https://my-service-dot-simple-sample.uc.r.appspot.com.

Nota l'impostazione manual_scaling:. Il parametro instances: indica ad App Engine quante istanze creare per questo servizio.

Ti consigliamo inoltre di scaricare questa app demo Python e dare un'occhiata.