Vous êtes ici : Accueil / 2012 / Mai / Django-Waffle, « feature-flipper » ou application de gestion d'options

Django-Waffle, « feature-flipper » ou application de gestion d'options

écrit le 03/05/2012 Par Amirouche Boubekki
Une application Django qui permet de contrôler la visibilité de fonctions dans votre application web

Django-Waffle est un « feature flipper » pour Django qui permet de contrôler la visibilité de fonctions dans votre application web selon différentes stratégies.

Kézako un gestionnaire d’option

De manière générale les gestionnaires d’options sont utilisés pour gérer différentes versions d’une application web. Il peut être intéressant d’avoir plusieurs versions d’un site pour par exemple faire face à une surcharge, un autre cas d’utilisation est l’ouverture progressive de fonction à un groupe de testeurs afin de détecter d’éventuels bugs ou pour faire des tests A/B. Ils sont aussi parfois utilisés dans le cadre de l’intégration continue venant remplacer l’utilisation des branches d’un gestionnaire de version.

Trois modèles pour les dominer tous

Django-Waffle utilise trois types d’interrupteurs chacun correspondant à un modèle Django particulier, s’activant selon différentes stratégies en fonction d’attributs de configuration stockés en base de données, les voici du plus simple au plus complexe :

  • Les « switches » sont de simples booléens. Ils peuvent être utilisés partout.
  • Les « samples » s’activent selon une loi probabiliste uniforme qu’il est possible de régler à l’aide d’un pourcentage. Ils peuvent être utilisés partout.
  • Les « flags » sont les interrupteurs dont le comportement se définit vis-à-vis du client, ils ne peuvent donc exister que là où celui-ci est défini donc dans les templates ou les vues.

Utilisation des interrupteurs

Les modèles fournis par Django-Waffle et configurés dans l'espace d’administration par le développeur peuvent ensuite être utilisés dans les vues, les templates ou dans une commande.
Un ensemble de template tag construit sur le principe des blocs conditionnels permet d’utiliser les interrupteurs dans les templates.
Dans le code python des blocs conditionnels classiques aidés de fonctions permet de faire les branchements nécessaires. Il existe un raffinement supplémentaire pour les « flags » et les « switches » qui peuvent être utilisés autour d’une vue à l’aide d’un décorateur, renvoyant une erreur 404 lorsque celui-ci n’est pas actif.
Une bibliothèque Javascript accompagne Django-Waffle qui permet d’utiliser les interrupteurs directement coté client.

Pour aller plus loin

Le fichier README du projet explique de façon un peu plus détaillé l'utilisation de la bibliothèque.

Actions sur le document