Condividi tramite


Panoramica della gestione funzionalità

Tradizionalmente, la distribuzione di una nuova funzionalità dell'applicazione richiede una ridistribuzione completa dell'applicazione stessa. Il test di una funzionalità richiede spesso più distribuzioni dell'applicazione. Ogni distribuzione può modificare la funzionalità o esporre la funzionalità a clienti diversi per eseguire i test.

La gestione delle funzionalità è una moderna pratica di sviluppo software che separa la release della funzionalità dalla distribuzione del codice e consente di modificare rapidamente la disponibilità della funzionalità su richiesta. Usa una tecnica chiamata flag di funzionalità (nota anche come funzionalità toggle e opzione di funzionalità) per gestire in modo dinamico il ciclo di vita di una funzionalità.

La gestione delle funzionalità consente agli sviluppatori di risolvere i problemi seguenti:

  • Gestione dei rami di codice: usare i flag di funzionalità per eseguire il wrapping delle nuove funzionalità dell'applicazione attualmente in fase di sviluppo. Tali funzionalità sono "nascoste" per impostazione predefinita. È possibile distribuirle senza problemi, anche se non completate, perché rimarranno inattive nell'ambiente di produzione. Con questo approccio, chiamato dark deployment, è possibile rilasciare tutto il codice alla fine di ogni ciclo di sviluppo. Non è più necessario gestire rami di codice in più cicli di sviluppo perché una determinata funzionalità richiede più di un ciclo per essere completata.
  • Test nella produzione: usare i flag di funzionalità per concedere l'accesso in anteprima alle nuove funzionalità in fase di produzione. È ad esempio possibile limitare l'accesso ai membri del team o ai beta tester interni. Questi utenti vivranno un'esperienza ad altissima fedeltà nell'ambiente di produzione, invece di un'esperienza simulata o parziale in un ambiente di test.
  • Distribuzione in anteprima: è anche possibile usare i flag di funzionalità per implementare nuove funzionalità per gli utenti finali in modo incrementale. All'inizio è possibile rivolgersi a una piccola percentuale della popolazione di utenti e aumentare tale percentuale gradualmente nel corso del tempo.
  • Opzione di terminazione immediata: i flag funzionalità offrono una rete di sicurezza intrinseca per il rilascio delle nuove funzionalità. È possibile attivare e disattivare le funzionalità dell'applicazione senza dover redistribuire il codice. Se necessario, è possibile disabilitare rapidamente una funzionalità senza ricompilare e ridistribuire l'applicazione.
  • Attivazione selettiva: servirsi dei flag di funzionalità per segmentare gli utenti e rendere disponibile un set specifico di funzionalità per ogni gruppo. Potrebbe ess disponibile una funzionalità che opera solo in un determinato Web browser. È possibile definire un flag in modo che solo gli utenti di tale browser possano visualizzare e usare la funzionalità. Questo approccio consente di espandere facilmente l'elenco di browser supportati in un secondo momento senza dover modificare il codice.

Concetti fondamentali

Ecco alcuni nuovi termini relativi alla gestione delle funzionalità:

  • Flag di funzionalità: è una variabile con uno stato binario on oppure off. Ai flag di funzionalità è associato un blocco di codice. Lo stato del flag di funzionalità determina se il blocco di codice viene eseguito.
  • Gestione funzionalità: la gestione funzionalità è un pacchetto dell'applicazione che gestisce il ciclo di vita di tutti i flag di funzionalità di un'applicazione. In genere fornisce anche funzioni aggiuntive, inclusi la memorizzazione nella cache dei flag di funzionalità e l'aggiornamento dei relativi stati.
  • Filtro: è una regola per valutare lo stato di un flag di funzionalità. I potenziali filtri includono gruppi di utenti, tipi di dispositivo o browser, posizioni geografiche e finestre temporali.

Un'implementazione efficace della gestione funzionalità prevede almeno due componenti che operano congiuntamente:

  • Un'applicazione che usa i flag di funzionalità.
  • Un repository separato in cui sono archiviati i flag di funzionalità e i relativi stati correnti.

Uso dei flag di funzionalità nel codice

Il modello di base per l'implementazione dei flag di funzionalità in un'applicazione è semplice. Un flag di funzionalità è una variabile di stato booleana che controlla un'istruzione condizionale nel codice:

if (featureFlag) {
    // Run the following code
}

È possibile impostare il valore di featureFlag in modo statico:

bool featureFlag = true;

È possibile valutare lo stato del flag in base a determinate regole:

bool featureFlag = isBetaUser();

È possibile estendere l'istruzione condizionale per impostare il comportamento dell'applicazione per uno stato:

if (featureFlag) {
    // This following code will run if the featureFlag value is true
} else {
    // This following code will run if the featureFlag value is false
}

Repository di flag di funzionalità

Per usare i flag di funzionalità in modo efficace, occorre esternalizzare tutti quelli usati in un'applicazione. È possibile usare questo approccio per modificare gli stati dei flag di funzionalità senza dover modificare e ridistribuire l'applicazione stessa.

Configurazione app di Azure fornisce un repository centralizzato per i flag di funzionalità. È possibile usarlo per definire diversi tipi di flag di funzionalità e modificarne gli stati rapidamente e in tutta sicurezza. È quindi possibile usare le librerie di Configurazione app per diversi framework di linguaggi di programmazione per accedere con facilità a questi flag di funzionalità dall'applicazione.

Passaggi successivi

Per iniziare a usare i flag di funzionalità con Configurazione app di Azure, continuare con le seguenti guide introduttive specifiche per il linguaggio o la piattaforma dell'applicazione.

Per altre informazioni sulla gestione dei flag di funzionalità in Configurazione app di Azure, continuare con l'esercitazione seguente.

I filtri delle funzionalità consentono di abilitare un flag di funzionalità in modo condizionale. Configurazione app di Azure offre filtri di funzionalità predefiniti che consentono di attivare un flag di funzionalità solo durante un periodo specifico o per un particolare gruppo di destinatari dell'app. Per altre informazioni, continuare con l'esercitazione seguente.