Un homme d'affaires debout à une table, dans un bureau, tape d'une main sur un PC portable tout en regardant le téléphone portable qui se trouve dans son autre main

Microservices et architecture de microservices

Les microservices servent à créer des applications basées sur le cloud qui sont déployées dans un modèle distribué. Ils sont extrêmement évolutifs. Ils sont généralement plus rapides et faciles à construire et à maintenir qu'une architecture monolithique.

Les microservices se déploient rapidement dans le Cloud

  • L'architecture de microservices est une méthode de conception permettant de déployer et de mettre à jour rapidement des applications basées sur le cloud.

  • Les microservices fonctionnent généralement de manière indépendante, souvent dans des conteneurs qui sont faiblement couplés par une interface standard.

  • Les avantages des microservices sont la rapidité de déploiement, la facilité de mise à niveau et la prise en charge d'une évolutivité et d'une complexité accrues.

author-image

Par

Que sont les microservices ?

Les microservices sont des modules légers, faiblement couplés, qui peuvent servir de composants de base pour les applications dans le cloud. Bien que les microservices individuels puissent fonctionner indépendamment, ils sont faiblement couplés sous une interface unifiée.

L'architecture de microservices est une solution moderne et flexible qui remplace le modèle de développement plus traditionnel de l'architecture monolithique.

Dans une architecture monolithique, un serveur physique ou virtualisé est généralement alloué à chaque application, et ces serveurs tournent en permanence. L'évolutivité et la disponibilité des applications dépendent entièrement du matériel sous-jacent, qui est une entité fixe.

Les microservices, en revanche, peuvent exploiter plusieurs instances sur un seul serveur ou sur plusieurs serveurs pour permettre aux ressources d'évoluer de manière dynamique afin de prendre en charge les demandes de la charge de travail. Les microservices individuels sont souvent conteneurisés pour améliorer la portabilité et l'évolutivité.

Les différentes caractéristiques des microservices

Le cadre des microservices est un processus de développement qui présente certaines caractéristiques communes mais non universelles.

Ces caractéristiques sont les suivantes :

  • Composants. Les microservices se composent généralement de composants logiciels distincts qui peuvent être remplacés et mis à niveau individuellement. Cette architecture a des implications pour la technologie de gestion du cloud, car chaque microservice doit être approvisionné, surveillé et mis à niveau séparément.
  • Services. Les composants comprennent des services disponibles pour communiquer à la demande qui peuvent ne pas être actifs en permanence entre les demandes ou les appels.
  • Déploiement indépendant. Dans la plupart des cas, les différents composants de service fonctionnent indépendamment les uns des autres au sein du framework de microservices. La modification ou la mise à jour d'un composant a peu d'impact sur les autres services et composants, surtout par rapport à une architecture monolithique plus traditionnelle.
  • Sécurité. Le protocole mTLS (mutual transport layer security) est souvent utilisé pour chiffrer la communication entre les microservices afin de protéger les données en transit contre les logiciels malveillants et les intrusions.
  • Conteneurisation. Les microservices sont souvent déployés dans des conteneurs pour renforcer la portabilité et l'évolutivité.

Grâce aux architectures de microservices, les applications sont plus faciles à faire évoluer et plus rapides à développer. Cela favorise l'innovation et accélère la mise sur le marché de nouvelles fonctionnalités.

—Amazon Web Services (AWS)

Avantages des microservices et des applications Cloud

Les microservices continuent de gagner en popularité en raison de la flexibilité innée de cette architecture dans le Cloud. En effet, selon une récente étude menée par Intel, 83 % des nouvelles applications natives du Cloud et des solutions SaaS utilisent des microservices.1

L'un des plus grands avantages des microservices est la rapidité et la flexibilité du déploiement. L'évolutivité et la portée des applications et des charges de travail dans le Cloud ne cessent de croître. Adapter les architectures monolithiques pour répondre à ces nouvelles exigences devient donc de plus en plus difficile et chronophage. Les microservices sont désagrégés. Leur développement, leur déploiement et leur maintenance peuvent donc être gérés selon un modèle distribué.

Par exemple, plusieurs équipes de développement indépendantes peuvent se voir confier la responsabilité d'un ou plusieurs microservices. La répartition des responsabilités facilite la réorganisation de la fonction DevOps en fonction des capacités commerciales de chaque unité. Cela peut conduire à la modernisation de l'ensemble du processus de développement et à l'élimination des silos.

