Quels sont les avantages des microservices et paieront-ils pour votre entreprise ?
Publié: 2022-01-12Le concept de microservices, une approche de conception d'une application logicielle comme un ensemble de petits services, existe depuis au moins 2015. Offrant des avantages tels que la capacité de déploiement indépendante et l'évolutivité des composants, les microservices font fureur aujourd'hui. En effet, ces avantages des microservices se traduisent par des vitesses de développement logiciel incroyablement plus rapides. Les consommateurs changeant rapidement leurs préférences et leurs comportements, les adopteurs de microservices sont en mesure de suivre le rythme. La vie est maintenant belle, disent-ils. Pas moins de 56 % des entreprises participant à une récente enquête IMB prévoient d'adopter une approche de microservices au cours des 24 prochains mois.
Près de 80 % des utilisateurs actuels déclarent que leur entreprise augmentera probablement ses investissements dans les microservices. Les avantages des microservices ont incité Netflix, Amazon, eBay, Twitter et de nombreux autres géants de la technologie à migrer d'une architecture monolithique vers une architecture de microservices. Mais votre entreprise doit-elle utiliser des microservices ? Cela dépend du contexte et si les avantages des microservices l'emportent sur les inconvénients de votre application. Ce blog fournit un aperçu d'une approche microservices par rapport à une approche monolithique et cinq avantages clés de l'utilisation d'une architecture microservices. Il partage également une partie de l'expérience d'ITRex en matière de microservices et propose des conseils sur le moment où les entreprises devraient (ne pas) utiliser les microservices. Plonger.
Définition et comparaison des microservices avec l'architecture monolithique
Qu'est-ce qu'une architecture microservices ? Un style de microservices est une approche de développement d'applications logicielles cloud natives sous la forme d'une suite de petits composants, ou services, qui sont conçus autour d'un flux de travail métier unique et fonctionnent ensemble. Essentiellement, les microservices font partie d'un changement fondamental vers DevOps, une culture dans laquelle les équipes de développement et d'exploitation informatique coopèrent étroitement à l'aide d'outils d'automatisation pour livrer plus rapidement.
Microservices :
- sont développés de manière autonome,
- utilisent leur propre base de données et peuvent être rédigés dans différentes langues,
- communiquer via des API avec des protocoles légers tels que HTTP, les courtiers de messages ou le streaming d'événements, et
- effectuer une fonctionnalité métier spécifique.
Par exemple, une application de commerce électronique basée sur des microservices peut avoir des services indépendants responsables des images de produits, de la gestion des profils d'utilisateurs, de la recherche, de la vérification des stocks, du traitement des paiements et de l'expédition. Le front-end (le côté client du site Web) est découplé du back-end (le côté entreprise) afin qu'il soit possible de les personnaliser et de les gérer séparément. Si vous prenez l'exemple d'Amazon, une architecture de microservices peut sembler écrasante, voire terrifiante.
Cependant, sans utiliser une architecture de microservices, Amazon aurait à peine évolué pour devenir l'une des entreprises les plus précieuses au monde (évaluée par une capitalisation boursière de 1,694 billion de dollars en décembre 2021). La décision de tirer parti des avantages des microservices a été prise au début des années 2000, lorsqu'Amazon a compris qu'elle ne parvenait pas à évoluer à la vitesse de croissance de la clientèle en raison de la lenteur du développement et des problèmes de codage.
Netflix s'est rendu compte des avantages d'une architecture de microservices basée sur le cloud à la fin des années 2000 après avoir été incapable d'envoyer des DVD aux clients pendant quelques jours en raison d'une corruption massive de la base de données. Après avoir divisé leur application en plus de 700 microservices, les ingénieurs de Netflix sont aujourd'hui en mesure de déployer du code des milliers de fois par jour, permettant à l'entreprise de diffuser environ 250 millions d'heures de contenu par jour à plus de 200 millions de membres dans le monde. Quelle architecture ces stars de la technologie et de nombreuses autres entreprises utilisaient-elles auparavant, à l'époque pré-cloud ? Ils ont utilisé des monolithes.
Qu'est-ce qu'une architecture monolithique ?
Une application monolithique est conçue comme une unité unique qui combine tous les composants, y compris une interface utilisateur côté client, des opérations côté serveur et une base de données. Typiquement, une architecture monolithique :
- a une base de code unique pour toutes les fonctionnalités,
- est étroitement couplé, et
- utilise des données centralisées.
Une application de commerce électronique développée à l'aide d'une approche monolithique consisterait en des services frontaux et principaux étroitement couplés déployés comme une seule unité, ce qui signifie que toute personnalisation nécessiterait des modifications dans la base de code et la plate-forme frontale (voir le schéma ci-dessous pour comparaison).
Les applications monolithiques sont loin d'être mortes. En fait, ils peuvent toujours être un bon choix car ils sont souvent plus faciles et moins chers à construire (du moins à leurs débuts). Cependant, ils viennent avec des inconvénients. Une modification d'une partie, que ce soit à des fins de mise à niveau ou de mise à l'échelle, nécessite souvent la reconstruction et le redéploiement de l'ensemble du système.
De même, l'ensemble du système peut être détruit par une partie qui se comporte mal, ce qui signifie que les monolithes sont fragiles. Les monolithes sont également difficiles à maintenir à mesure qu'ils grandissent, et l'intégration avec des outils tiers n'est pas une joie non plus. Ces inconvénients sont difficiles à ignorer dans l'environnement de marché perturbateur d'aujourd'hui dans lequel les entreprises doivent réagir rapidement aux changements pour survivre et prospérer. D'où le buzz autour des bénéfices des microservices construits par les équipes DevOps.
5 avantages clés des microservices
1. Déploiement indépendant
C'est peut-être l'avantage le plus important des microservices, du moins selon Sam Newman, l'un des premiers pionniers des microservices. Apporter des modifications à une application pour améliorer les performances ou ajouter une nouvelle fonctionnalité en réponse aux besoins émergents des utilisateurs est un jeu d'enfant avec les microservices autonomes. Chaque service peut être modifié et mis à niveau sans toucher à l'ensemble du système. Ils peuvent également être mis à l'échelle indépendamment les uns des autres si une fonctionnalité est trop chargée en raison de demandes excessives. Par exemple, vous ne pouvez faire évoluer votre service de traitement des paiements que si vous recevez plus de paiements, sans augmenter la consommation de ressources par d'autres services. De cette façon, le processus nécessite moins d'infrastructure et entraîne des économies de coûts.
2. Rayon d'explosion inférieur de l'échec
Le couplage lâche d'une architecture de microservices offre également un autre avantage des microservices : une meilleure résilience. Des frontières claires entre les services, associées à leur taille micro, limitent l'impact des nouvelles versions et garantissent l'isolation des pannes. Une défaillance d'un service ne supprime pas les fonctionnalités non liées, le reste du système restant intact et continuant à fournir des services aux utilisateurs.
3. Isolation des données
Il s'agit d'un troisième avantage que les microservices offrent s'ils sont effectués correctement. La souveraineté des données par composant est une caractéristique essentielle des microservices. Une architecture de microservices permet de délimiter clairement les services qui touchent aux données, ce qui est essentiel, surtout si l'organisation doit se conformer à la réglementation sur les données de santé ou au RGPD.
4. Utilisation de la bonne technologie
Comme les applications monolithiques ont une base de code unique, il est difficile de personnaliser une approche technique pour chaque fonctionnalité et un compromis est souvent recherché. Les microservices, en revanche, sont conçus autour des capacités métier par défaut, permettant aux équipes de choisir la meilleure technologie disponible pour une fonctionnalité particulière afin d'en tirer le meilleur parti. En effet, les microservices peuvent utiliser différentes technologies ou langages de programmation pour différents composants. Les microservices simplifient également l'adoption des dernières technologies ou l'intégration avec des outils tiers selon les besoins. L'absence de verrouillage du fournisseur est un autre avantage des microservices qui découle naturellement de son architecture faiblement couplée.
5. Efficacité
L'approche des microservices permet aux entreprises de constituer de petites équipes interfonctionnelles autour d'un service ou d'une suite de services pouvant fonctionner de manière agile. Ce modèle minimise les transferts lorsqu'une équipe doit attendre qu'une autre termine sa tâche, qu'il s'agisse de déploiement ou de test, avant de pouvoir commencer son travail. Sans dépendance vis-à-vis d'une autre équipe, la vitesse de développement s'accélère. Selon l'enquête IMB menée auprès de 1 200 dirigeants et développeurs informatiques, les adopteurs rapportent de multiples avantages à l'utilisation des microservices. Les avantages les plus importants des microservices qu'ils ont ressentis sont les suivants : 30 % — Une plus grande satisfaction des clients 29 % — Une meilleure sécurité des données de l'entreprise/des clients 29 % — Un délai de mise sur le marché plus rapide 28 % — Des performances applicatives améliorées 27 % — Une plus grande flexibilité pour augmenter ou en baisse de 26 % — Amélioration de la productivité des employés Y a-t-il des défis avec les microservices ? Eh bien, comme le dit une citation populaire, les microservices ne sont pas un repas gratuit. Continuer à lire.

