Des architectures monolithiques aux micro-services : le chemin vers une nouvelle normalité

La modernisation du paysage applicatif, destinée à accélérer les capacités d'innovation et la productivité des développeurs, est plus que jamais clés. Principale piste : la migration des architectures monolithiques et des applications héritées vers des plateformes de containers et de micro-services.

Les entreprises et les développeurs sont confrontés à la tâche de stimuler l’innovation et d’accélérer les délais de mise sur le marché en utilisant des technologies plus productives afin de devenir plus efficace, plus agile et plus rapide.

Pour répondre à ces objectifs, les architectures monolithiques sont intrinsèquement moins adaptées. De par leur nature, celles-ci sont trop massives et complexes ce qui induit des lenteurs, et ce, pour un lancement comme pour implémenter une mise à jour. Une seule erreur peut avoir une incidence sur la disponibilité de l’application, de surcroît, des conflits entre les différents modules peuvent survenir lorsque l'entreprise souhaite en faire évoluer le dimensionnement. A cause de ces caractéristiques, les architectures monolithiques peuvent également représenter un obstacle à l'avènement de nouvelles technologies.

Par opposition, les plateformes de containers et les micro-services permettent de stimuler la rapidité de l’innovation et de réduire les coûts.

En principe, les containers permettent de distribuer les applications sous la forme de packages intégrant les composants, les spécifications de configuration nécessaires et l’environnement d’exécution nécessaires. Les containers sont une technologie vectrice pour déployer des micro-services qui permettent le développement d’applications modulaires et déconnectées. Par ce biais, les micro-services confèrent aux entreprises les moyens d'accélérer le développement/la mise sur le marché d’applications. Les services sont fournis par le biais d’API légères et à diagnostic technologique qui augmentent la flexibilité de déploiement, de mise à l’échelle et de maintenance. Les processus et méthodes DevOps permettent également d’automatiser les tests de qualité à chaque étape du processus, ce qui réduit considérablement le temps et les efforts des développeurs.

Le rehosting, le replatforming et le refactoring

De plus en plus d’entreprises font donc le choix de passer d’architectures monolithiques à des plateformes de containers et des micro-services lorsqu’elles modernisent leurs applications. Il existe pour cela trois options : le rehosting, le replatforming et le refactoring.

Avec le rehosting ou le lift-and-shift, les développeurs mettent les applications et les charges de travail existantes dans un container avec le moins de changements possible. Ils migrent ensuite ces logiciels vers le cloud et les exploitent en tant que PaaS (Platform as a Service), sans qu’il ne soit nécessaire de les moderniser davantage.

Pour le processus de replatforming ou lift-and-reshape, les développeurs déterminent quelles parties de l’application bénéficient de la technologie des containers, les révisent en les transférant à des micro-services et intègrent des API pour les faire communiquer. L’ajout de celles-ci rend également les fonctionnalités des applications existantes accessibles à de nouvelles applications, ce qui favorise la réduction des délais et des coûts de développement.

Enfin, le refactoring (ou réécriture) implique une modification profonde du code de programme d’une application basée sur une nouvelle architecture de microservices.

Le choix de la stratégie de modernisation et de migration dépend de plusieurs facteurs comme par exemple l’application elle-même, des exigences commerciales ou encore les facteurs contextuels. Par ailleurs, il faut considérer que les trois variantes diffèrent parfois considérablement en termes de temps et de coûts de migration. En règle générale, c’est la procédure de rehosting qui est la plus rapide et la plus rentable, tandis que le refactoring est plus long et plus coûteux.

Les trois méthodes de migration aident les architectes d’applications comme les équipes de développement et d’exploitation à moderniser les solutions existantes sans avoir recours à de nouveaux développements. Dans de nombreux cas, il a été démontré qu’une approche par étapes est judicieuse dans le cadre d’une stratégie de modernisation globale : en commençant par le rehosting, en poursuivant par le replatforming et en terminant par le refactoring, qui est en fin de compte la procédure la plus complète pour moderniser l’architecture des applications.