Partager via


Indicateurs de fonctionnalités

Conseil

Ce contenu est un extrait du livre électronique, Cloud Native .NET apps for Azure (Architecture d’applications .NET natives cloud pour Azure), disponible dans la documentation .NET ou au format PDF à télécharger gratuitement pour le lire hors connexion.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Dans le chapitre 1, nous avons affirmé que le cloud natif est synonyme de vitesse et d’agilité. Les utilisateurs attendent une réactivité rapide, des fonctionnalités innovantes et aucun temps d’arrêt. Les Feature flags sont une technique de déploiement moderne qui permet d’augmenter l’agilité des applications natives cloud. Ils vous permettent de déployer de nouvelles fonctionnalités dans un environnement de production, mais de limiter leur disponibilité. En activant/désactivant un commutateur, vous pouvez activer une nouvelle fonctionnalité pour des utilisateurs spécifiques sans redémarrer l’application ou déployer de nouveau code. Ils séparent la publication de nouvelles fonctionnalités de leur déploiement de code.

Les indicateurs de fonctionnalité sont basés sur une logique conditionnelle qui contrôle la visibilité des fonctionnalités pour les utilisateurs au moment de l’exécution. Dans les systèmes natifs Cloud modernes, il est courant de déployer de nouvelles fonctionnalités en production tôt, mais de les tester avec un public limité. Au fur et à mesure que la confiance augmente, la fonctionnalité peut être déployée de manière incrémentielle pour des audiences plus larges.

Voici d’autres cas d’usage des indicateurs de fonctionnalité :

  • Limitez les fonctionnalités Premium à des groupes clients spécifiques prêts à payer des frais d’abonnement plus élevés.
  • Stabilisez un système en désactivant rapidement une fonctionnalité problématique, en évitant les risques d’une restauration ou d’un correctif logiciel immédiat.
  • Désactivez une fonctionnalité facultative avec une consommation élevée de ressources pendant les périodes avec une pointe d’utilisation.
  • Effectuez des experimental feature releases à destination de petits segments d’utilisateurs pour valider la faisabilité et la popularité.

Les indicateurs de fonctionnalité favorisent également le développement trunk-based. Il s’agit d’un modèle de branches de contrôle de code source où les développeurs collaborent sur des fonctionnalités dans une branche unique. L’approche réduit le risque et la complexité inhérents à la fusion d’un grand nombre de branches de fonctionnalités de longue durée. Les fonctionnalités ne sont pas disponibles jusqu’à ce qu’elles soient activées.

Implémentation d’indicateurs de fonctionnalité

Un indicateur de fonctionnalité est essentiellement une référence à un simple decision object. Il renvoie un état booléen on ou off. L’indicateur encapsule généralement un bloc de code qui encapsule une capacité de fonctionnalité. L’état de l’indicateur détermine si ce bloc de code s’exécute pour un utilisateur donné. La figure 10-11 montre l’implémentation.

if (featureFlag) {
    // Run this code block if the featureFlag value is true
} else {
    // Run this code block if the featureFlag value is false
}

Figure 10-11 - Implémentation d’indicateur de fonctionnalité simple.

Notez comment cette approche sépare la logique de décision du code de fonctionnalité.

Dans le chapitre 1, nous avons abordé l’Twelve-Factor App. Les conseils recommandaient de conserver les paramètres de configuration hors du code exécutable de l’application. Si nécessaire, les paramètres peuvent être lus à partir de la source externe. Les valeurs de configuration des indicateurs de fonctionnalité doivent également être indépendantes de leur codebase. En externalisant la configuration de l’indicateur dans un référentiel distinct, vous pouvez modifier l’état de l’indicateur sans modifier et redéployer l’application.

Azure App Configuration fournit un référentiel centralisé pour les indicateurs de fonctionnalités. Avec son aide, vous définissez différents types d’indicateurs de fonctionnalité et manipulez leurs états rapidement et en toute confiance. Vous ajoutez les bibliothèques clientes App Configuration à votre application pour activer la fonctionnalité de l’indicateur de fonctionnalité. Diverses infrastructures de langage de programmation sont prises en charge.

Les indicateurs de fonctionnalité peuvent être facilement implémentés dans un service ASP.NET Core. L’installation des bibliothèques de gestion des fonctionnalités .NET et du fournisseur App Configuration vous permet d’ajouter de manière déclarative des indicateurs de fonctionnalité à votre code. Ils activent FeatureGate attributs afin que vous n’ayez pas à écrire manuellement des instructions if dans votre codebase.

Une fois configuré dans votre classe Startup, vous pouvez ajouter des fonctionnalités d’indicateur de fonctionnalité au niveau du contrôleur, de l’action ou du middleware. La figure 10-12 présente l’implémentation du contrôleur et de l’action :

[FeatureGate(MyFeatureFlags.FeatureA)]
public class ProductController : Controller
{
    ...
}
[FeatureGate(MyFeatureFlags.FeatureA)]
public IActionResult UpdateProductStatus()
{
    return ObjectResult(ProductDto);
}

Figure 10-12 - Implémentation de l’indicateur de fonctionnalité dans un contrôleur et une action.

Si un indicateur de fonctionnalité est désactivé, l’utilisateur reçoit un code d’état 404 (introuvable) sans corps de réponse.

Les indicateurs de fonctionnalité peuvent également être injectés directement dans des classes C#. La figure 10-13 montre l’injection d’indicateurs de fonctionnalité :

public class ProductController : Controller
{
    private readonly IFeatureManager _featureManager;

    public ProductController(IFeatureManager featureManager)
    {
        _featureManager = featureManager;
    }
}

Figure 10-13 - Injection d’indicateur de fonctionnalité dans une classe.

Les bibliothèques de gestion des fonctionnalités gèrent les cycles de vie des indicateurs de fonctionnalités en arrière-plan. Par exemple, pour réduire le nombre élevé d’appels au magasin de configuration, les bibliothèques mettent en cas les états d’indicateur pendant une durée spécifiée. Elles peuvent garantir l’immuabilité des états d’indicateur pendant un appel de demande. Elles offrent également un Point-in-time snapshot. Vous pouvez reconstruire l’historique de n’importe quelle clé-valeur et fournir sa valeur passée à tout moment dans les sept jours précédents.