La mauvaise partie des microservices
1. Complexité
La complexité inhérente des microservices augmente avec le nombre de services. Cette complexité est multiple et attribuée aux éléments suivants :
- Un contrôle descendant aux niveaux technologique et opérationnel est impossible
- Les tests sont difficiles et il n'y aura jamais trop d'automatisation des tests
- La mise en œuvre de l'intercommunication est délicate, il faut donc des développeurs talentueux
- La quantité de données enregistrées est trop importante, ce qui peut entraîner son incohérence
- Des problèmes de compatibilité peuvent survenir avec les nouvelles versions
- Il y a des difficultés à provisionner la bonne quantité de ressources
2. Coûts
Les microservices offrent aux entreprises plus d'options pour gagner de l'argent mais pas pour l'économiser. Outre le coût d'embauche de développeurs capables de construire un environnement de microservices complexe, il existe des factures de cloud et d'API. La bonne nouvelle est que les coûts permanents peuvent être considérablement optimisés car les microservices utilisent des ressources à la demande sur une base de paiement à l'utilisation.
3. Risques de sécurité
La moitié des répondants à l'enquête IBM ont cité la sécurité parmi les principaux défis auxquels ils ont été confrontés lors de leur parcours d'adoption des microservices. La sécurité doit être intégrée dès le début, car chaque microservice possède son propre ensemble de points d'entrée pour communiquer avec les autres via différents niveaux d'infrastructure, ce qui augmente l'exposition des applications aux attaques. En outre, la mise à l'échelle de l'infrastructure amplifie le risque de perdre le contrôle et la visibilité des composants de l'application.
Quand (ne pas) utiliser les microservices
Et enfin, notre dernière question : quand l'architecture des microservices en vaut-elle la peine ? Bien que le buzz derrière les microservices en tant que solution naturelle pour les applications natives du cloud soit justifié, ils ne devraient pas être votre style par défaut. La littérature le dit simplement : commencez par un monolithe et divisez-le lorsque vous rencontrez des problèmes d'évolutivité ou de consommation de ressources, ou toute autre chose qui justifie d'emprunter la voie des microservices.
Voici nos conseils clés pour ne PAS utiliser les microservices :
1. Si vous êtes une startup, les microservices sont une mauvaise idée. Il sera plus sage de commencer avec une application monolithique et de la diviser en composants plus petits lorsque cela deviendra trop délicat pour une équipe à deux pizzas. Ce que vous voulez, c'est mener des expériences bon marché plutôt que d'investir beaucoup de temps, d'efforts et d'argent dans la construction d'une architecture complexe pour un produit dont la valeur client n'a pas encore été validée. Les monolithes sont un moyen idéal de tester (et d'éliminer) les MVP pour apprendre rapidement ce qui apportera de la valeur à vos clients. Comme le dit Martin Fowler, un autre gourou très respecté des microservices : i) Presque toutes les histoires de microservices réussies ont commencé avec un monolithe qui est devenu trop grand et a été brisé. ii) Presque tous les cas où j'ai entendu parler d'un système qui a été construit en tant que système de microservice à partir de zéro, il s'est retrouvé dans de sérieux problèmes. Remarque : Si le domaine du produit est incertain, vous ne devez pas non plus utiliser les microservices lorsque vous démarrez. Il est peut-être trop tôt pour se lancer dans des décisions architecturales complexes, et il y a de fortes chances que votre approche de la mise en place des communications et des limites soit bien loin du compte lorsque votre projet arrivera à maturité.
2. Les microservices ne sont pas un bon choix pour une solution qui n'est pas complexe et peut être maintenue par une équipe relativement petite. Déployer une architecture de microservices complexe pour l'outil de planification d'événements de votre entreprise pourrait en effet amuser vos développeurs, mais cela en vaudra-t-il la peine ? Les microservices sont avant tout conçus pour répondre à un problème : la complexité. Comme l'indique Martin Fowler, "n'envisagez même pas les microservices à moins que vous n'ayez un système trop complexe pour être géré comme un monolithe".
3. N'optez pas pour les microservices si votre application est trop petite pour les justifier. Vos systèmes de gestion des stocks ou d'achat doivent-ils être convertis en microservices s'ils font parfaitement ce qu'ils devraient faire ? Encore une fois, l'idée d'utiliser des microservices est de décomposer une application complexe en un ensemble de services plus petits. Décomposer un code déjà petit et simple n'aurait pour effet que d'ajouter de la complexité - vous devez maintenant résoudre tous les problèmes de déploiement, d'interopérabilité et de débogage avec une multitude d'artefacts au lieu de déployer l'unité entière à l'ancienne.
OK alors, mais quand utiliser les microservices pour récolter leurs bénéfices ?
Les microservices ont du sens lorsque l'une des déclarations ci-dessus est fausse. En d'autres termes:
- Lorsque votre produit évolue vers quelque chose de complexe qui doit être apprivoisé ou lorsque vous souhaitez suivre les changements et ajouter des fonctionnalités importantes qui sont autrement impossibles à mettre en œuvre en raison des goulots d'étranglement de l'architecture monolithique.
- Lorsque vous construisez un produit volumineux et complexe avec une portée définie à partir de zéro. Chaque fois qu'une entreprise souhaite organiser des dizaines de développeurs pour créer une solution à grande échelle avec un ensemble clair de fonctionnalités, elle doit envisager de mettre en place de petites équipes interfonctionnelles, chacune responsable d'un seul composant. De cette façon, chaque équipe peut travailler de manière indépendante, avec des personnes dédiées gérant la gestion des API, les pipelines de données, les schémas et d'autres fonctionnalités.
Un exemple juste et concret du portefeuille ITRex serait un outil de cybersécurité interne que le client souhaitait convertir en une plate-forme de sécurité en tant que service. Les microservices étaient un choix naturel pour ce projet, car une architecture monolithique ne peut tout simplement pas fournir l'évolutivité dont une solution SaaS a besoin pour servir le nombre croissant de clients, ou la flexibilité nécessaire pour évoluer et garder une longueur d'avance sur les pirates.
Un autre projet illustratif était une plate-forme de données volumineuses alimentée par l'IA pour un détaillant mondial. Notre client voulait une solution indépendante du cloud conçue à partir de zéro. Il était clair dès le début que la plate-forme gérerait des tonnes de données et devrait être conçue comme évolutive pour répondre aux nouvelles sources de données à ajouter à l'avenir. Nous avons également dû tenir compte de la nécessité d'établir des communications avec plusieurs services externes. Réaliser les avantages des microservices dans ce projet était donc également une stratégie naturelle. L'architecture des microservices nous a permis de déployer en douceur ce système complexe, en utilisant Kubernetes pour orchestrer les microservices et les API.
Et il y avait un miroir de fitness alimenté par l'IA équipé de caméras 3D et un modèle ML fourni avec des capteurs IoT attachés à l'équipement de l'utilisateur. Ses principaux composants, notamment un panneau d'administration, une application Android et un système de gestion des règles, avaient été créés par différentes équipes à différentes étapes du projet, chacune utilisant un code et une architecture différents. Lorsque la complexité de leur gestion est devenue écrasante, nous avons compris que nous devions créer un backend pour une gestion centralisée. Et nous les avons convertis en microservices, repensant leur code et créant de nouvelles bases de données. Il y avait d'autres avantages à utiliser une approche de microservices, comme éviter le code ou les fonctionnalités en double.
Ainsi, d'après notre expérience, il est préférable d'utiliser des microservices lorsque vous devez gérer des volumes de données croissants, gérer des complexités d'interopération ou vous assurer que votre système est suffisamment flexible pour évoluer avec l'entreprise.
Note de fin
La révolution des microservices se déroule alors que les entreprises réalisent les avantages des microservices pour obtenir un avantage sur le marché. Les avantages des microservices permettent aux organisations d'être agiles et agiles au milieu des perturbations qui sont devenues la nouvelle norme. Être en mesure de déployer de meilleurs logiciels, plus rapidement, les rend prêts pour tout ce qui vient après « ce qui suit ». Avant d'emboîter le pas, il est simplement important que vous sachiez quels avantages les microservices peuvent offrir à votre entreprise et si les tracas seront justifiés. En dehors de cela, les microservices peuvent faire des merveilles.
Vous ne savez toujours pas si votre entreprise devrait tomber sous le charme des microservices ? Entrez en contact avec les consultants ITRex. Nous vous aiderons à le comprendre.
Publié initialement sur https://itrexgroup.com le 10 janvier 2022.
