Ce site web utilise des traceurs (cookies) afin de vous fournir la meilleure expérience possible. Un cookie est une information enregistrée dans votre navigateur. Il contient plusieurs informations nous permettant de vous reconnaître si vous revenez sur notre site. Le but est de savoir quelles pages du site et quels contenus sont les plus pertinents pour vous.
Vous pouvez paramétrer tous les cookies ci-dessous.
SOA versus microservices : évolution ou révolution ?
Les DSI ayant monté une architecture orientée service (SOA) sont nombreuses à hésiter à franchir le pas vers les microservices. Quelles sont les différences entre ces deux types d’architecture ? Quels sont les prérequis des microservices en termes de méthode et d’outillage ? Et, surtout, comment migrer de l’un à l’autre ? Réponses.

Les microservices : une autre philosophie ?
Commençons déjà par un constat clair émis par les précurseurs du microservice : cette architecture est une extension du concept de SOA. La plupart des principes de conception des microservices étaient déjà disponibles dans le monde de la SOA. Alors où est la nouveauté ? D’un point de vue conception, la nouveauté réside principalement dans la description fine des designs patterns à utiliser. La SOA nous offrait une boite à outils vaste et d’excellents principes d’architecture ; les microservices nous apportent une série de bonnes pratiques et de patrons de conception plus réduite et plus adaptée aux contraintes du moment (déploiement quotidien, time to market réduit à quelques jours, inter connexion entre les applications internes et externes, relation client multi-canal). Disons simplement qu’il s’agit d’un best of de ce que propose la SOA.

Du SOA aux microservices : nouveaux principes ?
Une architecture microservices repose sur un certain nombre de principes supposés nous garantir les points essentiels :
- Non-adhérence entre les applications (une mise à jour corrective ou évolutive d’un module n’entraine pas le besoin de redéployer un autre module) : évolutivité et maintenabilité optimales, réduisant le time-to-market
- Des applications sans état (possibilité d’arrêter ou redémarrer une instance de l’application sans impacter les utilisateurs) : Haute disponibilité et support de la montée en charge automatique, réduisant au maximum les risques d’indisponibilité
- Des domaines de responsabilité clairement établis : Chaque application est responsable d’un domaine fonctionnel minimal et cohérent, éliminant les doublons de fonctionnalités entre applications, permettant la réutilisabilité des services et la construction de référentiels métiers par domaines fonctionnels à l’échelle de l’entreprise.
La granularité et le périmètre des applications doivent être revus et pensés selon une vision Domain Driven Design (DDD) pour répondre efficacement à ces enjeux.

Les microservices : une rupture technologique ?
Il existe de nombreux moyens de mettre en œuvre une architecture microservices, mais ce serait une erreur de ne pas se baser sur les technologies du moment, pensées et réalisées pour répondre précisément aux principes que nous venons d’énoncer.
Par exemple, les applications d’une architecture SOA tournent généralement sous des serveurs d’applications (Websphere, JBoss, Tomcat, etc.) sensés garantir une homogénéité des pratiques d’administration et d’exploitation (configuration des datasources, des logs, des urls de ressources externes, monitoring de l’application, administration). En architecture microservices, on va privilégier la construction d’applications autonomes (exécutables sans conteneur d’application), basées sur des frameworks tels que Spring Boot, pour bénéficier au maximum des capacités des orchestrateurs de conteneurs comme Kubernetes telles que l’autoscaling (l’adaptation du nombre d’instances disponibles d’un service en fonction des ressources consommées à un instant t). Ces applications autonomes apportent la promesse d’arrêts/relances en un temps réduit et d’une réduction des ressources physiques consommées.
De la même manière, un ESB centralisant tous les échanges inter applicatifs, pierre angulaire de la SOA, sera repensé pour être remplacé par des microservices d’orchestration formant ensemble des chorégraphies de services s’adaptant aux contextes des messages échangés. On ne construit plus une architecture figée pensée en amont, mais un SI s’autoadaptant aux évolutions rapides du marché et du SI. C’est l’ensemble des interactions entre les applications qui devient agile.
Cette nouvelle conception nécessite également de nouveaux outils de monitoring et en premier lieu un agrégateur de logs. C’est grâce à cet outil que l’on obtient une vue globale du fonctionnement du SI, basé sur l’historique réel des échanges inter applicatifs.

D‘une architecture à l’autre : quelle transition ?
Avant tout, il faut souligner ce point : la transition d’une architecture SOA à une architecture microservices n’a aucune raison de se faire dans la douleur.
Comme rappelé en introduction, tous les principes d’architectures structurant les microservices existaient déjà d’une certaine manière dans la SOA. La rupture de ce point de vue est surtout technique, avec une série d’outils modernes plus adaptés à ce nouveau contexte.
Une architecture hybride SOA (pour le legacy) / microservices (pour les nouveaux besoins) permet de gérer cette transition technologique en douceur sans prendre de retard technique sur l’enjeu principal de la DSI : répondre de manière fiable et agile aux besoins métiers de demain tout en garantissant la stabilité et l’évolutivité du système.
L’ Architecture Microservices vous intéresse ? En complément de son expertise en Architecture SI, Nexworld vous propose une formation Microservices.
Stéphane Chaillon, Architecte Senior