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. In questa pagina vengono descritte le parti principali 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 esaminando 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.

Gli adattatori del framework App Hosting 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 build 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 build personalizzati, ma non può garantire in modo affidabile il successo.

Come funziona l'integrazione del repository App Hosting

L'importante connessione tra il repository GitHub e il backend App Hosting viene 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 Firebase GitHub. I passaggi chiave di questa procedura sono:

  1. Concedi a Developer Connect il ruolo di amministratore di Secret Manager. Ciò consente al sistema di archiviare le credenziali in modo sicuro come "secret" in Cloud Secret Manager.
  2. Autorizzi l'app GitHub di Firebase 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 Controls per fornire un controllo delle implementazioni. 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 tue risorse di backend in una località specifica. Questa flessibilità nella posizione dell'app web offre alcuni vantaggi chiave:

  • Prestazioni migliorate e latenza ridotta avvicinando i dati geograficamente 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 dall'interfaccia a riga di comando Firebase:

  • us-central1 (Iowa)
  • asia-east1 (Taiwan)

L'account di servizio di backend App Hosting

Durante la creazione e il runtime, il backend App Hosting esegue l'autenticazione con altri servizi Google con un account di servizio. Un account di servizio predefinito per questi scopi viene creato la prima volta che abiliti 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 ha un insieme minimo di autorizzazioni per consentirti di creare, eseguire e monitorare l'app. Dispone inoltre di autorizzazione per autenticare l'SDK Admin con le credenziali predefinite dell'applicazione per eseguire operazioni come il caricamento dei dati da Cloud Firestore. Consulta 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.
  • Implementazione: una versione specifica dell'app pubblicata, collegata a un commit Git.
  • Ramo live: 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 App Hosting presenta alcune limitazioni note:

  • L'eliminazione dei backend non funziona.
  • In alcuni casi, un backend App Hosting potrebbe restituire messaggi Intermittent connection error all'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.
  • Gli SKU App Hosting potrebbero non essere visualizzati nella pagina Utilizzo del backend della console Firebase. Saranno disponibili in una release futura.
  • La console Firebase potrebbe mostrare a intermittenza l'errore "build non trovata e non valida" durante la creazione del backend.
  • Attualmente, tutti i backend nello stesso progetto condividono un'organizzazione/account GitHub. Possono essere collegati a diversi repository all'interno dell'organizzazione/dell'account. Per creare backend connessi a diversi account GitHub, inseriscili in progetti separati.
  • Il middleware, le riscritture e i reindirizzamenti di Next.js vengono eseguiti in Cloud Run, dietro la CDN. Poiché queste non proteggono le risposte memorizzate nella cache, assicurati di impostare le direttive di controllo appropriate per i contenuti che stai visualizzando.