Implémenter des applications résilientes
Conseil
Ce contenu est un extrait du livre électronique « .NET Microservices Architecture for Containerized .NET Applications », disponible sur .NET Docs ou sous forme de PDF téléchargeable gratuitement et pouvant être lu hors ligne.
Vos applications basées sur des microservices et sur le cloud devront faire face tôt ou tard à des défaillances partielles qui se produiront à coup sûr. Vous devez concevoir votre application de façon à la rendre résiliente face à ces défaillances partielles.
La résilience est la capacité à récupérer après des défaillances et à continuer de fonctionner. Il ne s’agit pas d’éviter les défaillances, mais d’accepter le fait qu’il s’en produira et qu’il faudra y répondre pour éviter des temps d’arrêt ou des pertes de données. La résilience vise à remettre l’application dans un état entièrement fonctionnel après une défaillance.
Il est déjà assez difficile de concevoir et de déployer une application basée sur des microservices. Mais vous devez aussi veiller à ce votre application continue de s’exécuter dans un environnement qui subira à coup sûr une défaillance quelconque. Par conséquent, votre application doit être résiliente. Elle doit être conçue pour faire face à des défaillances partielles, qu’il s’agisse de pannes réseau ou d’incidents sur des nœuds ou des machines virtuelles dans le cloud. Même les microservices (conteneurs) qui sont déplacés sur un autre nœud de cluster peuvent occasionner de brèves défaillances intermittentes au sein de l’application.
Les divers composants qui constituent votre application doivent aussi intégrer des fonctionnalités de contrôle d’intégrité. En suivant les recommandations fournies dans ce chapitre, vous pouvez créer une application capable de fonctionner correctement en dépit des temps morts temporaires ou des interruptions normales qui se produisent dans les déploiements complexes et dans le cloud.
Important
eShopOnContainer utilisait la bibliothèque Polly pour implémenter la résilience à l’aide de clients typés jusqu’à la version 3.0.0.
À compter de la version 3.0.0, la résilience des appels HTTP est implémentée à l’aide d’un maillage Linkerd, qui gère les nouvelles tentatives de manière transparente et configurable, au sein d’un cluster Kubernetes, sans avoir à gérer ces problèmes dans le code.
La bibliothèque Polly est toujours utilisée pour ajouter la résilience aux connexions de base de données, en particulier lors du démarrage des services.
Avertissement
Tous les exemples de code et images de cette section étaient valides avant d’utiliser Linkerd et ne sont pas mis à jour pour refléter le code réel actuel. Ils ont donc un sens dans le contexte de cette section.