Les microservices : est-ce réaliste ? Microservices et DevOps, un couple de choc ?

Souvent la mise en place d'une architecture en microservices est couplée à la mise en place d'une organisation de type DevOps. "Pour permettre de déployer des services plusieurs fois par jour, les processus de déploiement doivent être optimisés et automatisés. Ce qui implique que les équipes se tournent vers le DevOps." explique Jérôme Mainaud. "Chaque microservice est une petite application en tant que telle mais beaucoup plus simple que la globalité de l’application. Elle sera gérée de A-Z par une équipe. Dans l’idéal, la même équipe assura aussi le suivi de la production. C’est un concept développé par Amazon : le 'You build it, you run it'. Il oblige les développeurs à prendre en compte les problèmes de production ou d’en payer le prix par la suite."

Le passage à une architecture en microservices est l'occasion d'adopter une organisation de type DevOps. © Adrian Cockcroft / Slideshare

A chaque microservice son équipe pluridisciplinaire

Chaque microservice étant autonome, il est possible de le faire évoluer indépendamment des autres. Alors qu’une application monolithique doit être entièrement redéployée, pour toute évolution, seul le service à modifier sera concerné dans une application à base de microservices. Cela augmente les chances de succès et permet de faire évoluer chaque microservice selon des méthodes agiles. L'architecte estime : "les microservices sont particulièrement adaptés au développement agile et aux pratiques de DevOps avec de petits projets autonomes organisés autour d’une fonction métier, développés et opérés chacun par une petite équipe pluridisciplinaire"

Une gouvernance nouvelle en mode multiprojets

Revers de la médaille, il faut s'attendre à une augmentation certaine de la complexité d’intégration de l'ensemble. En effet, chaque service peut être sollicité par de nombreux autres services. De ce fait, chaque évolution de son interface peut entrainer des changements en cascade sur tous les services. "Il existe de nombreuses techniques qui permettent de faire évoluer les interfaces en garantissant la compatibilité ascendante, souvent en relâchant les exigences contractuelles de ces interfaces", tempère Jérôme Mainaud. "Mais il est vrai que ces évolutions restent délicates et risquent de casser un appelant."

Quand au directeur technique ou au responsable d'application, au lieu d’avoir à gérer un projet, c'est à plusieurs responsables de microservices qu'il va devoir faire face. Une gestion de projet où il faut savoir concilier les intérêts parfois divergents de chacun pour faire évoluer l'ensemble dans la bonne direction.

SOA / Architecture Web