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.

Integrazione del framework

App Hosting fornisce il supporto per la compilazione e il deployment preconfigurati 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 a cui manca un file di blocco, App Hosting non riuscirà a compilare ed eseguire l'app. Puoi creare package-lock.json eseguendo npm install nella directory principale.

Adattatori per il telaio

Gli adattatori del framework App Hosting hanno due ruoli chiave:

  1. Analizzano il codice sorgente e eventuali file di configurazione specifici del framework (ad esempionext.config.js) e generano un bundle di output che può essere elaborato dal resto dell'infrastruttura di hosting di 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.

Il codice sorgente degli adattatori Next.js e Angular è disponibile in firebase-framework-tools.

Altri framework

Oltre a Next.js e Angular, App Hosting supporta anche qualsiasi framework web in grado di fornire un output di compilazione che corrisponda alla nostra specifica del bundle di output. Gli autori di framework possono sfruttare la specifica del bundle di output per verificare che il loro framework sia supportato da App Hosting.

Se vuoi che vengano supportati altri framework, puoi creare un'opzione di adattamento o contattare i responsabili del framework per convertire gli output di compilazione nel formato di hosting delle app. Gli adattatori Next.js e Angular sono buoni esempi di riferimento per chiunque crei un adattatore.

I framework supportati sono disponibili su Firebase Open Source.

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 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 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 gli ambienti di compilazione e di runtime in modo da poter inizializzare l'SDK Firebase Admin con le credenziali predefinite dell'applicazione Google. In questo modo, il tuo backend può comunicare con altri prodotti Firebase sia durante la compilazione sia durante 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 di 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

Questo account di servizio si applica a tutti i backend per impostazione predefinita 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 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 non proteggono le risposte memorizzate nella cache, assicurati di impostare le direttive di controllo appropriate per i contenuti che stai visualizzando.