Qu'est-ce qu'un «bascule d'indicateur de fonctionnalité» et quand les utiliser (ou non)?

17

Il y a quelques questions feature flag toggles, telles que:

Questions :

  • Qu'est-ce qu'une "bascule d'indicateur de fonctionnalité" (dans le contexte de DevOps)?
  • Pourquoi sont-ils utilisés?
Pierre.Vriens
la source
3
Informations de référence, pas une réponse directe - martinfowler.com/articles/feature-toggles.html
Ken Mugrage
1
Je sais que «demander» des explications de vote négatif n'est pas communément accepté. Mais celui qui a voté contre cette question de manière anonyme, sachez simplement que pour moi, ces downvotes sont sans valeur, car ces downvotes sont bon marché (le downvoter ne perd pas -1 pour le faire). Les votes anonymes des réponses sont différents cependant ... un tel
vote négatif
2
Et j'aimerais vraiment savoir pourquoi quelqu'un a estimé que cette question devait être fermée à cause de "trop ​​large", alors que c'est en fait une excellente question qui mérite de bonnes réponses.
Evgeny
Merci @Evgeny, on dirait que nous sommes sur la même page ... mais avez-vous remarqué qu'un vote serré a été retiré? Peut-être à cause de ma dernière édition.
Pierre.Vriens

Réponses:

13

Sans répéter le contenu de https://martinfowler.com/articles/feature-toggles.html , car il s'agit d'une explication approfondie et approfondie sur les fonctionnalités des bascules d'indicateur. Je vais me concentrer uniquement sur les aspects DevOps.

Selon le rapport State of DevOps 2014 préparé par PuppetLabs, il existe quatre mesures principales pour mesurer les performances informatiques:

  • Délai pour les changements
  • Fréquence de diffusion
  • Il est temps de restaurer le service
  • Modifier le taux d'échec

Ceux-ci contribuent également à la performance organisationnelle globale. Cela signifie donc que si votre informatique se porte bien sur ces mesures, votre résultat net gagne plus de $$$.

La livraison continue est activée par ces mesures et a été décrite en détail dans le livre Livraison continue: versions logicielles fiables via l'automatisation de la construction, des tests et du déploiement par Jez Humble.

Dans le contexte de la livraison continue , il existe une distinction importante qui la différencie du déploiement continu . Et c'est la décision de faire une version des fonctionnalités (aux clients).

Garder petits changements dans la taille et le déploiement (code copie) fonctions demi-cuite aux systèmes de production avec une fonction drapeau basculée off permet de raccourcir le temps avance des changements .

Lorsque les fonctionnalités sont enfin terminées, faire une version est une décision laissée à l'entreprise. Peut-être qu'une version d'une nouvelle fonctionnalité doit être alignée avec du marketing, ou une version dans une autre partie de l'entreprise comme une fonctionnalité dans l'application mobile.

Les fonctionnalités peuvent être publiées à l'aide d'expériences A / B uniquement sur une partie de la base de clients, ou à des personnes spécifiques, ou même directement sur la disponibilité générale (GA). Bien que la publication vers GA ne se fasse souvent qu'après qu'il y ait suffisamment de certitude que la fonctionnalité fonctionne comme prévu. On pourrait faire valoir que cela affecte en fait la fréquence des versions à être plus élevée.

Ce découplage de la libération et du déploiement est presque impossible à réaliser sans basculer l'indicateur de fonctionnalité.

Naturellement, lorsqu'aucun déploiement n'est requis pour désactiver une fonctionnalité , le temps de restauration du service est considérablement réduit.

Et en utilisant des indicateurs de fonctionnalités qui libèrent des fonctionnalités sur une petite tranche de la base de clients, la mesure du taux d'échec des modifications peut également être améliorée de manière significative.


Ainsi, un mécanisme simple appelé bascule d'indicateur de fonctionnalité permet de bien meilleures performances informatiques et, à son tour, améliore les performances organisationnelles dans l'ensemble.

Un bon exemple de la façon dont cela se fait dans de vraies entreprises peut être trouvé sur Flickr (sur l'un des premiers messages publics sur le sujet) et sur Etsy . Mais beaucoup d'autres ont adopté la pratique et en ont parlé longuement, par exemple la célèbre culture d'ingénierie des vidéos Spotify .

Etsy présente son outil interne pour gérer les indicateurs de fonctionnalité , appelé Catapult, dans plusieurs présentations trouvées sur le Web. Et Intuit publie un outil open-source appelé Wasabi qui aide à gérer les indicateurs de fonctionnalité.

Evgeny
la source
Merci pour cette réponse intéressante / élaborée ... Seulement 2 choses cependant: l'article lié concerne les "bascules de fonction", pas les "bascules de drapeau de fonction" (comme vous l'avez écrit dans votre premier paragraphe). Seriez-vous d'accord pour dire qu'il s'agit de synonymes? Sinon quelle est la différence? Aussi: que sont les "expériences A / B" (A = Après et B = Avant? Probablement pas ...).
Pierre.Vriens
1
Je suis d'accord que ce sont des synonymes. Je préfère juste essayer d'être clair sur le nom, donc il n'y a pas d'ambiguïté. Je pense que "quelles sont les expériences a / b" est une question qui lui est propre ... mais la réponse courte est que ce sont deux variations qui sont mesurées l'une par rapport à l'autre, comme dans le lien "Etsy exhibant". Ou expliqué à en.wikipedia.org/wiki/A/B_testing
Evgeny
OK, c'est la touche finale que j'attendais / espérais, alors "acceptez".
Pierre.Vriens
@ Pierre.Vriens "Aussi: que sont les" expériences A / B "(A = Après et B = Avant?" - vous pouvez probablement demander cela sur ce site DevOps SE super cool;)
Dan Cornilescu
1

Ken Mugrage a posté un commentaire intéressant en dessous de ma question, avec un lien vers une explication éclairante de " Fonction bascule ", avec un résumé comme ceci:

Les bascules de fonction sont une technique puissante, permettant aux équipes de modifier le comportement du système sans changer le code. Ils entrent dans différentes catégories d'utilisation, et il est important de prendre en compte cette catégorisation lors de la mise en œuvre et de la gestion des bascules. Les bascules introduisent de la complexité. Nous pouvons garder cette complexité sous contrôle en utilisant des pratiques d'implémentation à bascule intelligentes et des outils appropriés pour gérer notre configuration à bascule, mais nous devons également viser à limiter le nombre de bascules dans notre système.

Non seulement le résumé ci-dessus aide à comprendre de quoi il s'agit, mais il contient également quelques exemples qui expliquent pourquoi ils sont utilisés . Et après l'avoir digéré un peu plus loin, il semble que "Toggle de fonction" et "Toggle de drapeau de fonction" soient à peu près synonymes l'un de l'autre.

Mais, la solution (réponse) au problème (question), change le problème ... on pourrait poser des questions connexes telles que:

  • Quels sont les avantages / inconvénients de leur utilisation? C'est un concept puissant, mais aussi effrayant s'il n'est pas utilisé à bon escient (et sécurisé de manière appropriée) ...
  • Quels pourraient être des exemples (bons et mauvais) où ils sont utilisés? Je peux penser à un certain nombre d'entre eux, certains d'entre eux que je me suis utilisés il y a un certain temps (d'avant DevOps était même une chose).
Pierre.Vriens
la source