Blog de l'IDBSles microservices dans l'espace numérique

IDBS Blog | 6 juillet 2022

Introduction aux microservices en nuage dans les environnements GxP : Partie 1

les microservices dans l'espace numérique

Il s'agit d'une série en deux parties sur les microservices. Dans la première partie, nous verrons ce qu'est un microservice et ses avantages.

Qu'est-ce qu'un microservice ?  

Qu'est-ce qu'un microservice ? Une question simple, mais qui n'a pas de réponse définitive. Wikipedia (en anglais) lutte : "Il n'existe pas de définition unique des microservices".  

Pour notre propos, nous allons considérer qu'il s'agit d'un élément autonome d'une fonctionnalité d'entreprise qui fait une chose et la fait bien. Prenons un exemple au sein de la plateforme IDBS : l'analyse des logiciels malveillants.  

La sécurité est importante pour nous, et lorsqu'un utilisateur télécharge un fichier dans l'application, le fichier est d'abord envoyé à un service qui l'analyse à la recherche de logiciels malveillants. Si aucun logiciel malveillant n'est détecté, le fichier est enregistré ; si un logiciel malveillant est détecté, l'opération est interrompue et l'utilisateur en est informé - un scénario simple et bien défini.  

Alors pourquoi mettre en place un microservice ? Pourquoi ne pas simplement intégrer le code dans l'application ? Après tout, la création et l'exécution d'un microservice s'accompagnent d'un surcoût.  

Dans un cas simple, l'intégration est une approche viable - le code est intégré dans l'application et fonctionne. Mais lorsque vous développez davantage d'applications nécessitant cette logique, vous commencez à dupliquer le code, ce qui peut représenter une charge de travail supplémentaire pour la maintenance. De plus, les coûts de maintenance et de validation peuvent être plus élevés, car il faut mettre à jour l'ensemble de l'application pour appliquer les changements à cette seule fonctionnalité.  

Mais la maintenance simplifiée n'est qu'un des avantages que peut apporter un microservice. Quels sont les autres avantages ?  

Les avantages d'un microservice  

Mise à l'échelle  

Poursuivons avec l'exemple du vérificateur de logiciels malveillants et examinons la question de la mise à l'échelle. Votre application s'adapte bien au téléchargement d'un fichier par un seul utilisateur, mais que se passe-t-il lorsque 100 utilisateurs téléchargent des fichiers simultanément ? Ou 1 000 ? Ou 10 000 ? Dans le pire des cas, la capacité de calcul de votre serveur d'application est épuisée, ce qui empêche toute autre personne de l'utiliser. Mais ce n'est pas grave : c'est un problème que vous pouvez résoudre :  

  • Vous pourriez faire évoluer l'application en ajoutant des serveurs supplémentaires. Mais ces applications sont généralement gourmandes en ressources - la mise en service d'un tout nouveau serveur uniquement pour rechercher des logiciels malveillants n'est généralement pas rentable et peut entraîner des retards de démarrage.  
  • Vous pourriez ajouter un système de file d'attente pour accélérer le traitement, mais cela pourrait avoir un impact négatif sur l'expérience de l'utilisateur, voire l'empêcher de travailler.  

Avec les microservices, selon la manière dont vous implémentez votre service, vous pouvez appliquer une mise à l'échelle à la demande sans modifier les applications consommatrices elles-mêmes. Lorsque les demandes des utilisateurs augmentent, de nouvelles instances du service sont créées, et lorsque les demandes diminuent, les services supplémentaires sont détruits, sans intervention de l'utilisateur. En raison de la petite taille d'un microservice, la mise à l'échelle est rapide par rapport aux grands serveurs d'application.  

Les cadres et outils modernes (tels que AWS [Amazon Web Services] Lambda, Kubernetes) fournissent ce comportement standard - il vous suffit de spécifier les règles de mise à l'échelle de votre service.   

Impact de l'échec  

Personne n'aime parler des défaillances de ses produits, mais nous sommes humains et, malgré tous nos efforts, les choses peuvent mal tourner. Et même s'ils ajoutent un niveau de complexité supplémentaire à vos systèmes, les microservices peuvent aider à gérer ces défaillances lorsqu'elles se produisent, en réduisant le rayon de l'explosion lorsque le pire se produit.  

Nous en avons eu un exemple à l'IDBS avec un code de conversion de documents utilisant des bibliothèques tierces. La plupart du temps, cela fonctionnait correctement, mais la conversion de documents peut être assez volatile, et il arrivait qu'un utilisateur télécharge un "mauvais" fichier qui cassait le code de manière spectaculaire, tuant l'ensemble du serveur d'application. Cela avait un impact sur la stabilité du système car cela affectait tous les utilisateurs du serveur, et pas seulement ceux qui effectuaient des conversions. En déplaçant ce code dans un microservice, nous avons pu limiter le rayon d'action de ces défaillances au seul processus de conversion, ce qui a permis d'améliorer la stabilité du serveur d'application.   

En outre, nous avons pu réduire la charge du serveur d'application, car la conversion de documents peut être gourmande en ressources humaines et en mémoire, ce qui a également contribué à la stabilité du système.   

Améliorations contrôlées  

Même si votre service ne fait qu'une chose, et qu'il la fait bien, il aura besoin de mises à jour et de nouvelles versions, que ce soit pour appliquer des correctifs de sécurité, mettre en œuvre de nouvelles fonctionnalités ou mettre à jour des bibliothèques (y compris des définitions de logiciels malveillants !).  

Pour la plupart des entreprises, la mise à niveau de leurs services ou de leurs applications ne pose pas de problème, mais lorsqu'il s'agit d'environnements réglementés, l'impact de tout changement d'application doit être évalué et des vérifications doivent être effectuées pour s'assurer que le système fonctionne comme prévu après le changement. Les processus de gestion du changement et de revérification peuvent être coûteux, surtout s'il s'agit de mettre à jour l'ensemble de l'application, simplement pour corriger un défaut.  

Les microservices peuvent contribuer à réduire les coûts associés aux mises à niveau, car la surface de changement est considérablement réduite, ce qui signifie que seul un petit sous-ensemble des activités de qualification initiales doit être réalisé.  

Le microservice peut être mis à niveau, avec un temps d'arrêt minimal ou nul, grâce à des modèles tels que les mises à niveau en continu, sans aucune modification des applications elles-mêmes.  

Et comme le changement est limité à ce seul service, la vérification ne doit porter que sur la fonction qui utilise le service, rien d'autre. La clé pour y parvenir est une bonne conception de l'API (Application Programmer Interface) (qui inclut des tests automatisés de l'API).  

Tout ce que les applications appelantes doivent savoir, c'est l'adresse (URL) à appeler et les données qu'elles attendent - elles ne se soucient pas de la mise en œuvre proprement dite. Cela vous permet d'isoler le service de l'application principale, ce qui signifie que vous pouvez modifier le service sans modifier l'application - moins de vérifications à effectuer. De plus, grâce à la version de l'API, de nouvelles fonctionnalités peuvent être ajoutées au service sans modifier le comportement de l'API existante.  

Nous vous avons donné beaucoup de matière à réflexion ! Dans notre prochain blog de cette série en deux parties, nous nous pencherons sur le déploiement et la gestion des microservices. Restez à l'écoute ! 

Découvrez comment l'informatique dématérialisée peut vous aider à prendre de l'avance.

Regardez notre vidéo maintenant !

Plus de nouvelles