App Hosting und seine Funktionsweise

App Hosting übernimmt eine komplexe Reihe von Hintergrundaufgaben, um die Bereitstellung Ihrer App zu vereinfachen. Auf dieser Seite werden die wichtigsten Teile dieses Aufgabenablaufs beschrieben und Informationen zu Punkten bereitgestellt, 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 Begriffe sehr genau zu definieren. Hier sind die grundlegenden Schlüsselbegriffe:

  • Backend: Die Sammlung verwalteter Ressourcen, die App Hosting erstellt, um Ihre Webanwendung zu erstellen und auszuführen.
  • Build:Eine bestimmte Überarbeitung Ihrer App, die in der Regel mit einem Git-Commit verknüpft ist. Der Prozess zum Erstellen eines Builds umfasst zahlreiche Unterprozesse, insbesondere das Erstellen Ihrer App in Cloud Build, und die Bereitstellung einer Überarbeitung (die anfangs 0% des Traffics verarbeitet, bis sie eingeführt wird) in Cloud Run.
  • Rollout: Der Prozess, bei dem ein Build so festgelegt wird, dass er aktiv Traffic verarbeitet. Wenn er automatisch durch einen Git-Commit ausgelöst wird, App Hosting erstellt App Hosting zuerst einen Build mit Ihrem Live-Branch und dann einen Rollout, um den Live-Traffic darauf zu lenken.
  • Live-Branch: Der Branch Ihres GitHub-Repositorys, der unter Ihrer Live-URL bereitgestellt wird. Oft ist es der Branch, in den Feature- oder Entwicklungs-Branches zusammengeführt werden.

Google Cloud- und App Hosting Architektur

App Hosting orchestriert eine Reihe von Google Cloud-Produkten, damit Sie Ihre Webanwendung bereitstellen, bereitstellen und überwachen können. Apps werden mit Cloud Build, in Cloud Run bereitgestellt und in Cloud CDN im Cache gespeichert. Integrierte Dienste wie Cloud Secret Manager schützen Ihre 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 erstellt Firebase App Hosting einen neuen Cloud Build Build für Ihren Commit. In diesem Job, Google Cloud-Buildpacks bestimmen, welches Framework in Ihrer Anwendung verwendet wird, um einen Container und eine Konfiguration (einschließlich Umgebungsvariablen, Secrets, Mindest- oder Höchstanzahl von Instanzen, Parallelitätsspeicher, CPU und VPC-Konfiguration) zu erstellen, die für Ihre Anwendung geeignet sind. Weitere Informationen finden Sie unter dem App Hosting Buildprozess Für weitere Informationen.
    2. Wenn der Cloud Build Job abgeschlossen ist, wird Ihr Container in einem Artifact Registry Repository gespeichert, das für Firebase App Hosting bestimmt ist. Firebase App Hosting fügt dann einem Cloud Run Dienst mit Ihrem Image und Ihrer Konfiguration eine neue Cloud Run Überarbeitung hinzu.
  3. Sobald Ihre Cloud Run Überarbeitung abgeschlossen und als fehlerfrei bestätigt wurde, Firebase App Hosting ändert die Traffic-Konfiguration so, dass alle neuen Anfragen an Ihre neue Cloud Run Überarbeitung weitergeleitet werden. An diesem Punkt ist der Rollout abgeschlossen.
  4. Wenn eine Anfrage an eine Website gesendet wird, die in Firebase App Hosting gehostet wird, wird die Anfrage vom Google Cloud Load Balancer mit aktiviertem Cloud CDN verarbeitet. Anfragen, die nicht im Cache gespeichert sind, werden an Ihren Cloud Run Dienst gesendet. Unter App-Inhalte im Cache speichern finden Sie eine Anleitung zur Leistungsoptimierung mit Cloud CDN.

Framework-Integration

App Hosting bietet vorkonfigurierten Build- und Bereitstellungssupport für Webanwendungen , die in diesen 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 Supportplänen für Details.

Neben Next.js und Angular unterstützt App Hosting auch alle Web Frameworks, die eine Build-Ausgabe liefern können, 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 Konnektivitätsplattform von Google Cloud für externe DevOps-Tools verwaltet. Wenn Sie diese Verbindung einrichten (in der Regel bei der Erstellung eines App Hosting Backends), führt Sie der UI-Workflow von Developer Connect durch die Installation der Firebase GitHub-App. Die wichtigsten Schritte in diesem Prozess sind:

  1. Sie gewähren Developer Connect die Rolle „Secret Manager-Administrator“. Dadurch kann das System Anmeldedaten sicher als "Secrets" in Cloud Secret Manager speichern.
  2. Sie autorisieren die Firebase GitHub-App für den Zugriff auf Ihr GitHub-Repository. Möglicherweise benötigen Sie zusätzliche GitHub-Berechtigungen, um auf das richtige Repository zuzugreifen.
  3. Developer Connect speichert ein dediziertes GitHub-Autorisierungstoken im Secret Manager-Repository Ihres Projekts. Ändern oder löschen Sie dieses Token nicht.

Außerdem lässt sich App Hosting in die GitHub Checks API einbinden, um eine Überprüfung für Rollouts bereitzustellen. Mit dieser Überprüfung können Sie den Status Ihres Rollouts in GitHub ansehen und den Bereitstellungsprozess bei Fehlern debuggen.

Integration mit Firebase und anderen Google-Diensten

App Hosting richtet sowohl Ihre Build- als auch Ihre Laufzeitumgebung ein, damit Sie das Firebase Admin SDK mit Standardanmeldedaten für Anwendungen von Google 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 Integrate Firebase SDKs in your web app.

App Hosting Standorte

App Hosting erstellt Ihre Backend-Ressourcen an einem bestimmten Standort, der als primäre Region bezeichnet wird. Während App Hosting in ein globales CDN integriert ist, um eine schnelle Bereitstellung zu ermöglichen, werden nicht im Cache gespeicherte Inhalte aus der primären Region Ihrer App bereitgestellt. Diese Flexibilität beim Standort Ihrer Webanwendung bietet wichtige Vorteile:

  • Verbesserte Leistung und geringere Latenz, da die Daten geografisch näher an Ihren Nutzern gespeichert werden.
  • Ein katastrophaler Fehler bei App Hosting in einer Region wirkt sich nicht auf Webanwendungen aus, 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 Backends und hat eine minimale Anzahl von Berechtigungen, mit denen Sie Ihre App erstellen, ausführen und überwachen können. Es hat auch 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 entweder zur Build-Zeit 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 hinzufügen roles/aiplatform.user oder eine ähnliche Rolle.