Mit App Lifecycle Manager-Feature-Flags können Sie die Verfügbarkeit und das Verhalten von Funktionen in Ihren Anwendungen steuern, ohne dass neue Codebereitstellungen oder Infrastrukturänderungen erforderlich sind.
Sie können Flags auf zwei Arten verwenden:
- Integriert:Die Verwaltung von Flags wird mit Ihren Anwendungsbereitstellungen verknüpft, die von App Lifecycle Manager verwaltet werden.
- Eigenständig:Sie können das robuste Kennzeichnungssystem unabhängig verwenden, auch wenn Ihre Anwendungsinfrastruktur an anderer Stelle verwaltet wird. Dazu müssen Sie Ihre Systemkomponenten als App Lifecycle Manager-Einheiten modellieren.
Funktions-Flags sind in die Kernkonzepte von App Lifecycle Manager wie Einheiten und Rollouts integriert. So können Sie Flag-Konfigurationen zusammen mit Ihrer Anwendungsinfrastruktur verwalten (integrierter Ansatz).
Sehen Sie sich die App Lifecycle Manager-Übersicht an, wenn Sie mit App Lifecycle Manager-Einheiten oder ‑Rollouts nicht vertraut sind.
Warum sollte ich Funktions-Flags in App Lifecycle Manager verwenden?
Wenn Sie Feature-Flags mit App Lifecycle Manager implementieren, ergeben sich mehrere Vorteile für den Entwicklungs- und Betriebslebenszyklus Ihrer SaaS-Lösung:
- Funktionsveröffentlichungen von Codebereitstellungen entkoppeln:Stellen Sie neuen Code in der Produktion bereit, wobei die Funktionen standardmäßig deaktiviert sind. Sie können Funktionen für bestimmte Nutzer aktivieren oder sie nach und nach einführen, wenn sie bereit sind. So lässt sich das Risiko großer Bereitstellungen verringern.
- Sicherheit, Geschwindigkeit und Zuverlässigkeit erhöhen:
- Funktionen in der Produktion mit einer begrenzten Zielgruppe testen (Canary-Releases).
- Führen Sie schrittweise Einführungen mit den Rollout-Funktionen von App Lifecycle Manager durch, um die Auswirkungen potenzieller Probleme zu minimieren.
- Allowlisting und Mandantenanpassung aktivieren:Sie können Funktionen für Einheiten aktivieren oder deaktivieren, die Mandanten, Dienste oder Umgebungen darstellen können.
- Rollbacks vereinfachen:Wenn Sie ein Funktions-Flag deaktivieren, ist das oft viel schneller und weniger störend als die Bereitstellung einer früheren Version Ihrer Anwendung. Mit diesem Workflow können Sie problematische Funktionen deaktivieren, ohne Binärdateien zurückzusetzen.
- Einheitliche Verwaltung von Flag-Konfigurationen:Sie können Funktions-Flag-Definitionen verwalten und damit Rollouts konfigurieren. Dieser Workflow bietet betriebliche Zuverlässigkeit, da Sie die Funktionalität Ihrer Anwendung ändern können, indem Sie Funktions-Flag-Rollouts erstellen.
So funktionieren Feature-Flags in App Lifecycle Manager
Die Verwendung von Feature-Flags in App Lifecycle Manager umfasst zwei Hauptaspekte: die Verwaltungsebene (Flags definieren und einführen) und die Datenebene (auf Flag-Werte in Ihrer Anwendung zugreifen).
Integrierte Nutzung mit App Lifecycle Manager
Wenn Sie App Lifecycle Manager zum Verwalten Ihrer Anwendungsbereitstellungen verwenden (z. B. zum Bereitstellen von Infrastruktur mit Terraform-Blueprints):
- Funktions-Flags definieren:Erstellen Sie Ressourcen für Funktions-Flags in App Lifecycle Manager. Geben Sie dazu eine eindeutige
Flag keyan (z. B.enable-new-dashboard) und weisen Sie sie einer Art von Einheit zu. Boolesche Flags werden unterstützt. - Änderungen an Bereitstellungsflags:Änderungen an Flags (Erstellung oder Aktualisierung) werden erst wirksam, wenn Sie ein App Lifecycle Manager-Roll-out starten. So können Sie Funktionen wie Batch-Bereitstellungen, Aufsicht und Sicherheitschecks für Flag-Bereitstellungen nutzen. Beim Roll-out wird die Flag-Konfiguration aktualisiert, die den Zielgeräten zugeordnet ist.
- Auf Flags in der Anwendung zugreifen:Ihr Anwendungscode, der in der bereitgestellten Einheit ausgeführt wird (z. B. in einem Container in Cloud Run oder Google Kubernetes Engine), verwendet ein OpenFeature SDK, das mit dem
flagd-Anbieter konfiguriert ist. Dieser Anbieter stellt eine Verbindung zum Dienstendpunktsaasconfig.googleapis.comher. Mit App Lifecycle Manager können Sie die erforderliche Einheiten-ID in Ihre Anwendungsumgebung einschleusen, sodass das SDK die richtigen Flag-Werte für diese bestimmte Einheit abrufen kann.
Durch diese enge Integration können Sie den Lebenszyklus von Funktionen zusammen mit dem Lebenszyklus der Infrastruktur verwalten. Ein praktisches Beispiel finden Sie in der Kurzanleitung zum Bereitstellen von Feature-Flags.
Verwaltungsebene
Sie interagieren mit der Verwaltungsebene, um Ihre Flags zu definieren und zu steuern. Sie können die Google Cloud Console, die gcloud CLI oder die App Lifecycle Manager API verwenden, um:
- Flags erstellen oder aktualisieren: Um Flags zu definieren, geben Sie das
Flag keyan, ordnen es einer Einheit zu und legen den Typ und den Standardwert fest. - Rollouts erstellen: Sie starten einen Rollout, um Flag-Änderungen (Erstellungen oder Aktualisierungen) an die Ziel-Units zu verteilen, die zum Unit-Typ des Flags gehören. Roll-outs sorgen dafür, dass Änderungen gemäß Ihren konfigurierten Richtlinien sicher und zuverlässig angewendet werden.
Datenebene
Ihr Anwendungscode interagiert mit der Datenebene, um Flag-Werte zu nutzen:
- OpenFeature SDK:Integrieren Sie das anbieterneutrale OpenFeature SDK in Ihre Anwendung.
flagd-Anbieter:Konfigurieren Sie das OpenFeature SDK für die Verwendung desflagd-Anbieters.- Konfiguration:Verweisen Sie den
flagd-Anbieter auf den Dienstendpunkt für das App Lifecycle Manager-Funktions-Flag:saasconfig.googleapis.com:443. - Ausrichtung: Geben Sie
provider_idan, um die Flag-Konfiguration zu identifizieren. Dieser Wert entspricht in der Regel dem vollständigen Ressourcennamen der App Lifecycle Manager-Einheit (z. B.projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID). - Authentifizierung:Der Anbieter verwendet Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC), um Anfragen an den Google Cloud Dienstendpunkt sicher zu authentifizieren. Das verwendete Dienstkonto benötigt Identity and Access Management-Rolle
roles/saasconfig.viewer. - Flag-Auswertung:Verwenden Sie OpenFeature-Standardmethoden (
client.get_boolean_value(...)) in Ihrem Code, um Flag-Werte zu prüfen. Der Anbieter ruft die zuletzt eingeführte Konfiguration vom Dienst ab.
App Lifecycle Manager bietet Referenzimplementierungen und Beispiele für die Integration in die Datenebene:
Werttypen für Funktions-Flags
App Lifecycle Manager-Funktionsflags unterstützen mehr als nur boolesche Standardauswertungen (Ein/Aus). Sie können Flags mit den Werten STRING, INTEGER oder DOUBLE definieren, um komplexe Betriebsvariablen wie Laufzeitschwellenwerte, Designparameter oder Konfigurationslimits zu steuern.
Im Gegensatz zu booleschen Flags müssen Sie nicht boolesche Flags bei der Erstellung explizit definieren, um den Bereich der möglichen Rückgabetypen festzulegen.
String-Flags
Mit String-Flags werden Konfigurations-IDs direkt an verbundene Clients übergeben.
gcloud beta app-lifecycle-manager flags create "feature-mode" \
--key="feature-mode" \
--flag-value-type=STRING \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "standard", "stringValue": "STANDARD"}, {"id": "advanced", "stringValue": "ADVANCED"}]' \
--evaluation-spec='{"defaultTarget": "standard"}'
Ganzzahl-Flags
Ganzzahl-Flags steuern genaue numerische Grenzwerte und Nutzlastgrenzen.
gcloud beta app-lifecycle-manager flags create "max-retry-count" \
--key="max-retry-count" \
--flag-value-type=INTEGER \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "low", "integerValue": 3}, {"id": "high", "integerValue": 10}]' \
--evaluation-spec='{"defaultTarget": "low"}'
Doppelte Flags
Double-Flags liefern hochpräzise Werte, die für Wahrscheinlichkeitsschwellen oder Gleitkommaparameter verwendet werden.
gcloud beta app-lifecycle-manager flags create "sampling-rate" \
--key="sampling-rate" \
--flag-value-type=DOUBLE \
--location="global" \
--unit-kind="demo-test-unitkind" \
--variants='[{"id": "minimal", "doubleValue": 0.01}, {"id": "full", "doubleValue": 1.0}]' \
--evaluation-spec='{"defaultTarget": "minimal"}'
Funktions-Flags mithilfe von Roll-outs bereitstellen
Mit App Lifecycle Manager lassen sich Änderungen oder Updates sicher und in großem Umfang vornehmen, indem Rollouts zum Bereitstellen von Funktions-Flag-Updates verwendet werden.
Ohne stufenweise Einführung wird eine geringfügige Änderung der Flag-Konfiguration (z. B. Aktivieren einer Funktion für 1% der Nutzer) sofort auf alle Anwendungsinstanzen übertragen. Wenn durch diese Funktion eine Regression eingeführt wird, können Probleme gleichzeitig in Ihrer gesamten Infrastruktur auftreten. Diese globale Weitergabe erhöht das Risiko einer weitverbreiteten Beeinträchtigung des Dienstes erheblich.
App Lifecycle Manager-Rollouts minimieren dieses Risiko, da Flag-Änderungen schrittweise und kontrolliert verteilt werden können. So wird das potenzielle Ausmaß unvorhergesehener Probleme begrenzt.
Funktions-Flag-Sätze
Mit Funktions-Flag-Sets können Sie mehrere Funktions-Flags gruppieren und als einzelne logische Ressource verwalten. Das ist nützlich, wenn Sie Funktionen veröffentlichen möchten, für die mehrere Flags koordiniert werden müssen.
Weitere Informationen zu Flag-Sets
Manifeste
Mit Manifesten können Sie Feature-Flags mithilfe von JSON-Dateien definieren und verwalten. Sie können diese Definitionen an die App Lifecycle Manager API senden oder vorhandene Konfigurationen abrufen, um typsichere Accessoren für Ihre Anwendung zu generieren.
Weitere Informationen zu Manifesten
Komplexes Targeting
Mit der Common Expression Language (CEL) können Sie ausgefeilte Targeting-Regeln basierend auf Nutzer- oder Anfrageattributen erstellen, um genau zu steuern, welche Nutzer welche Funktionen sehen.
Weitere Informationen zum komplexen Targeting
Mehrmandantenfähige Architektur
Sie können mehrmandantenfähige Bereitstellungen mit App Lifecycle Manager verwenden, wenn Sie Flags auf bestimmte Einheiten oder Gruppen von Einheiten ausrichten (mit Labels oder Mandanten). Sie können auch schrittweise Einführungen für alle Mandanten durchführen.
Weitere Informationen zur Mandantenarchitektur
Funktions-Flags zuweisen
Sie können Zuweisungen wie Test oder Ausgangswert definieren und Traffic-Splitting für Tests oder randomisierte Einführungen verwenden.
Weitere Informationen zu Zuweisungen von Feature-Flags
Nächste Schritte
- Schnellstart: Feature-Flags bereitstellen ausprobieren, um Flags in eine von App Lifecycle Manager verwaltete Bereitstellung einzubinden.
- Wenn Sie die Plattform noch nicht kennen, lesen Sie die Übersicht über App Lifecycle Manager.