Les microservices posent également certains problèmes de déploiement. Les modules individuels peuvent s'exécuter sur différents systèmes pour répondre à une demande, et les performances peuvent donc être inégales d'un module à l'autre.

La latence peut également devenir un problème pour certains microservices, par exemple en cas de pics de demande. Ce problème peut souvent être résolu en surdimensionnant les ressources pour répondre aux pics de demande.

Étant donné que les microservices sont désagrégés, une défaillance de service affectant un module aura peu ou pas d'incidence sur les autres. C'est un avantage, mais une défaillance de service peut également entraîner des difficultés.

Par exemple, il peut être difficile de déboguer un service défaillant une fois qu'il a cessé de fonctionner. Une des solutions consiste à coordonner l'infrastructure et à surveiller à l'avance tous les processus et flux de données. Ces protocoles de surveillance peuvent tirer parti des collecteurs de télémétrie matériels et des unités de surveillance des performances (PMU) intégrés dans les plateformes cloud basées sur la technologie Intel®.

Fonctionnement de l'architecture de microservices

Dans une architecture de microservices, une application complexe est décomposée en capacités distinctes qui peuvent être développées et exploitées indépendamment. Les différents microservices communiquent entre eux, souvent par le biais d'API, et sont faiblement couplés, mais chacun d'entre eux peut être développé, déployé et mis à jour séparément.

Le déploiement des microservices suit souvent l'un des trois schémas suivants :

  1. Natif du Cloud. Certains services et applications établis et à fort volume sont d'abord des microservices et restent dans le Cloud. Selon International Data Corporation (IDC), environ 56 % de microservices sont natifs du Cloud et les 44 % restants sont issus d'applications héritées.2
  2. Refactor and shift. Ces déploiements commencent sur site ou dans un centre de données à la périphérie et sont refactorisés pour s'adapter à l'architecture de microservices basée sur le cloud. La refactorisation peut inclure le remappage des bases de données et d'autres ressources associées à l'architecture monolithique afin qu'elles soient associées aux microservices correspondants.
  3. Lift and shift. Certaines entreprises font migrer leurs applications vers une architecture de microservices, sans refactorisation, dans une simple transition « lift and shift ».

Microservices et DevOps

La nature désagrégée de l'architecture des microservices conduit souvent les équipes DevOps à adopter une approche transversale du développement des applications.

Au lieu de développer des applications logicielles en pile, une équipe étant par exemple affectée aux microprogrammes, une autre aux intergiciels et une troisième aux interfaces utilisateur, l'effort de développement de microservices est plus susceptible de s'organiser autour des capacités de l'entreprise.

Les processus de développement et l'organisation des équipes DevOps imitent d'une certaine manière la structure des microservices. Ces unités autonomes et quasi-indépendantes interagissent librement, transcendant les barrières et les silos.

Toutes les parties prenantes doivent comprendre que moderniser une application monolithique en une architecture de microservices est un cycle épique, qui peut prendre de nombreuses itérations. Les architectes et les développeurs doivent évaluer de près les différents aspects du monolithe et trouver une approche de migration pour chacun d'entre eux.

Sécuriser les microservices

Les microservices sont souvent conçus pour interagir les uns avec les autres. Il est donc important de protéger les données pendant qu'elles sont utilisées à chaque extrémité de l'interaction, ou en transit entre ces deux points.

Le protocole mTLS (mutual transport layer security) est souvent utilisé pour chiffrer. Cette solution permet de protéger les données à chaque extrémité et en transit contre les intrusions et les logiciels malveillants. L'objectif de mTLS est de chiffrer toutes les demandes faites par chaque microservice. Une telle approche holistique de la sécurité constitue la base d'un environnement Zero Trust, où chaque microservice, utilisateur et connexion doit être vérifié et autorisé indépendamment.

Il n'est cependant pas toujours nécessaire d'inclure l'authentification et le cryptage dans chaque microservice individuel. Pour éviter les redondances, de nombreux développeurs déploient plutôt un maillage de services. Le maillage agit comme une couche d'infrastructure ou une instance proxy dans l'architecture de microservices pour sécuriser, contrôler et surveiller les communications.

