App Hosting und seine Funktionsweise

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

Wichtige Begriffe und Definitionen

Um die Details des App Hosting-Ablaufs zu verstehen, ist es hilfreich, einige der Begriffe genauer zu definieren. Hier sind die grundlegenden Schlüsselbegriffe:

  • Backend: Die Sammlung verwalteter Ressourcen, die von App Hosting zum Erstellen und Ausführen Ihrer Web-App erstellt werden.
  • Build:Eine bestimmte Version Ihrer App, die in der Regel mit einem Git-Commit verknüpft ist. Der Prozess zum Erstellen eines Builds umfasst zahlreiche Teilprozesse, insbesondere das Erstellen Ihrer App in Cloud Build und die Bereitstellung einer Revision (die anfangs 0% des Traffics bedient, bis sie eingeführt wird) in Cloud Run.
  • Rollout: Der Prozess, bei dem ein Build für die aktive Bereitstellung von Traffic eingerichtet wird. Wenn App Hosting automatisch durch einen Git-Commit ausgelöst wird, wird zuerst ein Build mit Ihrem Live-Zweig erstellt und dann ein Roll-out, um Live-Traffic darauf zu leiten.
  • Live-Branch: Der Branch Ihres GitHub-Repositorys, der unter Ihrer Live-URL bereitgestellt wird. Häufig ist es der Branch, in den Feature- oder Entwicklungs-Branches zusammengeführt werden.

Google Cloud- und App Hosting-Architektur

App Hosting koordiniert eine Reihe von Google Cloud-Produkten, damit Sie Ihre Webanwendung bereitstellen, bereitstellen und überwachen können. Apps werden mit Cloud Build erstellt, auf Cloud Run bereitgestellt und in Cloud CDN im Cache gespeichert. Integrierte Dienste wie Cloud Secret Manager sorgen für die Sicherheit Ihrer API-Schlüssel.

Ein Diagramm der auf dieser Seite beschriebenen Architektur.

  1. Wenn ein Commit in Ihren Live-Branch übertragen wird, sendet Google Cloud Developer Connect ein Ereignis an Firebase App Hosting.
  2. Als Reaktion auf dieses Ereignis erstellt Firebase App Hosting einen neuen Build für das mit dem Repository verbundene Backend.
    1. Zuerst wird mit Firebase App Hosting ein neuer Cloud Build-Build für Ihren Commit erstellt. In diesem Job wird anhand von Google Cloud-Buildpacks ermittelt, welches Framework in Ihrer Anwendung verwendet wird, um einen Container und eine Konfiguration zu erstellen, die für Ihre Anwendung geeignet ist. Dazu gehören Umgebungsvariablen, Secrets, Mindest- oder Höchstanzahl von Instanzen, Nebenläufigkeitsspeicher, CPU und VPC-Konfiguration. Weitere Informationen finden Sie unter App Hosting-Build-Prozess.
    2. Wenn der Cloud Build-Job abgeschlossen ist, wird Ihr Container in einem Artifact Registry-Repository gespeichert, das für Firebase App Hosting vorgesehen ist. Firebase App Hosting fügt dann eine neue Cloud Run-Revision zu einem Cloud Run-Dienst hinzu, wobei Ihr Image und Ihre Konfiguration verwendet werden.
  3. Sobald die Cloud Run-Version fertiggestellt und als fehlerfrei bestätigt wurde, ändert Firebase App Hosting die Traffic-Konfiguration so, dass alle neuen Anfragen an die neue Cloud Run-Version weitergeleitet werden. Der Roll-out ist jetzt abgeschlossen.
  4. Wenn eine Anfrage an eine auf Firebase App Hosting gehostete Website gesendet wird, wird die Anfrage vom Google Cloud Load Balancer mit aktiviertem Cloud CDN verarbeitet. Nicht im Cache gespeicherte Anfragen werden an Ihren Cloud Run-Dienst gesendet. Unter App-Inhalte im Cache speichern finden Sie Informationen dazu, wie Sie die Leistung mit Cloud CDN optimieren können.

