Che cos'è un "Feature Flag Toggle" e quando usarli (o meno)?


17

Ci sono alcune domande su feature flag toggles, come:

Domande :

  • Che cos'è in realtà un "toggle flag di funzionalità" (nel contesto di DevOps)?
  • Perché sono usati?

3
Informazioni di riferimento, non una risposta diretta - martinfowler.com/articles/feature-toggles.html
Ken Mugrage

1
So che "chiedere" delle spiegazioni del downvote non è comunemente accettato. Chiunque abbia votato in modo anonimo su questa domanda, sappi solo che per me tali downgrade sono inutili, dal momento che questi downgrade sono economici (il downvoter non perde -1 per farlo). La riduzione anonima delle risposte è diversa tuttavia ... tale downvoter lascia una traccia ...
Pierre.Vriens

2
E mi piacerebbe davvero sapere perché qualcuno ha ritenuto che questa domanda dovesse essere chiusa a causa di "troppo ampia", quando questa è in realtà una grande domanda che merita buone risposte.
Evgeny

Merci @Evgeny, sembra che siamo sulla stessa pagina ... ma hai notato che 1 voto da vicino è stato ritirato? Forse a causa della mia modifica più recente.
Pierre.Vriens

Risposte:


13

Senza ripetere il contenuto di https://martinfowler.com/articles/feature-toggles.html , dal momento che è una straordinaria spiegazione approfondita su quali sono i toggle delle flag delle caratteristiche. Mi concentrerò solo sugli aspetti DevOps.

Secondo il Rapporto sullo stato di DevOps del 2014 preparato da PuppetLabs, ci sono quattro parametri principali per misurare le prestazioni IT:

  • Tempi di consegna per modifiche
  • Frequenza di rilascio
  • È ora di ripristinare il servizio
  • Cambia tasso di fallimento

Ciò contribuisce anche alla performance organizzativa complessiva. Quindi significa che se il tuo IT sta andando alla grande su queste metriche, la tua linea di fondo ottiene più $$$.

La consegna continua è abilitata da queste metriche ed è stata descritta in modo approfondito nel libro Consegna continua: rilasci di software affidabili tramite Build, Test e Deployment Automation di Jez Humble.

Nel contesto della consegna continua , esiste un'importante distinzione che la differenzia dalla distribuzione continua . E questa è la decisione quando fare una versione di funzionalità (per i clienti).

Mantenendo piccoli cambiamenti nelle dimensioni, e distribuzione (copiando codice) caratteristiche mezze ai sistemi di produzione con una bandiera funzione attivata off permette di abbreviare il tempo di piombo per modifiche .

Quando le funzionalità sono finalmente finite, fare una liberatoria è una decisione lasciata al business. Forse una versione di una nuova funzionalità deve essere allineata con un po 'di marketing o una versione in un'altra parte dell'azienda come una funzionalità dell'app mobile.

Le funzioni possono essere rilasciate utilizzando gli esperimenti A / B solo a una parte della base di clienti o a persone specifiche o anche direttamente alla disponibilità generale (GA). Sebbene il rilascio su GA sia spesso eseguito solo dopo che vi è abbastanza certezza che la funzionalità funzioni come previsto. Si potrebbe sostenere che questo in effetti influisce sulla frequenza di rilascio su un valore più elevato.

Questo disaccoppiamento tra rilascio e distribuzione è quasi impossibile da ottenere senza gli interruttori di flag delle caratteristiche.

Naturalmente, quando non è richiesta alcuna implementazione per attivare una funzione fuori , quindi il tempo di ripristino del servizio viene abbassata sostanzialmente.

Inoltre, utilizzando i flag di funzionalità che rilasciano funzionalità a una piccola porzione della base di clienti, è possibile migliorare significativamente anche la metrica della percentuale di errori di modifica .


Quindi un semplice meccanismo chiamato funzione flag toggles consente prestazioni IT molto migliori e, a sua volta, migliora le prestazioni organizzative in generale.

Un ottimo esempio di come ciò avvenga nelle compagnie reali può essere trovato su Flickr (sui primi post pubblici sull'argomento), e su Etsy . Ma molti altri hanno adottato la pratica e ne hanno parlato a lungo, ad esempio la famosa cultura ingegneristica dei video di Spotify .

Etsy sta mostrando il suo strumento interno per gestire i flag delle funzionalità , chiamati Catapult, in più presentazioni trovate sul Web. E Intuit rilascia uno strumento open source chiamato Wasabi che aiuta a gestire i flag delle funzionalità.


Grazie per questa risposta interessante / elaborata ... Solo 2 cose però: l'articolo collegato riguarda "Attiva / disattiva funzionalità", non "Attiva / Disattiva flag funzione" (come hai scritto nel tuo primo paragrafo). Sei d'accordo sul fatto che siano sinonimi? Altrimenti qual è la differenza? Inoltre: cosa sono gli "esperimenti A / B" (A = After e B = Before? Probabilmente no ...).
Pierre.Vriens

1
Sono d'accordo che questi sono sinonimi. Preferisco solo cercare di essere chiaro sul nome, quindi non c'è ambiguità. Penso che "cosa sono gli esperimenti a / b" è una domanda a sé stante ... ma la risposta breve è che si tratta di due variazioni misurate una contro l'altra, come nel collegamento "Etsy in mostra". O spiegato a en.wikipedia.org/wiki/A/B_testing
Evgeny

OK, questo è il tocco finale che stavo aspettando / sperando, quindi "accetta".
Pierre.Vriens

@ Pierre.Vriens "Inoltre: quali sono gli" esperimenti A / B "(A = After e B = Before?" - probabilmente puoi chiederlo su questo fantastico sito DevOps SE;)
Dan Cornilescu,

1

Ken Mugrage ha pubblicato un interessante commento sotto la mia domanda, con un collegamento a una spiegazione illuminante di " Attiva / disattiva funzionalità ", con un riepilogo di esso in questo modo:

Gli interruttori di funzionalità sono una tecnica potente, che consente ai team di modificare il comportamento del sistema senza modificare il codice. Esse rientrano in varie categorie di utilizzo ed è importante tenere conto di tale categorizzazione durante l'implementazione e la gestione degli interruttori. Attiva / disattiva introduce complessità. Siamo in grado di tenere sotto controllo tale complessità utilizzando pratiche di implementazione degli interruttori intelligenti e strumenti adeguati per gestire la nostra configurazione degli interruttori, ma dovremmo anche mirare a limitare il numero di interruttori nel nostro sistema.

Il sommario sopra riportato non solo aiuta a capire di cosa si tratta, ma contiene anche alcuni esempi che spiegano il motivo per cui vengono utilizzati . E dopo averlo digerito un po 'di più, sembra che "Feature Toggles" e "Feature Flag Toggles" siano praticamente un sinonimo l'uno dell'altro.

Ma la soluzione (risposta) al problema (domanda), cambia il problema ... si potrebbero porre domande correlate come:

  • Quali sono i pro / contro di usarli? È un concetto potente, ma anche spaventoso se non usato con saggezza (e protetto in modo appropriato) ...
  • Quali potrebbero essere alcuni esempi (quelli buoni e quelli cattivi) in cui vengono utilizzati? Mi vengono in mente un bel po 'di loro, alcuni dei quali mi sono usato un po' di tempo fa (da prima che DevOps fosse persino una cosa).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.