Du développement monolithique aux micro-services : comment moderniser vos applications ?

Pratik Patel, traduit par Georges-Henri Moll (IBM)

Traduit de l’anglais par Georges-Henri Moll, IBM developer advocate

L’utilisation d’une architecture modulaire par micro-services devient un standard dans le développement Cloud. L’idée est similaire à celle des ingrédients semi-finis dans le domaine culinaire. Selon un récent sondage mené par O’Reilly, plus de 75 % des organisations basent actuellement leurs architectures sur des micro-services. Quels en sont les avantages  ? Tout comme dans le monde culinaire, s’appuyer sur des composants pré-élaborés permet d’éviter les tâches répétitives et d’obtenir directement les mets exquis qui feront votre application le repas idéal.

Les inconvénients d’une approche monolithique

Parmi les anciennes applications d’entreprise (par définition le legacy), nombreuses sont celles basées sur des architectures monolithiques. La plupart des fonctionnalités sont intégrées dans du code dispersé, et avec une multitude d’interdépendances. Il s’ensuit une grande difficulté, voire une impossibilité, à modifier, à rajouter une fonctionnalité , sans impacter les autres (par exemple la notion de régression fonctionnelle, les effets de bord). Cette approche du code oblige à reprendre l’application dans son intégralité pour la modifier, même pour des corrections ou ajouts mineurs. Souvent, plusieurs équipes travaillent simultanément sur l’application monolithique, ce qui rend la cartographie code/fonctionnalité difficile.

Comment les micro-services aident à rationaliser à la fois le développement et le déploiement  ?

La modularisation d’une application en fonctions atomiques (= micro-services) permet de travailler sur chaque composant sans impacter les autres, tout en maîtrisant mieux les dépendances et les performances. Un micro-service comprend généralement une API, des ressources de calculs et une certaine forme de stockage de données. En construisant une application, vous pouvez (ré-)utiliser non seulement les micro-services que vous avez développés vous-même, ceux des autres membres de votre équipe, mais aussi des micro-services externes - open source par exemple – et disponibles dans le Cloud.

Voici les principaux avantages du passage d’une architecture monolithique à une architecture modulaire par micro-services :

  • Une plus grande collaboration au sein de votre équipe, avec une cohérence entre les différents composants réutilisables,
  • Avec chaque micro-service hébergé dans son propre conteneur, on peut choisir l’infrastructure technologique (langages, librairies, etc.) qui lui convient le mieux,
  • La sécurité est renforcée en séparant les données des applications, et en isolant les points faibles.

Pour en savoir plus sur les avantages des micro-services et apprendre à les déployer dans des conteneurs, je vous invite à consulter cet article : Pourquoi utiliser des microservices et des conteneurs.

Considérations pour moderniser vos applications

Lors de la modernisation d’une application, il est crucial de comprendre lesquelles de ses fonctions doivent être extraites du socle monolithique, et quel niveau de granularité donner aux micro-services. Il peut y avoir de nombreuses façons d’aborder cette question, mais un point critique est de savoir s’il y a une petite équipe qui peut être responsable de chaque microservice. Il est bien sûr possible d’avoir une équipe responsable de nombreux micro-services, mais il y a des avantages majeurs à ce que chaque micro-service soit attribué à une équipe spécifique. Quelques exemples de micro-services courants :

  • Le service back-end, sur lequel peuvent se brancher plusieurs interfaces utilisateurs,
  • L’accès aux données,
  • La sécurité de bout en bout,
  • L’authentification des utilisateurs.

A vous de jouer !

Pour mieux comprendre l’architecture par micro-services, nous vous recommandons cette vidéo : Master class sur la transformation d’une application monolithique en une solution par micro-services conteneurisés.

Article original.