Feature Toggles


Plus j’avance et moins je crois aux branches et aux livrai­sons unitaires. Pour plein de raisons, quitte à sacri­fier un peu de perfor­mance, je conseille la livrai­son en produc­tion de tout le code, même s’il n’est pas fini.

L’im­por­tant c’est l’in­ter­rup­teur, la possi­bi­lité d’ac­ti­ver ou désac­ti­ver un compor­te­ment.

Feature toggles are a power­ful tech­nique, allo­wing teams to modify system beha­vior without chan­ging code. They fall into various usage cate­go­ries, and it’s impor­tant to take that cate­go­ri­za­tion into account when imple­men­ting and mana­ging toggles. Toggles intro­duce complexity. We can keep that complexity in check by using smart toggle imple­men­ta­tion prac­tices and appro­priate tools to manage our toggle confi­gu­ra­tion, but we should also aim to constrain the number of toggles in our system.

— Martin Fowler

L’ar­ticle est long, il n’aborde pas vrai­ment le comment, mais résume beau­coup de choses sur l’ap­proche et le quoi.


4 réponses à “Feature Toggles”

  1. S’il est une chose que j’apprécie beaucoup c’est bien cela.
    Récemment j’ai eu à faire des refactoring conséquents (et critique, genre système de sécurité de vol) dans une application. Plutôt que de faire une nouvelle branche qui aurait duré plusieurs semaines (avec tout ce que ça comporte comme problème de rebase, synchro, etc) on l’a développé directement dans la branche principale. La nouvelle architecture a été introduite en complément de l’ancienne. Au début non active.
    Petit à petit les sous-systèmes ont migré, un à un, de l’ancienne architecture vers la nouvelle, tout en douceur.
    Une fois tout migré, l’ancienne architecture a été supprimée.
    C’est un confort très appréciable, et cela supprime d’office toute crainte au moment où on ferait une bascule d’un système vers l’autre puisque tout est compilé/testé en même temps depuis le début et que le passage de l’un à l’autre est très progressif.

    Sur le sujet il y a aussi les (nombreux) écrits de Paul Hammant, particulièrement :
    – Branch by Abstraction : http://paulhammant.com/categories.html#branch_by_abstraction,_etc
    – Trunk Based Development : http://paulhammant.com/categories.html#trunk_based_development

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.