App Hosting und seine Funktionsweise

App Hosting verarbeitet eine komplexe Reihe von Hintergrundaufgaben, um die Bereitstellung Ihrer App zu vereinfachen. Auf dieser Seite werden die wichtigsten Teile dieses Aufgabenflusses beschrieben. Außerdem finden Sie Informationen zu Punkten, an denen Sie den Ablauf je nach den Anforderungen Ihrer App anpassen können.

Framework-Integration

App Hosting bietet vorkonfigurierte Unterstützung für das Erstellen und Bereitstellen von Web-Apps, die in diesen Frameworks entwickelt wurden:

  • Next.js 13 oder höher
  • Angular 17.2 oder höher

App Hosting gibt an, welches Framework Sie verwenden, indem die Datei package-lock.json oder eine andere Sperrdatei in Ihrem Repository geprüft wird. Wenn Sie versuchen, eine Node.js-Anwendung bereitzustellen, für die keine Sperrdatei vorhanden ist, kann App Hosting Ihre Anwendung nicht erstellen und ausführen. Sie können package-lock.json erstellen, indem Sie npm install in Ihrem Stammverzeichnis ausführen.

Framework-Adapter

App Hosting-Framework-Adapter haben zwei wichtige Rollen:

  1. Sie analysieren Ihren Quellcode und alle frameworkspezifischen Konfigurationsdateien (z. B. next.config.js) und generieren ein Output-Bundle, das von der restlichen App-Hosting-Infrastruktur verarbeitet werden kann.
  2. Sie führen den Build-Befehl Ihrer App aus, um statische Assets zu generieren und eine optimierte Version Ihrer App für die Produktion zu erstellen.

Die Framework-Adapter erstellen Ihre Node.js-Anwendung mit npm run build. Sie funktionieren am besten mit den Standard-Build-Scripts für jedes Framework: next build für Next.js und ng build für Angular. App Hosting versucht, Builds mit benutzerdefinierten Build-Befehlen auszuführen, kann aber den Erfolg nicht zuverlässig garantieren.

Die Quelle für Next.js- und Angular-Adapter ist in firebase-framework-tools verfügbar.

Andere Frameworks

Neben Nextjs und Angular unterstützt App Hosting auch jedes Web-Framework, das eine Build-Ausgabe bereitstellen kann, die unserer Ausgabe-Bundle-Spezifikation entspricht. Framework-Entwickler können anhand der Spezifikation für das Ausgabebundle prüfen, ob ihr Framework von App Hosting unterstützt wird.

Wenn Sie möchten, dass weitere Frameworks unterstützt werden, können Sie einen Adapter erstellen oder sich an die Verantwortlichen des Frameworks wenden, um Build-Ausgaben in das App-Hosting-Format umzuwandeln. Die Adapter für Nextjs und Angular sind gute Referenzbeispiele für alle, die einen Adapter erstellen.

Unterstützte Frameworks finden Sie unter Firebase Open Source.

So funktioniert die App Hosting-Repository-Integration

Die wichtige Verbindung zwischen Ihrem GitHub-Repository und dem App Hosting-Backend wird von Developer Connect verwaltet, der Konnektivitätsplattform von Google Cloud für externe DevOps-Tools. Beim Erstellen eines App Hosting-Backends werden Sie durch den UI-Workflow von Developer Connect durch die Installation der Firebase-GitHub-App geführt. Die wichtigsten Schritte in diesem Prozess sind:

  1. Sie gewähren Developer Connect die Rolle Secret Manager Admin. So können Anmeldedaten sicher als „Secrets“ im Cloud Secret Manager gespeichert werden.
  2. Sie autorisieren die Firebase-GitHub-App, auf Ihr GitHub-Repository zuzugreifen.
  3. Developer Connect speichert ein spezielles GitHub-Autorisierungstoken im Secret Manager-Repository Ihres Projekts. Ändern oder löschen Sie dieses Token nicht.

Außerdem ist App Hosting in die GitHub Checks API eingebunden, um eine Prüfung für Roll-outs bereitzustellen. So können Sie den Status Ihres Roll-outs in GitHub prüfen und den Bereitstellungsprozess bei Fehlern beheben.

Einbindung in Firebase und andere Google-Dienste

Mit App Hosting werden sowohl Ihre Build- als auch Ihre Laufzeitumgebung eingerichtet, damit Sie das Firebase Admin SDK mit den Standardanmeldedaten der Google-Anwendung initialisieren können. So kann Ihr Backend sowohl beim Erstellen als auch beim Bereitstellen mit anderen Firebase-Produkten kommunizieren.

App Hosting Standorte

