Comprendi l'hosting delle app e come funziona

App Hosting gestisce una serie complessa di attività in background per semplificare il deployment della tua app. Questa pagina descrive le parti chiave del flusso di attività, fornendo informazioni sui punti in cui potresti voler personalizzare il flusso in base alle esigenze della tua app.

Supporto del framework

App Hosting fornisce assistenza per la compilazione e l'implementazione senza configurazione per le app web sviluppate in questi framework:

  • Next.js 13 e versioni successive
  • Angular 17.2 e versioni successive

App Hosting identifica il framework che stai utilizzando ispezionando il file package-lock.json o un altro file di blocco nel tuo repository. Se provi a eseguire il deployment di un'app Node.js in cui manca un file di blocco, App Hosting non riuscirà a creare ed eseguire l'app. Puoi creare package-lock.json eseguendo npm install nella directory root.

App Hosting adattatori del framework hanno due ruoli chiave:

  1. Analizza il codice sorgente e eventuali file di configurazione specifici del framework (ad esempionext.config.js) per comprendere il comportamento configurato dell'app.
  2. Eseguono il comando di compilazione dell'app per generare asset statici e creare una versione ottimizzata dell'app per la produzione.

Gli adattatori del framework creano l'app Node.js con npm run build e funzionano al meglio con gli script di compilazione predefiniti per ciascun framework: next build per Next.js e ng build per Angular. App Hosting tenterà di eseguire build con comandi di compilazione personalizzati, ma non può garantire in modo affidabile il successo.

Come funziona l'integrazione del repository App Hosting

La connessione importante tra il tuo repository GitHub e il backend di App Hosting è gestita da Developer Connect, la piattaforma di connettività di Google Cloud per gli strumenti DevOps esterni. Durante la creazione di un backend App Hosting, il flusso di lavoro dell'interfaccia utente di Developer Connect ti guida nell'installazione dell'app GitHub di Firebase. I passaggi chiave di questa procedura sono:

  1. Concedi a Developer Connect il ruolo Amministratore Secret Manager. In questo modo, il sistema può archiviare le credenziali in modo sicuro come "secret" in Cloud Secret Manager.
  2. Autorizzi l'app Firebase GitHub ad accedere al tuo repository GitHub.
  3. Developer Connect archivia un token di autorizzazione GitHub dedicato nel repository di Secret Manager del progetto. Non modificare o eliminare questo token.

Inoltre, App Hosting si integra con l'API GitHub Checks per fornire un controllo degli implementamenti. Questo controllo ti consente di visualizzare lo stato dell'implementazione su GitHub e di eseguire il debug della procedura di deployment in caso di errori.

Integrazione con Firebase e altri servizi Google

App Hosting configura l'ambiente di build e di runtime per consentirti di inizializzare l'SDK Firebase Admin con le Credenziali predefinite dell'applicazione Google. In questo modo, il backend può comunicare con altri prodotti Firebase sia durante la creazione che il deployment.

App Hosting località

Il deployment di App Hosting crea le risorse di backend in una posizione specifica. Questa flessibilità nella posizione dell'app web offre alcuni vantaggi chiave:

  • Prestazioni migliorate e latenza ridotta avvicinando geograficamente i dati agli utenti.
  • Un errore catastrofico per App Hosting in una regione non influirebbe sulle app web di cui è stato eseguito il deployment in altre regioni.

Puoi scegliere una di queste regioni quando crei un backend App Hosting dalla console o dalla CLI Firebase:

  • us-central1 (Iowa)
  • asia-east1 (Taiwan)
  • europe-west4 (Paesi Bassi)

L'account di servizio di backend App Hosting

Durante la compilazione e in fase di esecuzione, il backend di App Hosting si autentica con altri servizi Google con un account di servizio. Un account di servizio predefinito per queste finalità viene creato la prima volta che attivi App Hosting in un progetto Firebase:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

Per impostazione predefinita, questo account di servizio si applica a tutti i backend e dispone di un insieme minimo di autorizzazioni per consentirti di creare, eseguire e monitorare la tua app. Ha inoltre l'autorizzazione per autenticare l'SDK Admin con le credenziali predefinite dell'applicazione, per eseguire operazioni come il caricamento dei dati da Cloud Firestore. Consulta i ruoli App Hosting di Firebase.

Se la tua app deve interagire con altri servizi Google in fase di compilazione o da un backend in esecuzione, puoi personalizzare l'account di servizio predefinito aggiungendo i ruoli. Ad esempio, se la tua app richiede autorizzazioni per Vertex AI, potresti dover aggiungere roles/aiplatform.user o un ruolo correlato.

Termini e definizioni chiave

  • Backend: la raccolta di risorse gestite che App Hosting crea per creare ed eseguire la tua app web.
  • Rollout: una versione specifica della tua app pubblicata, collegata a un commit Git.
  • Ramo pubblicato: il ramo del tuo repository GitHub di cui viene eseguito il deployment nell'URL pubblicato. Spesso è il ramo in cui vengono uniti i rami delle funzionalità o i rami di sviluppo.

Problemi noti e limitazioni

L'anteprima di App Hosting presenta alcune limitazioni note:

  • In alcuni casi, un backend App Hosting potrebbe restituire messaggi Intermittent connection error nell'URL dell'app. Una correzione sarà disponibile in una release futura.
  • Le intestazioni Cache-Control vengono modificate per limitare le cache CDN a 60 secondi. In futuro, quando App Hosting avrà la possibilità di svuotare rapidamente la cache al momento del deployment, questo limite verrà rimosso.
  • L'ottimizzazione delle immagini viene eseguita in Cloud Run per impostazione predefinita e le immagini ottimizzate non vengono conservate. Ti consigliamo di disattivare l'ottimizzazione delle immagini o di specificare manualmente un caricatore finché non sarà disponibile una soluzione migliore.
  • I file statici non memorizzati nella cache vengono pubblicati da Cloud Run; in una release successiva, verranno archiviati e pubblicati dall'origine App Hosting per migliorare le prestazioni.
  • App Hosting Gli SKU potrebbero non essere visualizzati nella pagina di utilizzo del backend della console.Firebase Saranno disponibili in una release futura.
  • La console Firebase potrebbe mostrare intermittentemente l'errore "La compilazione non è stata trovata ed è non valida" durante la creazione del backend.
  • Attualmente, tutti i backend nello stesso progetto condividono un'organizzazione/un account GitHub. Possono essere collegati a diversi repository all'interno dell'organizzazione/dell'account. Per creare backend collegati a diversi account GitHub, collocarli in progetti distinti.
  • Il middleware, le riscritture e i reindirizzamenti di Next.js vengono eseguiti in Cloud Run, dietro la CDN. Poiché queste istruzioni non proteggono le risposte memorizzate nella cache, assicurati di impostare istruzioni di controllo appropriate per i contenuti di cui esegui il rendering.