App Lifecycle Manager-Funktionsflags – Übersicht

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:

  1. Integriert: Verknüpfen Sie die Flag-Verwaltung mit Ihren Anwendungsbereitstellungen, die von App Lifecycle Manager verwaltet werden.
  2. 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):

  1. 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.
  2. 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.
  3. 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 Dienstendpunkt saasconfig.googleapis.com her. 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 key an, 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 des flagd-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_id an, 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