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 regione possono sembrare simili ai codici 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 regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Questa guida illustra come strutturare i servizi e le relative risorse della tua app 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
agisce come 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 stai eseguendo il deployment di più versioni di un servizio, puoi creare più file YAML nella stessa directory per rappresentare la configurazione per ciascuna delle tue versioni.
Per il runtime Java, i file di configurazione sono in formato YAML.
Per ogni servizio, puoi creare directory separate nella directory principale dell'app quando sviluppi in locale. Se ospiti la tua app da un sistema di controllo della versione (VCS), ad esempio GitHub, puoi anche strutturare l'app in modo che utilizzi directory separate in un repository oppure utilizzare repository separati per ogni servizio. Ogni directory o repository deve rappresentare un singolo servizio e contenere il file app.yaml
del servizio insieme al codice sorgente associato.
Puoi specificare un nome univoco per ogni file app.yaml
del tuo servizio. Ad esempio, puoi assegnare un nome al file di configurazione in base al servizio oppure utilizzare nomi univoci per rappresentare ogni versione di quel determinato servizio, come service1.yaml
o app.flexible.yaml
.
Gli altri file di configurazione facoltativi devono trovarsi nella directory radice o nel repository del servizio default
dell'app. Questi file di configurazione facoltativi applicano impostazioni a livello di app non specifiche per un determinato servizio, inclusi i file dispatch.yaml
, index.yaml
e cron.yaml
.
Esempi
Un'app semplice richiede solo che app.yaml
venga aggiunto nella stessa posizione dei file di origine dell'app. Per una singola app di servizio, questa includerà solo il servizio default
e tutti i file potranno trovarsi nella stessa directory, nella directory principale dell'app:
L'esempio seguente mostra come strutturare l'aspetto di un'app con tre servizi se la stai sviluppando in locale. Il file facoltativo dispatch.yaml
è stato aggiunto all'app nella directory principale. Sempre nella root ci sono tre directory
per ciascuno dei servizi dell'app. La sottodirectory per service1
include i file di origine e di configurazione per il servizio. Allo stesso modo, service2
e service3
si trovano in directory separate che contengono i file di ogni servizio, anche se service3
include due versioni del file di configurazione YAML:
Nell'esempio seguente, un singolo servizio ha il file dispatch.yaml
facoltativo
e due file di configurazione che rappresentano versioni diverse del servizio,
service1.yaml
e service2.yaml
:
Considerazioni sulla progettazione per l'uptime dell'istanza
I guasti hardware o software che causano la terminazione anticipata o i riavvii frequenti delle istanze possono verificarsi senza preavviso e la risoluzione può richiedere molto tempo. L'applicazione dovrebbe essere in grado di gestire questi errori.
Di seguito sono riportate alcune buone strategie per evitare tempi di inattività dovuti al riavvio delle istanze:
- Riduci il tempo necessario per il riavvio delle istanze o l'avvio di nuove istanze.
- Per i calcoli a lunga esecuzione, crea periodicamente checkpoint per riprendere da quello stato.
- L'app deve essere "stateless" per fare in modo che non venga archiviato nulla nell'istanza.
- Utilizza le code per eseguire l'esecuzione asincrona delle attività.
- Se configuri le istanze con scalabilità manuale:
- Utilizza il bilanciamento del carico su più istanze.
- Configura più istanze del necessario per gestire il traffico normale.
- Scrivi una logica di fallback che utilizza i risultati memorizzati nella cache quando non è disponibile un'istanza di scalabilità manuale.
Scopri di più sulle istanze, vedi Come vengono gestite le istanze.
Il servizio default
Ogni applicazione App Engine include un servizio default
. Prima di poter creare ed eseguire il deployment di servizi aggiuntivi per l'app, devi eseguire il deployment della versione iniziale della tua app nel servizio default
.
Il servizio predefinito può essere specificato facoltativamente in app.yaml
con l'impostazione
service: default
.
Le richieste inviate alla tua app utilizzando il progetto Google Cloud vengono inviate al servizio default
, ad esempio https://PROJECT_ID.REGION_ID.r.appspot.com
. Per scoprire di più sul targeting degli altri servizi, consulta 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. Consulta i seguenti argomenti per i dettagli su ognuna delle funzionalità facoltative:
cron.yaml
configura attività programmate regolarmente che operano in orari definiti o a intervalli regolari.dispatch.yaml
esegue l'override delle regole predefinite di routing inviando le richieste in arrivo a un servizio specifico in base al percorso o al nome host nell'URL.index.yaml
specifica gli indici necessari all'app se utilizzi le query Datastore.- Tieni presente che questo file è disponibile per tutti i runtime, ad eccezione di quello .NET.
Considerazioni sull'archiviazione di dati e file
Da App Engine puoi accedere facilmente ad altri servizi Google Cloud come Datastore, Cloud SQL e Cloud Storage.
Hai anche la possibilità di utilizzare un database esterno o di terze parti se questo è supportato dalla tua lingua e accessibile dalla tua istanza App Engine.
Per maggiori dettagli sull'archiviazione dei file in Google Cloud o esternamente, consulta Informazioni sull'archiviazione di dati e file.
Puoi anche scegliere in che modo vuoi pubblicare i contenuti statici. Puoi pubblicare i contenuti statici della tua app direttamente da quell'app in App Engine, ospitare i tuoi contenuti statici in un'opzione di Google Cloud come Cloud Storage oppure utilizzare una rete CDN (Content Delivery Network) di terze parti. Per ulteriori informazioni sulla pubblicazione di contenuti statici, consulta la sezione Pubblicazione di file statici.
Passaggi successivi
Se utilizzi più servizi e vuoi eseguirne il deployment insieme, consulta la procedura per eseguire il deployment di più servizi.