Configurazione del rollout progressivo

Il rollout progressivo automatizza l'esposizione graduale dei flag delle funzionalità agli utenti nel corso del tempo, eliminando l'intervento manuale e riducendo lo sforzo operativo. È possibile definire più fasi con percentuali e durate specifiche; App Configuration gestisce automaticamente le transizioni tra le fasi in base alla pianificazione impostata.

L'implementazione graduale offre numerosi vantaggi per il lancio delle funzionalità, aiutandoti a gestire i rischi e a garantire al contempo la coerenza dell'esperienza utente. I principali vantaggi includono:

  • Automazione: elimina l'intervento manuale nelle implementazioni programmate in base al tempo.
  • Coerenza: garantisce che lo stesso utente riceva lo stesso valore durante l'intera fase di implementazione.
  • Sicurezza: consente di interrompere l'implementazione in qualsiasi fase qualora vengano rilevati dei problemi.
  • Flessibilità: supporta configurazioni di fase personalizzate o modelli predefiniti.
  • Prevedibilità: garantisce il rilascio programmato delle funzionalità in base a scadenze prestabilite.

Il rollout progressivo è disponibile solo per gli utenti di livello Enterprise.

Prima di iniziare

Prima di configurare l'implementazione graduale, assicurarsi che:

  • Si dispone di un'istanza di App Configuration Enterprise
  • Si dispone delle autorizzazioni IAM appropriate (ruolo Manager o Writer)
  • È stato creato un flag di funzionalità nel proprio ambiente

Vincoli di configurazione

Il rollout progressivo ha vincoli e requisiti specifici che devono essere compresi prima della configurazione.

Vincoli generali

Esaminare i vincoli generali che si applicano a tutte le configurazioni di implementazione graduale. Questi vincoli garantiscono il corretto funzionamento ed evitano conflitti con altre funzionalità.

  • È necessario il livello Enterprise: Il rollout progressivo è disponibile solo per gli utenti di livello Enterprise.
  • Un lancio per bandiera: È consentito un solo rollout progressivo per indicatore di caratteristica. Si può configurare a livello di flag o a livello di regola, ma non contemporaneamente.
  • Una strategia di consegna attiva alla volta: Se un esperimento è in corso su un flag, non è possibile creare un rollout progressivo. Allo stesso modo, se è in corso un rollout progressivo, non è possibile avviare un esperimento su quel flag.
  • Intervallo percentuale: La percentuale di rollout deve essere compresa tra 1% e 100%.

Requisiti API per ambito

L'API da utilizzare dipende dall'ambito della configurazione dell'implementazione graduale. Seleziona l'API appropriata in base al luogo in cui stai configurando l'implementazione.

  • Rollout progressivo a livello di flag: utilizzare l'API dei flag delle caratteristiche per creare e aggiornare il rollout.
  • Rollout progressivo a livello di regola: utilizzare l'API delle regole per creare e aggiornare il rollout.
  • Interruzione di un rollout: utilizzare le API di arresto del rollout per interrompere un rollout progressivo attivo.

Requisiti di configurazione per ambito

Prima di configurare un’implementazione progressiva, assicurati che il tuo flag o la tua regola utilizzi valori di implementazione espliciti anziché valori ereditati. Questo requisito previene eventuali conflitti e garantisce che l'implementazione graduale abbia il pieno controllo.

  • Per il rollout progressivo a livello di flag: nessuna delle regole di targeting può avere un valore rolloutPercentage ereditato dal flag. Tutte le regole di targeting devono utilizzare valori di rollout sovrascritti.
  • Per il rollout progressivo a livello di regola: la regola di targeting in cui si aggiunge il rollout non può usare un valore ereditato dal flag. La regola deve avere un proprio valore esplicito.

Operazioni bloccate durante il rollout progressivo

Quando un rollout progressivo è in fase di esecuzione, alcune operazioni vengono bloccate per garantire l'integrità del rollout ed evitare conflitti.

  • Creare un altro rollout progressivo: È consentito un solo rollout progressivo per bandiera.
  • Avvio di un esperimento: Gli esperimenti non possono essere eseguiti su bandiere che hanno già un rollout progressivo in corso.
  • Eliminazione di una raccolta: L'eliminazione di una raccolta è bloccata se un flag di caratteristica associato ha un rollout progressivo nello stato di esecuzione.
  • Aggiornamento o eliminazione di un segmento: Gli aggiornamenti e le cancellazioni dei segmenti sono bloccati se un flag di caratteristica associato ha un rollout progressivo nello stato di esecuzione.
  • Modifica della configurazione del flag o della regola: Gli aggiornamenti del flag o della regola di targeting che utilizza il rollout sono consentiti solo quando il rollout progressivo non è in esecuzione.