Bei der App Hosting-Bereitstellung werden Ihre Backend-Ressourcen an einem bestimmten Ort erstellt. Diese Flexibilität beim Speicherort Ihrer Webanwendung bietet wichtige Vorteile:

  • Verbesserte Leistung und geringere Latenz, da die Daten geografisch näher an den Nutzern liegen.
  • Ein schwerwiegender Ausfall von App Hosting in einer Region hat keine Auswirkungen auf Web-Apps, die in anderen Regionen bereitgestellt werden.

Sie können eine dieser Regionen auswählen, wenn Sie ein App Hosting-Backend über die Console oder die Firebase-Befehlszeile erstellen:

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

Das App Hosting-Backend-Dienstkonto

Während des Builds und zur Laufzeit authentifiziert sich Ihr App Hosting-Backend mit einem Dienstkonto bei anderen Google-Diensten. Ein Standarddienstkonto für diese Zwecke wird erstellt, wenn Sie App Hosting zum ersten Mal in einem Firebase-Projekt aktivieren:

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

Dieses Dienstkonto gilt standardmäßig für alle Backends und hat eine minimale Anzahl von Berechtigungen, mit denen Sie Ihre App erstellen, ausführen und überwachen können. Außerdem ist es berechtigt, das Admin SDK mit Standardanmeldedaten für Anwendungen zu authentifizieren, um Vorgänge wie das Laden von Daten aus Cloud Firestore auszuführen. Weitere Informationen finden Sie unter Firebase-App HostingRollen.

Wenn Ihre App entweder beim Build oder über ein laufendes Backend mit zusätzlichen Google-Diensten interagieren muss, können Sie das Standarddienstkonto anpassen, indem Sie Rollen hinzufügen. Wenn Ihre App beispielsweise Berechtigungen für Vertex AI benötigt, müssen Sie möglicherweise roles/aiplatform.user oder eine ähnliche Rolle hinzufügen.

Wichtige Begriffe und Definitionen

  • Backend: Die Sammlung verwalteter Ressourcen, die App Hosting zum Erstellen und Ausführen Ihrer Webanwendung erstellt.
  • Roll-out: Eine bestimmte Version Ihrer Live-App, die mit einem Git-Commit verknüpft ist.
  • Live-Zweig: Der Zweig Ihres GitHub-Repositories, der auf Ihre Live-URL bereitgestellt wird. Häufig ist es der Branch, in den Feature- oder Entwicklungszweige zusammengeführt werden.

Bekannte Probleme und Beschränkungen

Die App Hosting-Vorabversion hat einige bekannte Einschränkungen:

  • In einigen Fällen kann ein App Hosting-Backend Intermittent connection error-Nachrichten an die URL Ihrer App zurückgeben. Eine Lösung wird in einer späteren Version verfügbar sein.
  • Cache-Control-Header werden so geändert, dass CDN-Caches auf 60 Sekunden begrenzt werden. Sobald App Hosting in Zukunft die Möglichkeit hat, den Cache bei der Bereitstellung schnell zu leeren, wird dieses Limit aufgehoben.
  • Die Bildoptimierung erfolgt in Cloud Run standardmäßig und optimierte Bilder werden nicht beibehalten. Wir empfehlen, die Bildoptimierung zu deaktivieren oder einen Loader manuell anzugeben, bis eine bessere Lösung verfügbar ist.
  • Nicht im Cache gespeicherte statische Dateien werden von Cloud Run ausgeliefert. In einer späteren Version werden sie zur Leistungssteigerung vom App Hosting-Ursprung gespeichert und ausgeliefert.
  • App Hosting Artikelnummern werden möglicherweise nicht auf der Seite „Backend-Nutzung“ in der Firebase-Konsole angezeigt. Sie werden in einer späteren Version verfügbar sein.
  • In der Firebase-Konsole wird beim Erstellen des Backends gelegentlich die Fehlermeldung „Build wurde nicht gefunden und ist ungültig“ angezeigt.
  • Derzeit teilen sich alle Back-Ends im selben Projekt eine GitHub-Organisation/ein GitHub-Konto. Sie können mit verschiedenen Repositories in dieser Organisation/diesem Konto verbunden sein. Wenn Sie Backends erstellen möchten, die mit verschiedenen GitHub-Konten verbunden sind, platzieren Sie sie in separaten Projekten.
  • Next.js-Middleware, Rewrites und Weiterleitungen werden in Cloud Run hinter dem CDN ausgeführt. Da diese nicht für gecachte Antworten gelten, müssen Sie für die gerenderten Inhalte entsprechende Steuerrichtlinien festlegen.