Les protocoles de sécurité peuvent nécessiter une puissance de calcul importante, ce qui peut immobiliser des ressources et ralentir la mise en œuvre des microservices. Les développeurs de microservices peuvent déployer Intel® DPT (Intel® Data Protection Technology) pour accélérer les algorithmes de chiffrement et réduire la latence.

Intel® DPT inclut Intel® Advanced Encryption Standard - New Instructions (Intel® AES-NI), Intel® Secure Key Instructions et Intel® DRNG (Intel® Digital Random Number Generator) pour la création rapide de clés de chiffrement.

Ces protections algorithmiques avancées sont optimisées pour les fonctions de sécurité intégrées des processeurs Intel® Xeon® Scalable. Par exemple, la technologie Intel® Advanced Vector Extensions 512 (Intel® AVX-512) et les innovations algorithmiques, notamment le cryptage symétrique, le hachage sécurisé et l'assemblage de fonctions, améliorent les performances de façon significative pour la cryptographie.

Les principaux fournisseurs de services de cloud proposent ces fonctionnalités de sécurité, ainsi que d'autres fonctions matérielles, dans des instances alimentées par les processeurs Intel® Xeon® Scalable.

Exemples d'architecture de microservices et son cadre évolutif

Les applications cloud sont de plus en plus évolutives et étendues. Les développeurs s'appuient donc de plus en plus sur les microservices pour construire des applications complexes et multifonctionnelles et les adapter rapidement en fonction de l'évolution des modèles d'utilisation.

Pour chaque déploiement basé sur les microservices, il y a généralement plusieurs services de composants faiblement couplés qui fonctionnent séparément. Ces composants modulaires fonctionnent ensemble pour créer une expérience utilisateur ou une application intégrée.

Les microservices présentent l'avantage de permettre le partage et la réutilisation du code dans certaines applications basées sur les microservices, où les expériences des utilisateurs peuvent être différenciées en fonction des caractéristiques du groupe. Cette approche élimine la nécessité de créer et de maintenir plusieurs instances d'un même service. Il est possible d'intégrer des microservices supplémentaires si l'une des expériences différenciées nécessite d'être personnalisée.

Par exemple, les applications populaires de covoiturage sont basées sur des microservices, mais les conducteurs et les passagers ont des expériences utilisateur différenciées. La gestion des conducteurs, le suivi de la localisation, les profils des passagers et le traitement des paiements font partie des microservices disparates qui, ensemble, prennent en charge les interfaces des utilisateurs et des conducteurs sur leurs appareils mobiles respectifs. Toutes les interfaces partagent la même marque, mais certaines fonctionnalités peuvent être différentes pour chaque groupe.

Les boutiques d'e-commerce s'appuient également souvent sur une architecture de microservices. Les processus de recommandation de produits et de paiement peuvent être développés et déployés en tant que microservices individuels, mais l'acheteur expérimente ces deux processus dans l'environnement et l'interface de la marque de la boutique en ligne.

Quand utiliser des microservices

Les microservices peuvent faciliter la migration et l'évolutivité des applications en décomposant les solutions les plus complexes en leurs composants. Chaque microservice est développé et déployé indépendamment, et les différents microservices fonctionnent ensemble comme une entité vaguement intégrée.

Les entreprises sont les plus susceptibles d'utiliser des microservices lorsqu'elles développent une nouvelle solution native du Cloud. Elles peuvent également déployer des microservices lorsqu'une architecture monolithique existante devient trop lourde pour répondre à l'évolution de leurs besoins.

La transition vers une architecture de microservices peut entraîner des changements dans l'entreprise et la structure des équipes DevOps elles-mêmes. Au fil du temps, les équipes s'aligneront sur leur nouvelle orientation transversale vers les capacités de l'entreprise et non plus sur les silos qui imitent les couches fonctionnelles de la pile technologique.

FAQ

Foire aux questions

Les microservices sont des modules légers qui peuvent servir de composants de base pour les applications dans le cloud. Bien que les microservices individuels puissent fonctionner indépendamment, ils sont faiblement couplés sous une interface unifiée.

Les microservices sont plus rapides et faciles à déployer que les architectures monolithiques. Le framework des microservices est également très évolutif. Il s'adapte à des charges de travail de plus en plus complexes et à des modèles d'utilisation étendus.