Partager via


Architecture des microservices .NET - Points importants à retenir

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.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

En guise de récapitulatif et de conclusion, voici les principaux points importants à retenir de ce guide.

Avantages liés à l’utilisation de conteneurs. les solutions à base de conteneurs offrent un avantage important en termes de réduction des coûts, car ils aident à réduire les problèmes de déploiement liés aux échecs de dépendances dans les environnements de production. Les conteneurs améliorent considérablement les opérations DevOps et de production.

Omniprésence annoncée des conteneurs : les conteneurs Docker sont en passe de devenir de facto le standard dans le domaine, recueillant l’adhésion des principaux éditeurs dans les écosystèmes Windows et Linux, tels que Microsoft, Amazon AWS, Google et IBM. Docker sera probablement bientôt omniprésent dans les centres de données cloud et locaux.

Des conteneurs comme unité de déploiement : Le conteneur Docker est en passe de devenir l’unité standard de déploiement d’une application ou d’un service basé sur un serveur.

Microservices. l’architecture de microservices est en passe de devenir l’approche privilégiée pour les applications stratégiques distribuées de nature complexe ou de grande ampleur basées sur de nombreux sous-systèmes indépendants, qui prennent la forme de services autonomes. Dans une architecture basée sur les microservices, l’application repose sur un ensemble de services qui sont développés, testés, versionnés, déployés et mis à l’échelle de manière indépendante. Chaque service peut inclure n’importe quelle base de données autonome connexe.

Conception pilotée par le domaine et SOA : les modèles d’architecture de microservices sont un dérivé de l’architecture orientée services (SOA) et de la conception pilotée par le domaine (DDD). Quand vous concevez et développez des microservices pour des environnements avec des règles et des besoins métier qui évoluent, il est important de prendre en compte les approches et les modèles DDD.

Problèmes liés aux microservices : Les microservices offrent de nombreuses fonctionnalités intéressantes, comme le déploiement indépendant, des limites de sous-systèmes marquées et une diversité de technologies. Cependant, ils soulèvent aussi de nombreux problèmes nouveaux liés au développement d’applications distribuées, à savoir des modèles de données fragmentés et indépendants, une communication résiliente entre les microservices, la cohérence à terme et une complexité opérationnelle imputable à l’agrégation des informations de journalisation et de surveillance des divers microservices. Ces aspects introduisent un niveau de complexité beaucoup plus élevé par rapport à une application monolithique classique. De ce fait, les applications basées sur les microservices doivent être réservées à certains scénarios bien spécifiques. Tel est le cas des applications complexes et à grande échelle qui se composent de multiples sous-systèmes évolutifs. Dans ce cas, il est judicieux d’investir dans une architecture logicielle plus complexe, car elle offrira une meilleure agilité dans le temps et facilitera la maintenance de l’application.

Des conteneurs pour n’importe quelle application : les conteneurs s’avèrent pratiques pour les microservices, mais ils peuvent aussi être utilisés avec les applications monolithiques basées sur le .NET Framework classique, lors de l’utilisation des conteneurs Windows. Les avantages offerts par Docker, comme l’élimination des nombreux problèmes liés au déploiement en production et le haut niveau de sophistication de ses environnements de développement et de test, valent pour divers types d’applications.

CLI ou IDE : les outils Microsoft vous laissent le choix quant à l’approche à adopter pour développer des applications .NET en conteneur. Vous pouvez ainsi choisir de les développer dans une interface de ligne de commande (CLI) et un environnement basé sur un éditeur via l’interface CLI Docker et Visual Studio Code. Vous pouvez aussi opter pour une approche axée sur un environnement de développement intégré (IDE) avec Visual Studio et ses fonctionnalités uniques pour Docker, telles que le débogage multiconteneur.

Des applications cloud résilientes : dans les systèmes basés sur le cloud et les systèmes distribués en général, il existe toujours un risque de défaillance partielle. Sachant que les clients et les services sont des processus (conteneurs) distincts, il peut arriver qu’un service ne puisse pas répondre à temps à une demande de client. Par exemple, un service peut être indisponible à la suite d’une défaillance partielle ou pour cause de maintenance, le service peut être surchargé et répondre lentement aux demandes, ou ne pas être accessible pendant un bref laps de temps en raison de problèmes réseau. Par conséquent, une application basée sur le cloud doit parer ces défaillances et disposer d’une stratégie pour y répondre. Ces stratégies peuvent inclure des stratégies de nouvelles tentatives (renvoi des messages ou nouvelles tentatives des demandes) et l’implémentation des modèles de disjoncteur pour éviter la charge exponentielle des demandes répétées. Avant tout, les applications basées sur le cloud doivent intégrer des mécanismes résilients (personnalisés ou basés sur une infrastructure cloud) comme les mécanismes généraux fournis par les orchestrateurs ou bus de services.

Sécurité. notre monde moderne de conteneurs et de microservices peut présenter de nouvelles vulnérabilités. Il existe plusieurs façons d’implémenter la sécurité de base des applications à l’aide de l’authentification et de l’autorisation. Cependant, la sécurité des conteneurs doit prendre en considération d’autres composants essentiels qui profitent intrinsèquement à la sécurité des applications. Pour créer des applications plus sûres, il est essentiel de sécuriser la communication avec les autres applications et systèmes. Cela passe souvent par l’utilisation d’informations d’identification, de jetons, de mots de passe et autres, que l’on appelle souvent des secrets d’application. Une solution sécurisée doit suivre les bonnes pratiques de sécurité, comme le chiffrement des secrets en cours de transit et au repos, et la prévention des fuites de secrets lors de leur consommation par l’application finale. Ces secrets doivent être stockés et conservés en lieu sûr, comme lors de l’utilisation d’Azure Key Vault.

Orchestrateurs. les orchestrateurs basés sur des conteneurs, comme Azure Kubernetes Service et Azure Service Fabric, sont des éléments clés de tout microservice et de toute application basée sur des conteneurs. Ces applications impliquent une complexité élevée, des besoins en scalabilité et une évolution constante. Ce guide vous a présenté les orchestrateurs et leur rôle dans les solutions basées sur des microservices et des conteneurs. Si vos besoins en applications évoluent en direction des applications conteneurisées complexes, il vous sera utile de rechercher des ressources supplémentaires pour découvrir plus en détail les orchestrateurs.