Framework-Integration

App Hosting bietet vorkonfigurierte Unterstützung für das Erstellen und Bereitstellen von Webanwendungen, die in den folgenden Frameworks entwickelt wurden:

  • Next.js 13.5.x und höher
  • Angular 18.2.x und höher

Weitere Informationen zu bestimmten Versionen und Supportstufen finden Sie in den Zeitplänen für die Laufzeitunterstützung.

Neben Next.js und Angular unterstützt App Hosting auch jedes Web-Framework, das eine Build-Ausgabe liefern kann, die unserer Spezifikation für Ausgabebundles entspricht. Weitere Informationen zu Frameworks, Framework-Adaptern und zugehörigen Tools, die von App Hosting unterstützt werden, finden Sie unter Frameworks und Tools für App Hosting.

So funktioniert die App Hosting-Repository-Integration

Die wichtige Verbindung zwischen Ihrem GitHub-Repository und dem App Hosting-Backend wird von Developer Connect, der Verbindungsplattform von Google Cloud für externe DevOps-Tools, verwaltet. Wenn Sie diese Verbindung einrichten (in der Regel beim Erstellen eines App Hosting-Back-Ends), werden Sie im 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 kann das System Anmeldedaten sicher als „Secrets“ in Cloud Secret Manager speichern.
  2. Sie autorisieren die Firebase GitHub-App, auf Ihr GitHub-Repository zuzugreifen. Möglicherweise benötigen Sie zusätzliche GitHub-Berechtigungen, um auf das richtige Repository zuzugreifen.
  3. In Developer Connect wird ein dediziertes GitHub-Autorisierungstoken im Secret Manager-Repository Ihres Projekts gespeichert. Ändern oder löschen Sie dieses Token nicht.

Außerdem wird App Hosting in die GitHub Checks API eingebunden, um eine Prüfung für Rollouts zu ermöglichen. Mit dieser Prüfung können Sie den Status Ihres Roll-outs in GitHub einsehen und den Bereitstellungsprozess bei Fehlern debuggen.

Einbindung in Firebase und andere Google-Dienste

App Hosting richtet sowohl Ihre Build- als auch Ihre Laufzeitumgebung ein, damit Sie das Firebase Admin SDK mit Standardanmeldedaten für Anwendungen initialisieren können. So kann Ihr Backend sowohl zur Build- als auch zur Laufzeit mit anderen Firebase-Produkten kommunizieren. Weitere Informationen zum Initialisieren Ihrer App und zu anderen Themen im Zusammenhang mit dem Firebase SDK finden Sie unter Firebase SDKs in Ihre Web-App einbinden.

App Hosting Standorte

Mit App Hosting werden Ihre Backend-Ressourcen an einem bestimmten Ort erstellt, der als primäre Region bezeichnet wird. App Hosting ist in ein globales CDN für eine schnelle Bereitstellung integriert. Nicht im Cache gespeicherte Inhalte werden jedoch aus der primären Region Ihrer App bereitgestellt. Diese Flexibilität bei der Positionierung Ihrer Web-App bietet wichtige Vorteile:

  • Verbesserte Leistung und geringere Latenz, da die Daten geografisch näher an Ihren Nutzern sind.
  • Ein schwerwiegender Fehler für 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 Firebase-Konsole oder die Firebase-CLI erstellen:

  • us-central1 (Iowa)
  • us-east4 (N. Virginia)
  • us-east5 (Columbus)
  • asia-east1 (Taiwan)
  • asia-southeast1 (Singapur)
  • 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 Back-Ends und hat eine minimale Anzahl von Berechtigungen, damit Sie Ihre App erstellen, ausführen und überwachen können. Außerdem hat es die Berechtigung, 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 während der Build-Phase 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.