Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Ce contenu est un extrait de l’eBook, Architecting Cloud Native .NET Applications pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
Dans le chapitre 1, nous avons affirmé que le modèle natif du cloud met l'accent sur la vitesse et l'agilité. Les utilisateurs attendent une réactivité rapide, des fonctionnalités innovantes et un temps d’arrêt nul.
Feature flags sont une technique de déploiement moderne qui permet d’augmenter l’agilité pour les applications natives cloud. Ils vous permettent de déployer de nouvelles fonctionnalités dans un environnement de production, mais de limiter leur disponibilité. Avec le glissement d’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 cloud natifs 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 pour les 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é de problème, 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 de 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 branchement 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é
À son cœur, un indicateur de fonctionnalité est une référence à un simple decision object. Elle retourne un état booléen de on ou off. L'indicateur encapsule généralement un bloc de code qui représente 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 discuté du Twelve-Factor App. Les directives ont recommandé de conserver les paramètres de configuration séparés 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é. Avec elle, 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é d’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 le cycle de vie de l’indicateur de fonctionnalité en arrière-plan. Par exemple, pour réduire le nombre élevé d’appels au magasin de configuration, les bibliothèques mettent en cache les états des indicateurs 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.