Comportamento nel ciclo di vita

Comprendere il comportamento del ciclo di vita ti aiuta a gestire l'interazione tra le implementazioni progressive e le altre funzionalità. App Configuration mantiene una rigida separazione tra le strategie di distribuzione.

  • Se un esperimento è in corso, non è possibile creare un rollout progressivo.
  • Se è in corso un rollout progressivo, non è possibile avviare un esperimento sullo stesso flag.
  • Per interrompere un rollout, è necessario utilizzare le API di stop rollout dedicate.

Configurazione del rollout progressivo

È possibile configurare il rollout progressivo a livello di flag o di regola di targeting.

Configurazione del rollout progressivo a livello di flag

Per configurare il rollout progressivo a livello di flag:

  1. Nella console App Configuration, spostarsi su Feature flags.
  2. Selezionare l'ambiente che contiene il flag della caratteristica.
  3. Fare clic sul contrassegno della funzione che si desidera configurare.
  4. Nella sezione Rollout di funzioni, selezionare Progressivo come tipo di rollout.
  5. Configurare le impostazioni del rollout:
    • Durata preimpostata: Scegliere tra i modelli predefiniti ( 1hr, 12hr, 24hr, 48hr ) o selezionare Personalizzato
    • Fasi: Definire ogni fase con una percentuale e una durata
    • Pianifica più tardi (opzionale): Attivare questa opzione per specificare un orario di inizio in UTC per il rollout. Se non è abilitato, il rollout inizia immediatamente.
  6. Fare clic su Salva.

Il rollout progressivo si avvia automaticamente all'ora di inizio configurata.

Configurazione del rollout progressivo a livello di regola

Per configurare il rollout progressivo a livello di regola di targeting:

  1. Nella console App Configuration, spostarsi su Feature flags.
  2. Selezionare l'ambiente che contiene il flag della caratteristica.
  3. Fare clic sul contrassegno della funzione che si desidera configurare.
  4. Nella sezione " Targeting ", seleziona la regola che desideri configurare.
  5. Assicurarsi che la regola abbia un valore sovrascritto.
  6. Nella sezione Rollout della regola, selezionare Progressive come tipo di rollout.
  7. Configurare le impostazioni del rollout:
    • Durata preimpostata: Scegliere tra i modelli predefiniti ( 1hr, 12hr, 24hr, 48hr ) o selezionare Personalizzato
    • Fasi: Definire ogni fase con una percentuale e una durata
    • Pianifica più tardi (opzionale): Attivare questa opzione per specificare un orario di inizio in UTC per il rollout. Se non è abilitato, il rollout inizia immediatamente.
  8. Fare clic su Salva.

Fasi progressive di lancio

Un rollout progressivo consiste in più fasi, ognuna delle quali definisce una percentuale e una durata.

Configurazione di fase

Definisci la percentuale e la durata di ciascuna fase del tuo lancio graduale. Ogni fase è costituita da due elementi chiave che ne determinano l'andamento.

Ogni fase comprende:

  • Percentuale: La percentuale di utenti che riceveranno il valore abilitato (1-100%)
  • Durata: Quanto deve durare questa fase (ad esempio, " 8h ", " 30m ", " 2d ")

La fase finale non richiede una durata, poiché rappresenta lo stato di completamento.

Esempi di fasi

Esamina questi esempi di configurazioni delle fasi di implementazione graduale per diversi scenari.

Esempio 1: Introduzione graduale su 24 ore

{
  "phases": [
    { "percentage": 5, "duration": "6h" },
    { "percentage": 25, "duration": "6h" },
    { "percentage": 50, "duration": "6h" },
    { "percentage": 100, "duration": "6h" }
  ]
}

Esempio 2: Rapido rollout di 1 ora

{
  "phases": [
    { "percentage": 10, "duration": "15m" },
    { "percentage": 50, "duration": "15m" },
    { "percentage": 100, "duration": "30m" }
  ]
}

Esempio 3: rollout conservativo di 48 ore

{
  "phases": [
    { "percentage": 5, "duration": "12h" },
    { "percentage": 10, "duration": "12h" },
    { "percentage": 25, "duration": "12h" },
    { "percentage": 100, "duration": "12h" }
  ]
}

Modelli di rollout predefiniti

App Configuration fornisce modelli predefiniti per gli scenari di rollout più comuni:

Modelli di rollout predefiniti
Modello Durata Fasi
1hr 1 ora 10% ( 15m ), 50% ( 15m ), 100% ( 30m )
12hr 12 ore 5% ( 3h ), 25% ( 3h ), 50% ( 3h ), 100% ( 3h )
24hr 24 ore 5% ( 6h ), 25% ( 6h ), 50% ( 6h ), 100% ( 6h )
48hr 48 ore 5% ( 12h ), 10% ( 12h ), 25% ( 12h ), 100% ( 12h )

