Drapeaux caractéristiques - AWS Directives prescriptives

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Drapeaux caractéristiques

Les indicateurs de fonctionnalités peuvent être implémentés dans les micro-frontends afin de faciliter la coordination des tests et de la publication des fonctionnalités dans plusieurs environnements. La technique des indicateurs de fonctionnalité consiste à centraliser les décisions dans un magasin basé sur le booléen et à définir le comportement en fonction de cela. Il est souvent utilisé pour propager silencieusement des modifications qui peuvent être masquées jusqu'à un moment précis, tout en débloquant de nouvelles versions pour de nouvelles fonctionnalités qui seraient autrement bloquées, réduisant ainsi la vélocité de l'équipe.

Prenons l'exemple d'équipes travaillant sur une fonctionnalité de micro-frontend qui sera lancée à une date précise. La fonctionnalité est prête, mais elle doit être publiée en même temps qu'une modification sur un autre micro-frontend publié indépendamment. Le blocage de la libération des deux micro-frontends serait considéré comme un anti-modèle et augmenterait les risques lors du déploiement.

Les équipes peuvent plutôt créer un indicateur de fonctionnalité booléen dans une base de données qu'elles utilisent toutes les deux pendant le rendu (par exemple via un appel HTTP à une API Feature Flags partagée). Les équipes peuvent même publier la modification dans un environnement de test où la valeur booléenne est définie True pour vérifier les exigences fonctionnelles et non fonctionnelles entre les projets avant le lancement en production.

Un autre exemple d'utilisation d'un indicateur de fonctionnalité consiste à implémenter un mécanisme permettant de remplacer la valeur d'un indicateur en définissant une valeur spécifique via le QueryString paramètre ou en stockant une chaîne de test particulière dans un cookie. Les responsables du produit peuvent modifier les fonctionnalités sans bloquer la sortie d'autres fonctionnalités ou les corrections de bogues jusqu'à la date de lancement. À la date donnée, la modification de la valeur du drapeau sur la base de données rend instantanément la modification visible en production, sans qu'il soit nécessaire de coordonner les publications entre les équipes. Après la sortie d'une fonctionnalité, les équipes de développement nettoient le code pour supprimer l'ancien comportement.

Parmi les autres cas d'utilisation, citons la publication d'un système d'indicateurs de fonctionnalités basé sur le contexte. Par exemple, si un seul site Web propose des services aux clients dans plusieurs langues, une fonctionnalité peut être disponible uniquement pour les visiteurs d'un pays en particulier. Le système d'indicateurs de fonctionnalité peut dépendre du fait que le consommateur envoie le contexte du pays (par exemple en utilisant l'en-tête Accept-Language HTTP), et le comportement peut être différent en fonction de ce contexte.

Bien que les indicateurs de fonctionnalité soient un outil puissant pour faciliter la collaboration entre les développeurs et les propriétaires de produits, ils dépendent de la diligence des utilisateurs pour éviter une dégradation significative de la base de code. Le fait de maintenir les indicateurs actifs sur plusieurs fonctionnalités peut accroître la complexité lors de la résolution des problèmes, augmenter la taille du JavaScript bundle et, en fin de compte, accumuler des dettes techniques. Les activités d'atténuation courantes sont les suivantes :

  • Test unitaire de chaque fonctionnalité derrière un drapeau afin de réduire la probabilité de bogues, ce qui peut introduire des boucles de rétroaction plus longues dans les pipelines CI/CD automatisés qui exécutent les tests

  • Création d'outils pour mesurer l'augmentation de la taille des paquets lors des modifications de code, ce qui peut être atténué lors des révisions de code

AWS propose une gamme de solutions pour optimiser les tests A/B en périphérie à l'aide des CloudFront fonctions Amazon ou Lambda @Edge. Ces approches permettent de réduire la complexité de l'intégration d'une solution ou du produit SaaS existant que vous utilisez pour affirmer vos hypothèses. Pour plus d'informations, consultez la section Test A/B.