Panoramica dei feature flag di App Lifecycle Manager

I flag di funzionalità di App Lifecycle Manager ti consentono di controllare la disponibilità e il comportamento delle funzionalità all'interno delle tue applicazioni, senza richiedere nuovi deployment di codice o modifiche all'infrastruttura.

Puoi utilizzare i flag in due modi principali:

  1. Integrazione: combina la gestione dei flag con i deployment delle applicazioni gestiti da App Lifecycle Manager.
  2. Autonoma: utilizza il solido sistema di flag in modo indipendente, anche se l'infrastruttura della tua applicazione è gestita altrove, modellando i componenti del sistema come unità di App Lifecycle Manager.

I flag di funzionalità si integrano con i concetti di base di App Lifecycle Manager, come le unità e i rollout. In questo modo puoi gestire le configurazioni dei flag insieme all'infrastruttura dell'applicazione (approccio integrato).

Se non hai dimestichezza con le unità o i rollout di App Lifecycle Manager, consulta la panoramica principale di App Lifecycle Manager.

Perché utilizzare i flag di funzionalità di App Lifecycle Manager?

L'implementazione dei flag di funzionalità con App Lifecycle Manager offre diversi vantaggi per il ciclo di vita dello sviluppo e delle operazioni SaaS:

  • Disaccoppia le release delle funzionalità dai deployment del codice: invia il nuovo codice in produzione con le funzionalità disabilitate per impostazione predefinita. Attiva le funzionalità per utenti specifici o eseguine il deployment gradualmente quando sono pronte, riducendo il rischio associato ai deployment di grandi dimensioni.
  • Aumenta la sicurezza, la velocità e l'affidabilità:
    • Testare le funzionalità in produzione con un pubblico limitato (versioni canary).
    • Esegui implementazioni graduali utilizzando le funzionalità di implementazione di App Lifecycle Manager, riducendo al minimo l'impatto di potenziali problemi.
  • Attiva la lista consentita e la personalizzazione dei tenant:attiva o disattiva le funzionalità per le unità che possono rappresentare tenant, servizi o ambienti.
  • Semplifica i rollback: la disattivazione di un flag funzionalità è spesso molto più rapida e meno invasiva rispetto al deployment di una versione precedente dell'applicazione. Questo flusso di lavoro ti consente di disattivare le funzionalità problematiche senza eseguire il rollback dei binari.
  • Gestione unificata delle configurazioni dei flag: gestisci le definizioni flag funzionalità e utilizzale per configurare i rollout. Questo workflow garantisce l'affidabilità operativa consentendoti di modificare la funzionalità della tua applicazione creando implementazioni di flag funzionalità.

Come funzionano i flag di funzionalità di App Lifecycle Manager

L'utilizzo dei flag di funzionalità in App Lifecycle Manager prevede due aspetti principali: il piano di gestione (definizione e deployment dei flag) e il piano dati (accesso ai valori dei flag all'interno dell'applicazione).

Utilizzo integrato con App Lifecycle Manager

Se utilizzi App Lifecycle Manager per gestire i deployment delle tue applicazioni (ad esempio, il deployment dell'infrastruttura utilizzando i blueprint Terraform):

  1. Definisci i flag: crea risorse di flag funzionalità all'interno di App Lifecycle Manager, specificando un Flag key univoco (ad esempio enable-new-dashboard) e associandolo a un tipo di unità. I flag booleani sono supportati.
  2. Modifiche ai flag di provisioning: le modifiche ai flag (creazione o aggiornamenti) non sono attive finché non avvii un'implementazione di App Lifecycle Manager. In questo modo puoi utilizzare funzionalità come batch, supervisione e controlli di sicurezza per i deployment dei flag. L'implementazione aggiorna la configurazione del flag associata alle unità target.
  3. Accedi ai flag nell'applicazione: il codice dell'applicazione, in esecuzione all'interno dell'unità di cui è stato eseguito il provisioning (ad esempio, in un container su Cloud Run o Google Kubernetes Engine), utilizza un SDK OpenFeature configurato con il provider flagd. Questo provider si connette all'endpoint di servizio saasconfig.googleapis.com. Utilizzando App Lifecycle Manager, inserisci l'identificatore dell'unità necessario nell'ambiente dell'applicazione, consentendo all'SDK di recuperare i valori dei flag corretti per l'unità specifica.

Questa integrazione profonda ti consente di gestire i cicli di vita delle funzionalità insieme ai cicli di vita dell'infrastruttura. Per un esempio pratico, consulta la guida rapida Esegui il deployment dei flag di funzionalità.

Piano di gestione

Interagisci con il piano di gestione per definire e controllare i flag. Puoi utilizzare la console Google Cloud , gcloud CLI o l'API App Lifecycle Manager per:

  • Crea o aggiorna i flag: per definire i flag, specifica Flag key, associalo a un tipo di unità e imposta il tipo e il valore predefinito.
  • Crea implementazioni: avvia un'implementazione per distribuire le modifiche ai flag (creazioni o aggiornamenti) alle unità target appartenenti al tipo di unità del flag. Le implementazioni garantiscono che le modifiche vengano applicate in modo sicuro e affidabile in base alle policy configurate.

Piano dati

Il codice dell'applicazione interagisce con il piano dati per utilizzare i valori dei flag:

  • SDK OpenFeature: integra l'SDK OpenFeature indipendente dal fornitore nella tua applicazione.
  • Provider flagd:configura l'SDK OpenFeature per utilizzare il provider flagd.
  • Configurazione: indirizza il provider flagd all'endpoint del servizio di flag funzionalità di App Lifecycle Manager: saasconfig.googleapis.com:443.
  • Targeting: specifica provider_id per identificare la configurazione del flag. Questo valore corrisponde in genere al nome completo della risorsa dell'unità App Lifecycle Manager (ad esempio projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID).
  • Autenticazione: il provider utilizza le Credenziali predefinite dell'applicazione (ADC) per autenticare in modo sicuro le richieste all'endpoint di servizio Google Cloud . Il account di servizio utilizzato deve disporre del ruolo Identity and Access Management roles/saasconfig.viewer.
  • Valutazione dei flag: utilizza i metodi OpenFeature standard (client.get_boolean_value(...)) nel codice per controllare i valori dei flag. Il provider gestisce il recupero della configurazione di cui è stato eseguito il deployment più recente dal servizio.

App Lifecycle Manager fornisce implementazioni di riferimento ed esempi per l'integrazione con il piano dati:

Tipi di valori dei flag di funzionalità

I flag di funzionalità di App Lifecycle Manager supportano più delle valutazioni booleane on/off standard. Puoi definire i flag con valori STRING, INTEGER o DOUBLE per controllare variabili operative complesse come soglie di runtime, parametri dei temi o limiti di configurazione.

A differenza dei flag booleani, devi definire esplicitamente i flag non booleani durante la creazione per stabilire l'universo dei possibili tipi restituiti.

Flag di stringa

I flag di tipo stringa passano gli identificatori di configurazione direttamente ai client connessi.

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"}'

Flag di numeri interi

I flag di tipo intero regolano i limiti numerici esatti e i limiti del payload.

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"}'

Doppie bandiere

I flag Double forniscono valori ad alta precisione utilizzati per le soglie di probabilità o i parametri con virgola mobile.

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"}'

Esegui il provisioning dei flag di funzionalità utilizzando le implementazioni

App Lifecycle Manager garantisce modifiche o aggiornamenti sicuri su larga scala utilizzando i rollout per eseguire il provisioning degli aggiornamenti dei flag funzionalità.

Senza i rilasci graduali, una modifica minore alla configurazione dei flag (ad esempio, l'attivazione di una funzionalità per l'1% degli utenti) si propaga istantaneamente in tutte le istanze dell'applicazione. Se questa funzionalità introduce una regressione, i problemi possono verificarsi contemporaneamente in tutta l'infrastruttura. Questa propagazione globale aumenta notevolmente il rischio di un impatto diffuso sui servizi.

I rollout di App Lifecycle Manager mitigano questo rischio consentendo una distribuzione graduale e controllata delle modifiche ai flag, limitando il potenziale ambito di eventuali problemi imprevisti.

Set di flag di funzionalità

I set di flag di funzionalità raggruppano più flag di funzionalità e ti consentono di gestirli come un'unica risorsa logica. Questa opzione è utile per rilasciare funzionalità che richiedono il coordinamento di più flag.

Scopri di più sui set di flag.

Manifest

I manifest ti consentono di definire e gestire i flag di funzionalità utilizzando file JSON. Puoi inviare queste definizioni all'API App Lifecycle Manager o eseguire il pull delle configurazioni esistenti per generare funzioni di accesso con sicurezza dei tipi per la tua applicazione.

Scopri di più sui manifest.

Targeting complesso

Puoi utilizzare il linguaggio CEL (Common Expression Language) per creare regole di targeting sofisticate basate sugli attributi degli utenti o delle richieste per un controllo preciso su quali utenti vedono quali funzionalità.

Scopri di più sul targeting complesso.

Architettura multi-tenant

Puoi utilizzare i deployment multi-tenant con App Lifecycle Manager se scegli come target dei flag unità o gruppi di unità specifici (utilizzando etichette o tenant). Puoi anche implementare implementazioni graduali nel tuo parco risorse di tenant.

Scopri di più sull'architettura multi-tenant.

Assegna i flag di funzionalità

Definisci le allocazioni (ad esempio sperimentale o di riferimento) e utilizza la suddivisione del traffico per eseguire test o implementazioni randomizzate.

Scopri di più sulle flag funzionalità di funzionalità.

Passaggi successivi