Blog, Innovation

Les architectures microservices, un buzzword ?

Le monde du web ne cesse d’évoluer d’année en année, et avec lui les méthodes de développement, afin de s’adapter à des nouvelles problématiques induites par des systèmes d’information de plus en plus complexes. Aujourd’hui nous traiterons des architectures orientées services, et plus particulièrement des microservices, qui sont une nouvelle manière de structurer la logique « cachée » des applications web.
  • Text Hover
Dans une architecture en services, on va chercher à rendre indépendante chaque unité fonctionnelle, pour qu’elle puisse être appelée par n’importe quelle autre entité. C’est en quelques sortes un ensemble de « mini-serveurs », chacun étant dédié à une tâche spécifique et capable de communiquer avec les autres (on parle alors d’architecture distribuée).

La notion de « microservice » fait écho à la taille de ces unités fonctionnelles : plus c’est petit, plus c’est facile à manipuler
Le principe des services 
Une application web peut se décomposer en deux couches bien distinctes :

- Le front-end, correspondant à la partie que voit l’utilisateur et avec laquelle 
il peut interagir.

- Le back-end, correspondant à la partie cachée de l’application, centralisée 
sur un serveur, et appelée par différents clients via des requêtes réseau. 

L’approche classique étant d’avoir une seule application gérant toute la partie back-end, programmée pour répondre de façon adaptée aux différentes requêtes, on parle alors d’application monolithe.

Un problème se pose lors de la maintenance d’une telle application. En effet à chaque fois que l’on va ajouter des fonctionnalités, ce gros bloc de code va s’alourdir pour gagner en complexité, si bien qu’à un certain moment il va devenir tout simplement impossible de garder une vision d’ensemble de la structure, même en ayant une architecture logicielle travaillée.
  • Text Hover
Des inconvénients 
Une telle approche peut entraîner de nouveaux problèmes : 

- Au niveau organisationnel : les évolutions transverses deviennent plus compliquées à concevoir. Imaginez une grosse société ayant des équipes dédiées pour chaque unité, l’ajout de nouvelles fonctionnalités implique la mise en place d’interconnexions, et demande donc une bonne communication entre les équipes afin d’assurer une certaine fluidité dans les développements.
- Au niveau technique : la multiplication des appels alourdit la charge réseau et peut donc entraîner des latences. De plus, la gestion des transactions se retrouve complexifiée, notamment au niveau de la remontée des erreurs, chaque service étant un point d’entrée et de sortie potentiel.
Mais de gros avantages
Comme nous l’avons vu précédemment, l’avantage principal de l’approche microservices est d’apporter un fort contrôle de la complexité fonctionnelle des applications. 

Il est également intéressant de noter le potentiel d’innovation qu’amène cette méthode, l’interopérabilité des services à travers le réseau permettant de choisir les technologies les plus adaptées à chaque cas d’utilisation. 

Enfin, l’indépendance des services offre une plus grande liberté vis-à-vis des infrastructures associées, tout en assurant une application globalement plus robuste : 

- Un service qui tombe ne fera pas planter votre application, seulement une partie
des fonctionnalités sera indisponible.

- Vous pouvez choisir d’héberger certains de vos services sur un cloud public,
d’autres sur un cloud privé, et gérer à un niveau individuel la charge maximale
qu’ils peuvent supporter (via des mécanismes d’
auto-scaling par exemple).
Plus qu’un buzzword, l’approche microservices apporte finalement des réponses bien concrètes à des problématiques connues de la maintenance des projets conséquents. Cependant, découper une application en unités fonctionnelles pertinentes est une tâche difficile car on ne sait pas comment l’application va évoluer, et les besoins qui vont en dégager. C’est pourquoi il est plus favorable de « peler » un monolithe existant pour en ressortir des briques indépendantes, plutôt que de penser une architecture microservices en partant de zéro (à moins d’être déjà mature sur la partie fonctionnelle). 
Pour aller plus loin : « Everything fails all the time », Werner Vogels, CTO d’Amazon. L’approche microservices s’inscrit naturellement dans les paradigmes des géants du web, tels que « Design for failure », « Cloud first », ou encore « DevOps ».
Pour rester informé de nos dernières actualités,
suivez-nous sur les réseaux sociaux
Twitter
LinkedIn
Youtube
Facebook