agsandrew - stock.adobe.com
Microservices : avantages et inconvénients de la nouvelle structure de serveurs web
Owen Garrett, responsable produits chez NGINX, explique comment une architecture de microservices permet aux entreprises de passer à l'étape d'après : celle des environnements IT dynamiques. A condition d'en connaître les avantages et les inconvénients.
Dans le modèle microservices, les applications sont divisées en une série de services interconnectés fondés sur les capacités opérationnelles. Chaque service prend en charge une série de fonctionnalités distinctes, agissant en fait comme une mini-application dotée de sa propre logique opérationnelle, de ses adaptateurs, et même de son schéma de base de données. Les services peuvent être regroupés de différentes manières, la somme de leurs composants faisant office de nouveau produit.
Cependant, bien que les microservices puissent aider les entreprises à propulser les applications héritées dans l'ère moderne, gérer un tel environnement dynamique composé de tant de parties mobiles est une tâche complexe.
En effet, l'architecture microservices présente cinq avantages distincts et cinq inconvénients tout aussi distincts.
Architecture microservices : 5 avantages
1. Elle aborde le problème de la complexité.
L'architecture microservices décompose ce qui serait autrement une application monolithique lourde en un ensemble de services gérables dont les limites respectives sont bien définies sous forme de RPC ou API à base de messages. Avec un tel niveau de modularité, les services individuels peuvent être développés plus rapidement et ils sont beaucoup plus faciles à comprendre et à maintenir.
2. Elle permet aux entreprises d'optimiser les ressources consacrées au développement et aux applications.
L'architecture microservices permet à chaque service d'être développé de manière indépendante par une équipe dédiée.
3. Elle permet aux développeurs de prendre des décisions adéquates, spécifiques aux services.
Les développeurs ne sont plus tenus d'utiliser les technologies potentiellement obsolètes qui existaient lors du lancement d'un nouveau projet. La taille relativement petite des services permet également aux développeurs de réécrire les anciens services à l'aide de technologies plus récentes et plus pertinentes.
4. Elle rend le déploiement continu possible.
Étant donné que chaque microservice peut être déployé de manière indépendante, les développeurs ne doivent pas coordonner le déploiement des modifications locales spécifiques à leur service. Les mises à jour et nouvelles fonctionnalités peuvent être déployées plus rapidement et facilement, rendant le déploiement continu possible là où il ne l'était pas auparavant.
5. Elle optimise le dimensionnement.
Le dimensionnement est souvent le point faible des applications monolithiques, les empêchant de répondre efficacement aux besoins de l'entreprise. Les microservices sont une manière d'isoler des fonctions parfois saturées et de les construire de manière horizontale. Les organismes peuvent également déployer uniquement le nombre d'instances dont ils ont besoin dans chaque service, mobilisant le matériel qui répond le mieux aux besoins en ressources de chaque service.
Architecture microservices : 5 inconvénients
1. Le terme « micro » est relatif.
L'objectif de l'architecture microservices est de décomposer les applications en blocs gérables, mais les blocs doivent également être de taille raisonnable. Si les services sont trop grands ou trop petits, les applications créées à l'aide de ces derniers auront des problèmes. Un équilibre parfait peut être difficile à trouver, surtout pour des développeurs novices dans ce type l'architecture.
2. Une architecture fondée sur des bases de données cloisonnées pose des problèmes de mise à jour.
Les transactions commerciales mettant à jour les données de plusieurs entreprises a la fois sont assez courantes. Ce type de transaction est simple à mettre en œuvre dans une application monolithique car il n'y a qu'une seule base de données. Toutefois, dans une application basée sur les microservices, différentes bases de données appartenant à différents services devront être mises à jour.
3. Une architecture distribuée nécessite un déploiement, un dimensionnement et des tests approfondis et ciblés.
L'un des principaux avantages de l'architecture microservices, son caractère distribué, constitue également un défi considérable en matière de test, déploiement et dimensionnement des applications.
4. Les changements peuvent être compliqués.
Les dépendances entre les services peuvent être source de problèmes lors de la mise en place de changements. Les développeurs doivent soigneusement planifier et coordonner le déploiement des changements pour chacun des services.
5. Une architecture d'applications distribuées engendre des responsabilités distribuées — et nouvelles.
Bien que l’on puisse affirmer que les avantages des microservices l'emportent sur leurs inconvénients, on ne peut nier l’enjeu considérable que constituent ses inconvénients.
Certaines entreprises tentent de décomposer leurs applications monolithiques à l'aide de codes faits maison. Cela peut fonctionner — de prime abord. Au fil du temps, cependant, à mesure que le nombre de microservices, les dépendances et la complexité augmentent – et que de plus en plus de développeurs sont impliqués – les choses peuvent rapidement devenir très difficiles à gérer. Les entreprises doivent envisager la mise en place de la découverte de services, de la répartition de charge, de la mise en cache et du routage de la couche 7.
6. L'exploitation d'une infrastructure distribuée dans un environnement automatisé entraîne de nouvelles pratiques... et une nouvelle culture.
Déterminer les limites entre les services et les parties qui en sont responsables peut prendre un certain temps et nécessiter des changements culturels non négligeables. Il peut être judicieux de démarrer avec une petite équipe dotée d'expériences diverses, couvrant différents domaines, depuis les langages hérités sur lesquels le monolithe a été construit jusqu’à la technologie de containers Linux.
En outre, la sécurité peut être menacée quand un nombre croissant de microservices entre en jeu. Une vulnérabilité au sein d'un microservice peut mettre toute une application en péril, et la nature diverse des microservices peut les rendre difficiles à sécuriser. Il est important d'envisager la mise en œuvre d'un chiffrement de bout-en-bout afin d’assurer que le maillon le plus faible de la chaîne ne peut pas causer de dommage s’il est défaillant.
Le déploiement réussi d'une application microservices repose sur un contrôle accru des méthodes de déploiement par les développeurs et un important degré d'automatisation. Les entreprises doivent également envisager d'adopter une architecture microservices de référence capable de fournir des plans prêts à l'emploi pour accélérer et améliorer le développement, ainsi qu'une plate-forme de test commune pour tester les nouvelles fonctionnalités.
Pourquoi les microservices sont-ils essentiels ?
Les microservices ne sont pas parfaits et ne sont pas la solution ultime. Cependant, les microservices permettent aux entreprises d'harmoniser davantage la structure IT avec les spécificités de leur activité et de dompter la bête monolithique. Ceci est essentiel dans l'environnement actuel, où les entreprises doivent être prêtes à développer, tester, intégrer et fournir les applications demandées par les clients et ce, pas seulement quand elles ont les moyens de le faire, mais en permanence et quasiment en temps réel.
Owen Garrett est chef de Produit pour NGINX. Il gère la stratégie produit et commercialisation pour les technologies d’accélération web et de distribution de l’entreprise. Owen a plus de 15 ans d’expérience en ingénierie informatique et en gestion de produit pour des entreprises comme Riverbed. Aujourd’hui, Owen dédie son expertise technique à l’optimisation des produits de NGINX et à la satisfaction des ses clients.