Descrivere la manutenzione dei feature toggle

Completato

Un feature toggle è solo codice. E, per essere più specifici, codice condizionale. Aggiunge complessità al codice e aumenta il debito tecnico.

Bisogna esserne consapevoli quando li si scrive e ripulirli quando non servono più.

Anche se i flag di funzionalità possono essere utili, possono anche creare molti problemi.

Il principio di un toggle è che è di breve durata ed è presente nel software solo quando è necessario rilasciarlo ai clienti.

È possibile classificare i diversi tipi di toggle in base a due dimensioni, come descritto da Martin Fowler.

Egli afferma che si può considerare la dimensione della durata della presenza di un toggle nella codebase e, dall'altro lato, la dinamicità che il toggle deve avere.

Pianificare i cicli di vita dei flag di funzionalità

A switch in the on position triggers a flag, if this, else that.

La cosa più importante è ricordare che è necessario rimuovere i toggle dal software.

In caso contrario, diventeranno una forma di debito tecnico se li si manterrà per troppo tempo.

Un flag di funzionalità, non appena viene introdotto, va ad aggiungersi al debito tecnico complessivo.

Come altri debiti tecnici, è facile da aggiungere, ma più a lungo fa parte del codice, più il debito tecnico aumenta perché si è aggiunta la logica di scaffolding necessaria per la creazione di rami all'interno del codice.

La complessità ciclomatica del codice continua ad aumentare man mano che si aggiungono altri flag di funzionalità, perché aumenta il numero di percorsi possibili attraverso il codice.

L'uso dei flag di funzionalità può rendere il codice meno solido e può anche introdurre questi problemi:

  • Il codice è più difficile da testare efficacemente man mano che aumenta il numero di combinazioni logiche.
  • Il codice è più difficile da gestire perché è più complesso.
  • Il codice potrebbe anche essere meno sicuro.
  • Può essere più difficile duplicare i problemi quando vengono riscontrati.

Un piano per la gestione del ciclo di vita dei flag di funzionalità è fondamentale. Non appena si aggiunge un flag, è necessario pianificare quando verrà rimosso.

I flag di funzionalità non dovrebbero essere riutilizzati. Si sono verificati errori gravi perché i team hanno deciso di riutilizzare per un nuovo scopo un vecchio flag che pensavano non facesse più parte del codice.

Strumenti per la gestione dei flag di rilascio

La quantità di lavoro richiesto per gestire i flag di funzionalità non deve essere sottovalutata. È essenziale considerare l'uso di strumenti che tengano traccia di:

  • Quali flag esistono.
  • Quali flag sono abilitati in quali ambienti, situazioni o categorie di clienti target.
  • Piano per quando i flag verranno usati nell'ambiente di produzione.
  • Piano per quando i flag verranno rimossi.

L'uso di un sistema di gestione dei flag di funzionalità consente di ottenere i vantaggi dei flag di funzionalità riducendo al minimo il rischio di aumentare eccessivamente il debito tecnico.

Configurazione app di Azure offre un'utilità per la gestione delle funzionalità. Vedere Gestione funzionalità di Configurazione app di Azure.