Article 1 sur 3
Du SOA aux microservices
L’architecture « microservices », voici un nouveau mot à la mode dans le monde fascinant de l’IT. Mais qu’est-ce qu’une architecture microservices ? L’objectif d’une telle architecture serait de déployer rapidement des applications logicielles en local ou dans le Cloud en exploitant une suite de petits services et en limitant le périmètre de chaque service. « L’application va être découpée en une multitude de petits services simples à démarrer et à mettre à jour, et pour faire communiquer ces petits services, il suffit d’exploiter un simple bus de messaging (ndlr : ou via un protocole de type API Rest par exemple) », explique Laurent Seror, président directeur général d’Outscale (voir encadré). Pour Nicolas Roux, consultant et co-fondateur du cabinet Agaetis spécialisé dans la gestion de la donnée, les architectures microservices ont l’avantage de supporter plusieurs langages, chaque microservice peut ainsi être écrit dans un langage de programmation différent ou utiliser des bases de données spécifiques, et de préciser : « L’architecture microservices n’est pas un marché, c’est simplement une évolution d’un modèle d’architecture. Les entreprises clientes ne viennent pas chercher une architecture microservices en tant que telle, elles viennent nous chercher car leurs besoins d’applications ou de refonte de leurs sites web sont de plus en plus complexes avec des traitements importants et une prise en compte d’éléments multiples. »
En clair, le fonctionnement de cette approche microservices s’apparente clairement aux jeux de stratégie ou de simulation en temps réel qui font fureur sur les tablettes dont le but est de bâtir sa structure, la faire évoluer et la faire vivre via une multitude de composants qui communiquent les uns avec les autres.
Un fonctionnement en mode asynchrone pour les architectures microservices
En soi, cette approche n’est pas nouvelle, souvenons-nous des SOA (Service Oriented Architecture) il y a déjà une dizaine d’années, ces architectures orientées services dont le but était de créer des méthodologies pour concevoir et déployer des applications. A la différence que les architectures SOA gèrent des services de taille plus importante et qu’elles fonctionnent en synchrone contrairement aux architectures microservices qui se doivent de fonctionner en asynchrone pour une meilleure résistance, une meilleure tolérance de panne et une meilleure répartition de la charge (scalabilité). En effet, les applications en microservices étant fortement interconnectées, il n’est pas possible d’attendre la réponse d’un service en faisant un appel en mode synchrone au vu de la multitude de services, les services seront lents et par conséquent, l’application fonctionnera au ralenti.
Pour Laurent Seror, il est plus difficile de déployer des architectures microservices dans un SI existant. « Passer d’un mode synchrone à un mode asynchrone oblige les entreprises à tout refaire. Pour l’heure, les entreprises françaises ne sont pas prêtes mais certaines n’auront pas le choix pour faire face à une concurrence exacerbée. Il faut aller très vite avec beaucoup d’agilité. Cela dit, nous constatons un réel intérêt sur ce sujet et nous observons déjà certaines remontées de la part des grandes entreprises pour des nouveaux projets. » Pour Nicolas Roux, c’est effectivement plus simple de partir d’une feuille blanche. Par exemple, son entreprise Agaetis a créé en exploitant les microservices pour une société cliente un prototype de job board couplé aux réseaux sociaux. L’objectif était donc de trouver des liens entre la société émettrice de l’offre d’emploi et le demandeur. Grâce à la connexion aux réseaux sociaux et aux informations renseignées sur le CV, le système était capable pour chaque offre de mettre en avant des personnes ayant des liens avec le candidat et l’entreprise (ex: parcours scolaire commun, ancien collègue, ami Facebook, etc.). Plusieurs technologies ont été exploitées pour ce projet dont Elasticsearch pour la recherche des annonces, mongoDB pour le stockage des activités et profil des utilisateurs, postgreSQL pour la gestion des utilisateurs et Spring comme bus commun de communication.
Des frameworks prêts à l’emploi pour créer des architectures microservices
Aujourd’hui, ce sont surtout les sociétés du web qui utilisent ce type d’architecture microservices car elles ont besoin d’infrastructures agiles capables de s’adapter et de fournir rapidement du delivery pour faire face à un fort environnement concurrentiel. In fine, elles mettent indirectement leur expérience personnelle au profit de toutes les entreprises. Reste que l’architecture microservices est un marché naissant qui n’a pas encore vraiment dévoilé son leader capable de proposer un véritable PaaS dédié pour faciliter la création et le déploiement des microservices. Cela dit, des frameworks légers existent déjà sur le marché pour aider à la création et à la mise en place de ces architectures microservices comme Dropwizard, Sinatra (Ruby), Spring Boot (pour Java) ou Vert.X (multilangages dont Java, Javascript, Groovy et Ruby). « Il est important de disposer de frameworks légers pour faciliter le déploiement. A mon avis, je ne suis pas sûr qu’un leader se positionne sur ce marché car l’objectif n’est pas d’imposer ou de remplacer un langage de programmation par un autre », tient à préciser Nicolas Roux.
Une organisation agile de type DevOps
Dans une approche « architecture microservices », il est nécessaire d’avoir une organisation extrêmement agile de type Devops (compétences multiples de développeur et d’administrateur système et sécurité) qui permet certes d’améliorer le Time To Market, mais surtout de prendre en compte les aspects très nombreux liés à la sécurité. En effet, le développeur devra aussi assumer des responsabilités historiquement assurées par les opérationnels. De plus, la multiplication des petits services va accroître les possibilités d’attaques pour les hackers sans oublier la protection des données qui ne sera plus forcément centralisée.
TinaOS, l'outil d'orchestration cloud d'Outscale orienté full microservices en 2017
La démocratisation des architectures microservices semble aussi s’accélérer grâce à la technologie de conteneurisation open source Docker qui permet de créer et faire tourner des applications avec bien plus d'agilité. « La conteneurisation est un moyen de produire une architecture microservices, cette couche apporte une souplesse de production adaptable à la charge », constate Camille Cacheux de l’hébergeur Coreye qui devrait lancer un « Docker as a service » début 2016. Précisons également que Coreye fait partie du groupe Pictime spécialisé dans l’intégration logicielle pour le secteur du e-commerce et qui a déjà une certaine expérience dans la mise en production de Docker.