Organizzazione di file di configurazione

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base all'area geografica selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID di area geografica potrebbero essere simili ai codici di paese e provincia di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID area geografica è facoltativo nell'URL.

Scopri di più sugli ID dell'area geografica.

Utilizza il seguente documento per capire come strutturare i servizi e le relative risorse della tua app per App Engine.

Struttura delle directory

Ogni versione del servizio App Engine è definita in un file di configurazione app.yaml. Per le app semplici, il requisito minimo per il deployment è definire il file app.yaml. Il file app.yaml funge da descrittore di deployment e definisce il tipo di scalabilità e le risorse di CPU, disco e memoria per una versione specifica di un servizio. Se esegui il deployment di più versioni di un servizio, puoi creare più file YAML nella stessa directory per rappresentare la configurazione di ciascuna delle tue versioni.

Per ciascun servizio puoi creare directory separate nella directory principale dell'app in fase di sviluppo locale. Se ospiti la tua app al di fuori di un sistema di controllo delle versioni (VCS), ad esempio GitHub, puoi anche strutturarla per l'utilizzo di directory separate in un repository o per utilizzare repository separati per ciascun servizio. Ogni directory o repository deve rappresentare un singolo servizio e contenere il file app.yaml del servizio insieme al codice sorgente associato.

Hai la possibilità di specificare un nome univoco per ogni file app.yaml del tuo servizio. Ad esempio, puoi assegnare un nome al file di configurazione dopo il servizio o utilizzare nomi univoci per rappresentare ogni versione del servizio specifico, ad esempio service1.yaml o app.flexible.yaml.

Gli altri file di configurazione facoltativi devono trovarsi nella directory principale o nel repository del servizio default della tua app. Questi file di configurazione facoltativi applicano impostazioni a livello di app che non sono specifiche di un servizio specifico, come dispatch.yaml, index.yaml e cron.yaml.

Esempi

L'esempio seguente mostra come potrebbe apparire un'app con tre servizi se stai sviluppando la tua app in locale. Il servizio dispatch.yaml facoltativo è stato aggiunto a tale app nella directory principale. Inoltre, all'interno della directory principale sono presenti tre directory per ogni servizio dell'app. La sottodirectory per service1 include i file di origine e di configurazione per tale servizio. Allo stesso modo, service2 e service3 si trovano in directory separate, che contengono i file di ciascun servizio, sebbene service3 includa due versioni del file di configurazione YAML:

Grafico gerarchico dei servizi YAML

Per una singola app di servizio, tale app includerà solo il servizio default e tutti i file possono trovarsi nella stessa directory, alla radice dell'app. Nel seguente esempio viene illustrata la possibile struttura di una singola app di servizio e include il file di configurazione dispatch.yaml facoltativo e due file di configurazione che rappresentano versioni diverse del servizio, service1.yaml e service2.yaml:

Grafico gerarchico dei piccoli servizi YAML

Considerazioni sulla progettazione per il tempo di attività delle istanze

Gli errori hardware o software che causano l'interruzione anticipata o il riavvio frequente delle istanze possono verificarsi senza avvisi e possono richiedere molto tempo per la risoluzione. L'applicazione dovrebbe essere in grado di gestire questo tipo di errori.

Ecco alcune buone strategie per evitare tempi di inattività dovuti al riavvio delle istanze:

  • Riduci il tempo necessario per il riavvio delle istanze o per l'avvio di nuove istanze.
  • Per i calcoli a lunga esecuzione, crea periodicamente punti di controllo in modo da poter riprendere da tale stato.
  • L'applicazione deve essere in stato stateless, in modo che non sia archiviato nulla nell'istanza.
  • Utilizza le code per eseguire l'esecuzione asincrona delle attività.
  • Se configuri le istanze per la scalabilità manuale:
    • Utilizza il bilanciamento del carico su più istanze.
    • Configura più istanze del necessario per gestire il traffico normale.
    • Scrivi logica di riserva che utilizza i risultati memorizzati nella cache quando un'istanza di scalabilità manuale non è disponibile.

Scopri di più sulle istanze in Modalità di gestione delle istanze.

Il servizio default

Ogni applicazione App Engine include un servizio default. Per poter creare ed eseguire il deployment di servizi aggiuntivi, devi eseguire il deployment della versione iniziale dell'app nel servizio default.

Il servizio predefinito può essere specificato in modo facoltativo in app.yaml con l'impostazione service: default.

Le richieste inviate alla tua app utilizzando il progetto Cloud vengono inviate al servizio default, ad esempio https://PROJECT_ID.REGION_ID.r.appspot.com. Per ulteriori informazioni sul targeting di altri servizi, consulta la sezione Comunicazione tra servizi.

File di configurazione facoltativi

I seguenti file di configurazione controllano le funzionalità facoltative che si applicano a tutti i servizi in una singola app. Vedi i seguenti argomenti per i dettagli su ciascuna delle funzionalità facoltative:

  • dispatch.yaml sostituisce le regole di routing predefinite inviando richieste in arrivo a un servizio specifico in base al percorso o al nome host nell'URL.
  • index.yaml specifica quali indici la tua app richiede se utilizzi le query Datastore.
  • cron.yaml configura attività programmate ricorrenti eseguite in orari specifici o a intervalli regolari.

Considerazioni sull'archiviazione di dati e file

Da App Engine puoi accedere facilmente ad altri servizi di Google Cloud come Datastore, Cloud SQL e Cloud Storage.

Hai anche la possibilità di utilizzare un database esterno o di terze parti se il database è supportato dalla tua lingua ed è accessibile dalla tua istanza App Engine.

Per maggiori dettagli sull'archiviazione di file in Google Cloud o esternamente, vedi Informazioni sull'archiviazione di file e dati.

Puoi anche scegliere come pubblicare i contenuti statici. Puoi pubblicare i contenuti statici dell'app direttamente da tale app in App Engine, ospitare i contenuti statici su un'opzione di Google Cloud come Cloud Storage o utilizzare una rete CDN (Content Delivery Network) di terze parti. Per ulteriori informazioni sulla pubblicazione di contenuti statici, consulta Pubblicazione di file statici.

Passaggi successivi

Se lavori con più servizi e vuoi implementarli insieme, vedi i passaggi per eseguire il deployment di più servizi.