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 du livre électronique 'Architecture des microservices .NET pour les applications .NET conteneurisées', disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement, lisible hors ligne.
Comme le nom l’indique, une architecture de microservices est une approche de la création d’une application serveur en tant qu’ensemble de petits services. Cela signifie qu’une architecture de microservices est principalement orientée vers le back-end, bien que l’approche soit également utilisée pour le serveur frontal. Chaque service s’exécute dans son propre processus et communique avec d’autres processus à l’aide de protocoles tels que HTTP/HTTPS, WebSockets ou AMQP. Chaque microservice implémente une fonctionnalité métier ou domaine de bout en bout spécifique au sein d’une limite de contexte spécifique, et chacun doit être développé de manière autonome et être déployable indépendamment. Enfin, chaque microservice doit posséder son modèle de données de domaine associé et sa logique de domaine (souveraineté et gestion décentralisée des données) et peut être basé sur différentes technologies de stockage de données (SQL, NoSQL) et différents langages de programmation.
Quelle est la taille d’un microservice ? Lors du développement d’un microservice, la taille ne doit pas être le point important. Au lieu de cela, le point important doit être de créer des services faiblement couplés afin que vous disposiez d’une autonomie de développement, de déploiement et d’échelle, pour chaque service. Bien sûr, lors de l’identification et de la conception de microservices, vous devez essayer de les rendre aussi petits que possible tant que vous n’avez pas trop de dépendances directes avec d’autres microservices. Plus important que la taille du microservice est la cohésion interne qu’elle doit avoir et son indépendance vis-à-vis d’autres services.
Pourquoi une architecture de microservices ? En bref, il offre une agilité à long terme. Les microservices permettent une meilleure maintenance dans des systèmes complexes, volumineux et hautement évolutifs en vous permettant de créer des applications basées sur de nombreux services déployables indépendamment qui ont chacun des cycles de vie granulaires et autonomes.
En guise d’avantage supplémentaire, les microservices peuvent effectuer un scale-out indépendamment. Au lieu d’avoir une seule application monolithique que vous devez faire monter en charge en totalité, vous pouvez faire monter en charge des microservices spécifiques. De cette façon, vous pouvez mettre à l’échelle uniquement la zone fonctionnelle qui a besoin d’une puissance de traitement ou d’une bande passante réseau pour prendre en charge la demande, plutôt que d’effectuer un scale-out d’autres domaines de l’application qui n’ont pas besoin d’être mis à l’échelle. Cela signifie des frais réduits, car vous avez besoin de moins de matériel.
Figure 4-6. Déploiement monolithique et approche des microservices
Comme le montre la figure 4-6, dans l’approche monolithique traditionnelle, l’application est mise à l’échelle en clonant l’ensemble de l’application sur plusieurs serveurs/machines virtuelles. Dans l’approche des microservices, les fonctionnalités sont séparées dans les services plus petits, de sorte que chaque service peut être mis à l’échelle indépendamment. L’approche des microservices permet des modifications agiles et une itération rapide de chaque microservice, car vous pouvez modifier des zones spécifiques, petites et complexes d’applications complexes, volumineuses et évolutives.
Le fait d’architecturer des applications basées sur des microservices à granularité fine permet des pratiques d’intégration continue et de livraison continue. Il accélère également l’ajout de nouvelles fonctions dans l’application. La composition fine des applications vous permet également d’exécuter et de tester des microservices isolés et de les faire évoluer de manière autonome tout en conservant des contrats clairs entre eux. Tant que vous ne changez pas les contrats ou les interfaces, vous pouvez changer l’implémentation interne de n’importe quel microservice ou ajouter de nouvelles fonctionnalités sans perturber le fonctionnement des autres microservices.
Les aspects suivants sont importants pour permettre la réussite de la production avec un système basé sur des microservices :
Surveillance et contrôle d’intégrité des services et de l’infrastructure.
Infrastructure évolutive pour les services (c’est-à-dire, cloud et orchestrateurs).
Conception et implémentation de la sécurité à plusieurs niveaux : authentification, autorisation, gestion des secrets, communication sécurisée, etc.
Livraison rapide d’applications, généralement avec différentes équipes se concentrant sur différents microservices.
Pratiques et infrastructure DevOps et CI/CD.
Parmi ceux-ci, seuls les trois premiers sont couverts ou introduits dans ce guide. Les deux derniers points, qui sont liés au cycle de vie des applications, sont abordés dans le livre électronique supplémentaire de l'application Docker conteneurisée avec Microsoft Platform and Tools.
Ressources supplémentaires
Mark Russinovich. Microservices : Révolution des applications alimentée par le cloud
https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/Martin Fowler. Microservices
https://www.martinfowler.com/articles/microservices.htmlMartin Fowler. Conditions préalables au microservice
https://martinfowler.com/bliki/MicroservicePrerequisites.htmlJimmy Nilsson. Cloud Computing segmenté
https://www.infoq.com/articles/CCC-Jimmy-NilssonCesar de la Torre. Cycle de vie des applications Docker en conteneur avec la plateforme et les outils Microsoft (livre électronique téléchargeable)
https://aka.ms/dockerlifecycleebook