Mit Funktions-Flags von App Lifecycle Manager können Sie die Verfügbarkeit und das Verhalten von Funktionen in Ihren Anwendungen steuern, ohne dass neue Code-Deployments oder Infrastrukturänderungen erforderlich sind.
Es gibt zwei Möglichkeiten, Flags zu verwenden:
- Integriert: Verknüpfen Sie die Flag-Verwaltung mit Ihren Anwendungsbereitstellungen, die von App Lifecycle Manager verwaltet werden.
- Eigenständig: Sie können das robuste Flagging-System unabhängig verwenden, auch wenn Ihre Anwendungsinfrastruktur an anderer Stelle verwaltet wird. Dazu modellieren Sie Ihre Systemkomponenten als App Lifecycle Manager-Einheiten.
Funktions-Flags lassen sich in die Kernkonzepte von App Lifecycle Manager wie Einheiten und Roll-outs einbinden. So können Sie Flag-Konfigurationen zusammen mit Ihrer Anwendungsinfrastruktur verwalten (integrierter Ansatz).
Wenn Sie mit App Lifecycle Manager-Einheiten oder ‑Rollouts nicht vertraut sind, lesen Sie die Übersicht zu App Lifecycle Manager.
Vorteile von Funktions-Flags in App Lifecycle Manager
Wenn Sie Funktions-Flags mit App Lifecycle Manager implementieren, bietet dies mehrere Vorteile für den Entwicklungs- und Betriebslebenszyklus Ihrer SaaS-Anwendung:
- Funktionsveröffentlichungen von Code-Deployments 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 bereitstellen, wenn sie bereit sind. So wird das Risiko im Zusammenhang mit großen Bereitstellungen reduziert.
- Mehr Sicherheit, Geschwindigkeit und Zuverlässigkeit:
- Funktionen in der Produktion mit einer begrenzten Zielgruppe testen (Canary-Releases)
- Führen Sie schrittweise Rollouts mit den Rollout-Funktionen von App Lifecycle Manager durch, um die Auswirkungen potenzieller Probleme zu minimieren.
- Zulassungsliste und Mandantenanpassung aktivieren: Aktivieren oder deaktivieren Sie Funktionen für Einheiten, die Mandanten, Dienste oder Umgebungen darstellen können.
- Rollbacks vereinfachen: Das Deaktivieren eines Funktions-Flags ist oft viel schneller und weniger störend als das Bereitstellen 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: Verwalten Sie Funktions-Flag-Definitionen und verwenden Sie sie, um Roll-outs zu konfigurieren. Dieser Workflow bietet Betriebssicherheit, da Sie die Funktionalität Ihrer Anwendung durch das Erstellen von Funktions-Flag-Roll-outs ändern können.
Funktionsweise von Funktions-Flags in App Lifecycle Manager
Die Verwendung von Funktions-Flags in App Lifecycle Manager umfasst zwei Hauptaspekte: die Verwaltungsebene (Flags definieren und bereitstellen) 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):
- Flags definieren: Erstellen Sie Funktions-Flag-Ressourcen in App Lifecycle Manager. Geben Sie dabei eine eindeutige
Flag key(z. B.enable-new-dashboard) an und verknüpfen Sie sie mit einer Einheitenart. Boolesche Flags werden unterstützt. - Flag-Änderungen bereitstellen: Änderungen an Flags (Erstellung oder Aktualisierung) werden erst wirksam, wenn Sie ein App Lifecycle Manager-Rollout starten. So können Sie Funktionen wie Batches, Überwachung und Sicherheitsprüfungen für Flag-Bereitstellungen verwenden. Beim Roll-out wird die Flag-Konfiguration aktualisiert, die den Zieleinheiten zugeordnet ist.
- Auf Flags in der Anwendung zugreifen: Ihr Anwendungscode, der in der bereitgestellten Einheit (z. B. in einem Container in Cloud Run oder Google Kubernetes Engine) ausgeführt wird, 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 einfügen, damit das SDK die richtigen Flag-Werte für diese bestimmte Einheit abrufen kann.
Durch diese tiefe Integration können Sie Feature-Lebenszyklen zusammen mit Infrastruktur-Lebenszyklen verwalten. Ein praktisches Beispiel finden Sie in der Kurzanleitung: Funktions-Flags bereitstellen.
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 für Folgendes verwenden:
- Flags erstellen oder aktualisieren: Zum Definieren von Flags geben Sie die
Flag keyan, verknüpfen sie mit einer Einheit und legen ihren Typ und Standardwert fest. - Roll-outs erstellen: Sie initiieren einen Roll-out, um Flag-Änderungen (Erstellungen oder Aktualisierungen) an die Ziel-Einheiten zu verteilen, die zum Einheitentyp 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 anbieterunabhängige OpenFeature 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 Funktions-Flags von App Lifecycle Manager:saasconfig.googleapis.com:443. - Targeting: Geben Sie die
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 die IAM-Rolle (Identity and Access Management)
roles/saasconfig.viewer. - Flag-Bewertung: Verwenden Sie in Ihrem Code Standard-OpenFeature-Methoden (
client.get_boolean_value(...)), um Flag-Werte zu prüfen. Der Anbieter ruft die neueste bereitgestellte Konfiguration vom Dienst ab.
App Lifecycle Manager bietet Referenzimplementierungen und Beispiele für die Einbindung in die Datenebene:
Werttypen für Funktions-Flags
Funktions-Flags in App Lifecycle Manager unterstützen mehr als nur boolesche Standardauswertungen (ein/aus). Sie können Flags mit STRING-, INTEGER- oder DOUBLE-Werten definieren, um komplexe operative Variablen wie Laufzeitschwellenwerte, Designparameter oder Konfigurationslimits zu steuern.
Im Gegensatz zu booleschen Flags müssen Sie nicht-boolesche Flags beim Erstellen explizit definieren, um die möglichen Rückgabetypen festzulegen.
String-Flags
String-Flags übergeben Konfigurationskennungen direkt an verbundene Clients.
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
Integer-Flags steuern genaue numerische Limits 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 Wahrscheinlichkeitsschwellenwerte 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
App Lifecycle Manager sorgt für sichere Änderungen oder Updates im großen Maßstab, indem Rollouts verwendet werden, um Funktions-Flag-Updates bereitzustellen.
Ohne gestaffelte Roll-outs wird eine geringfügige Änderung der Flag-Konfiguration (z. B. die Aktivierung einer Funktion für 1% der Nutzer) sofort auf alle Anwendungsinstanzen übertragen. Wenn dieses Feature eine Regression einführt, können Probleme gleichzeitig in Ihrer gesamten Infrastruktur auftreten. Diese globale Weitergabe erhöht das Risiko, dass sich die Auswirkungen auf den Dienst ausbreiten, erheblich.
Mit App Lifecycle Manager-Rollouts wird dieses Risiko minimiert, da Flag-Änderungen schrittweise und kontrolliert verteilt werden können. So wird der potenzielle Umfang unvorhergesehener Probleme begrenzt.
Funktions-Flag-Sätze
In Funktions-Flag-Sets werden mehrere Funktions-Flags zusammengefasst, sodass Sie sie als eine einzige logische Ressource verwalten können. Dies ist nützlich, um Funktionen zu veröffentlichen, für die mehrere Flags koordiniert werden müssen.
Weitere Informationen zu Flag-Sets
Manifeste
Mit Manifesten können Sie Funktions-Flags mithilfe von JSON-Dateien definieren und verwalten. Sie können diese Definitionen an die App Lifecycle Manager API übertragen oder vorhandene Konfigurationen abrufen, um typsichere Zugriffsfunktionen für Ihre Anwendung zu generieren.
Weitere Informationen zu Manifesten
Komplexes Targeting
Mit der Common Expression Language (CEL) können Sie komplexe Targeting-Regeln basierend auf Nutzer- oder Anfrageattributen erstellen, um genau zu steuern, welche Nutzer welche Funktionen sehen.
Weitere Informationen zum komplexen Targeting
Mandantenfähige Architektur
Sie können mehrmandantenfähige Bereitstellungen mit App Lifecycle Manager verwenden, wenn Sie Flags auf bestimmte Einheiten oder Gruppen von Einheiten (mithilfe von Labels oder Mandanten) ausrichten. Sie können auch schrittweise Roll-outs in Ihrer Mandantenflotte implementieren.
Weitere Informationen zur Mehrmandanten-Architektur
Funktions-Flags zuweisen
Definieren Sie Zuweisungen (z. B. experimentell oder Baseline) und verwenden Sie die Trafficaufteilung, um Tests oder zufällige Roll-outs durchzuführen.
Weitere Informationen zu Funktions-Flag-Zuweisungen
Nächste Schritte
- In der Kurzanleitung zum Bereitstellen von Funktions-Flags erfahren Sie, wie Sie Flags in eine von App Lifecycle Manager verwaltete Bereitstellung einbinden.
- Wenn Sie neu auf der Plattform sind, lesen Sie die Übersicht über den App Lifecycle Manager.