Interruzione di un rollout progressivo

Quando si interrompe un’implementazione progressiva, App Configuration esegue diverse operazioni di pulizia per tornare alla modalità di implementazione manuale.

  • La configurazione di implementazione è stata rimossa.
  • La percentuale di rollout viene aggiornata alla percentuale specificata
  • Il tipo di rollout ritorna al rollout manuale
  • Gli utenti che ricevevano il valore abilitato continuano a riceverlo in base alla percentuale interrotta

È possibile interrompere un rollout progressivo in qualsiasi fase se vengono rilevati problemi. Utilizzare l'API appropriata in base all'ambito di configurazione del rollout.

  • Interruzione del rollout a livello di flag: per interrompere un rollout progressivo configurato a livello di flag di funzionalità, utilizzare l'API di interruzione del rollout per i flag di funzionalità.
  • Interruzione del rollout a livello di regola: per interrompere un rollout progressivo configurato a livello di regola di targeting, utilizzare l'API di interruzione del rollout per le regole.

Completamento progressivo del rollout

Quando un’implementazione graduale raggiunge la fase finale, App Configuration esegue automaticamente le operazioni di pulizia e torna alla modalità di implementazione manuale.

  • La configurazione di implementazione viene rimossa automaticamente.
  • La percentuale di implementazione viene aggiornata alla percentuale della fase finale (in genere il 100%).
  • Il tipo di rollout torna a essere manuale.
  • Tutti gli utenti ricevono il valore abilitato.

Coerenza e randomizzazione dell'utente

L'implementazione progressiva garantisce un'esperienza utente coerente grazie a una strategia di randomizzazione a due livelli che mantiene un comportamento prevedibile all'interno di un singolo ciclo di implementazione, consentendo al contempo flessibilità tra i diversi cicli di implementazione.

All'interno di un rollout

Nel corso di un'unica implementazione graduale, App Configuration mantiene le assegnazioni coerenti per ciascun utente, al fine di garantire un'esperienza stabile in tutte le fasi.

  • La randomizzazione è deterministica, come indicato all'indirizzo entity_id.
  • Lo stesso entity_id riceve sempre lo stesso incarico.
  • Gli utenti che ricevono il valore abilitato nella fase 1 continuano a riceverlo anche nelle fasi successive.
  • Man mano che la percentuale aumenta, vengono aggiunti nuovi utenti.

Tra i vari rollout

Quando si avvia una nuova implementazione progressiva sulla stessa flag, App Configuration genera una nuova distribuzione per consentire diversi modelli di esposizione degli utenti.

  • Viene generata una nuova distribuzione casuale.
  • Lo stesso entity_id potrebbe ricevere un incarico diverso.
  • Ciò consente di rendere disponibili i diversi gruppi di utenti in cicli di implementazione distinti.

Monitoraggio dei rollout progressivi

Monitorate le vostre implementazioni graduali per assicurarvi che procedano come previsto e per individuare rapidamente eventuali problemi che potrebbero sorgere durante il processo di implementazione.

  • Visualizzazione della dashboard: la dashboard “ App Configuration ” mostra lo stato attuale e la fase delle implementazioni progressive in corso.
  • Indicatori di stato:
    • QUEUED: L'implementazione è prevista, ma non è ancora iniziata.
    • RUNNING: L'implementazione sta procedendo attivamente, fase dopo fase.
  • Monitoraggio delle attività: utilizzare Activity Tracker per monitorare gli eventi di implementazione e le transizioni di fase.

Procedure consigliate

Seguire le migliori pratiche qui elencate contribuisce a garantire il successo delle implementazioni progressive e a ridurre al minimo i rischi per gli utenti e le applicazioni.

  • Inizia con piccoli passi: parti da una percentuale bassa (5-10%) per ridurre al minimo il rischio.
  • Monitoraggio delle metriche: monitorare costantemente le metriche dell'applicazione durante ogni fase.
  • Pianificazione in base ai fusi orari: tieni conto dei fusi orari della tua base utenti quando pianifichi l'orario di inizio.
  • Configurazioni di test: verifica innanzitutto la configurazione di implementazione in un ambiente non di produzione.
  • Piani di implementazione della documentazione: conservare la documentazione relativa alla strategia e alle fasi di implementazione.
  • Preparare piani di rollback: predisporre un piano per interrompere l'implementazione qualora venissero rilevati dei problemi.
  • Utilizzare durate adeguate: prevedere un tempo sufficiente in ciascuna fase per raccogliere dati significativi.

Riferimento API

Il rollout progressivo può essere configurato utilizzando l'API App Configuration. Per ulteriori informazioni, consultare il sito Documentazione API.