Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TECH] Nouveau système de feature toggles #11115

Draft
wants to merge 6 commits into
base: dev
Choose a base branch
from

Conversation

bpetetot
Copy link
Contributor

@bpetetot bpetetot commented Jan 14, 2025

🥞 Problème

Actuellement, la gestion des feature toggles (FT) se fait via des variables d'environnement. Cette gestion a plusieurs inconvénients:

  • Déclarer manuellement les variables d'env sur chaque environnement.
  • Pour activer / désactiver une feature toggle, il est nécessaire de modifier ces variables.
  • Pour que le changement soit effectif, il faut redémarrer le serveur API.

🥓 Proposition

Réaliser un nouveau système de gestion des feature toggles:

  • Utiliser Redis comme persistance afin que l'activation/désactivation des FTs soit prise à chaud.
  • Charger automatiquement les nouveaux FT sur tous les environnements via un fichier de config dédiée (feature-toggles-config.js)
  • Redis permettra de modifier les valeurs en production via Pix Exploit (via cURL dans un premier temps, puis une UI dans le futur)
  • Un script CLI permettra de modifier les valeurs en local, RA et Recette.
  • La nouvelle gestion permettra d'avoir plusieurs types de FT (booleen, string et number).
  • Possibilité de facilement changer la valeur de FT dans les tests via await featureToggles.set('myToggle', true);
  • Envoyer uniquement les FT dédiées au frontend via le endpoint /api/feature-toggles

Cette PR met en place le socle de la nouvelle gestion des feature toggles. Elle ne migre pas les feature toggles actuels (ce sera réalisé dans une PR dédiée).

🧃 Remarques

Reste à faire dans cette PR:

Prochaines étapes

  • Page de documentation (utilisation, démarche de déploiement...)
  • Endpoint et cURL sur Pix Exploit pour modifier les FT en production
  • Migration des variables d'env vers les nouveaux FT (+ envoi au frontend)
  • UI: Mise à dispo d'une API avec la description des toggles pour les gérer dans une interface de Pix Exploit

😋 Pour tester

En local ou RA, exécuter le script CLI.

  • Afficher l'aide
npm run toggles -- --help
  • Lister les feature toggles déclarés:
npm run toggles -- --list
  • Récupérer la valeur d'un toggle spécifique:
npm run toggles -- --key=newFeatureToggleSystem
  • Modifier la valeur d'un toggle spécifique:
npm run toggles -- --key=newFeatureToggleSystem --value=true
  • Vérifier que le toggle est bien envoyé via /api/feature-toggles:
# En local
curl 'http://localhost:4200/api/feature-toggles' 

# En RA
curl 'https://app-pr11115.review.pix.fr/api/feature-toggles'

"new-feature-toggle-system":false doit être présent dans la réponse.

@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

@bpetetot bpetetot force-pushed the tech-new-feature-toggles-management branch 4 times, most recently from 52db04e to 89b2887 Compare January 14, 2025 15:54
@bpetetot bpetetot changed the title [TECH] New feature toggle management [TECH] Nouvelle gestion des feature toggles Jan 14, 2025
@bpetetot bpetetot force-pushed the tech-new-feature-toggles-management branch 4 times, most recently from b7796a4 to bbd566a Compare January 16, 2025 15:26
@bpetetot bpetetot changed the title [TECH] Nouvelle gestion des feature toggles [TECH] Nouveau système de feature toggles Jan 16, 2025
@bpetetot bpetetot force-pushed the tech-new-feature-toggles-management branch from bbd566a to 70a3300 Compare January 16, 2025 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cross-team Toutes les équipes de dev Development in progress
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants