
Qu’est ce qu’un middleware ?
Un middleware, ou intergiciel en français, est un logiciel qui fournit des fonctionnalités aux applications. Il se situe entre le système d'exploitation et les applications qui s'exécutent dessus, et fait le lien entre ces applications, les données et les utilisateurs.
D'où vient le middleware
Son histoire commence dans les années 1980 et suit l'évolution des systèmes informatiques vers davantage d'interopérabilité. Les premiers systèmes étaient souvent monolithiques : les applications étaient étroitement liées au système d'exploitation et au matériel. Avec la montée en puissance des réseaux et des architectures distribuées, il est devenu nécessaire de faciliter la communication et la coordination entre des applications réparties sur plusieurs machines.
C'est dans les années 1990 que le middleware s'est réellement développé comme couche d'abstraction logicielle entre les applications et le système d'exploitation. Les enjeux de l'époque étaient déjà ceux d'aujourd'hui : faire communiquer les applications entre elles et intégrer des systèmes hétérogènes.
Les grandes familles
Le terme recouvre des logiciels de nature assez différente. Les middlewares de communication fournissent les mécanismes d'échange entre applications distribuées, qu'il s'agisse d'appels de procédure à distance (RPC), de middlewares orientés messages (MOM) ou de services web. Les middlewares de gestion des transactions coordonnent des opérations complexes impliquant plusieurs ressources et garantissent l'intégrité et la cohérence des données, à l'aide de bases de données distribuées, de gestionnaires de transactions ou de frameworks de coordination.
D'autres familles se concentrent sur un besoin transversal. Les middlewares de sécurité prennent en charge l'authentification, l'autorisation, le chiffrement des données et la gestion des certificats. Les middlewares d'intégration d'applications, comme les ESB (Enterprise Service Bus) ou les solutions EAI (Enterprise Application Integration), adaptent, transforment et traduisent les données, les interfaces et les protocoles pour relier des systèmes hétérogènes. Enfin, les middlewares de gestion des services assurent la découverte, la configuration et l'administration des services logiciels : registres de services, mécanismes de publication/abonnement, orchestration et gestion des politiques.
Comment il fonctionne
Le premier rôle d'un middleware est l'abstraction. Il masque aux applications les particularités du système d'exploitation et de la plateforme matérielle, et leur offre une interface unifiée pour accéder aux ressources système, aux services et aux autres applications.
Sur cette base, il assure la communication entre applications ou composants distribués grâce à des mécanismes standardisés (RPC, MOM, services web) qui leur permettent d'échanger des messages, de partager des données et de coordonner leurs activités. Il prend aussi en charge l'intégration, en adaptant et en traduisant données, interfaces et protocoles pour que des technologies et plateformes différentes puissent interopérer.
Le middleware met en outre à disposition des services communs : gestion des transactions, sécurité, gestion des services, des événements ou des données. Ces services masquent la complexité des opérations sous-jacentes et permettent aux développeurs de se concentrer sur les fonctions métier. Il offre enfin des mécanismes de gestion des erreurs et de tolérance aux pannes, avec des fonctions de surveillance et de reprise qui aident les applications à traiter les situations anormales de façon robuste.
Ce qu'il apporte
L'intérêt principal est l'indépendance vis-à-vis du système d'exploitation et du matériel. Une application qui s'appuie sur un middleware est plus facilement portable et réutilisable, et peut être déployée sur différentes plateformes sans modifications majeures. Les interfaces standardisées favorisent aussi l'interopérabilité entre technologies et la communication entre applications développées avec des outils différents.
Le middleware encourage par ailleurs une architecture modulaire : les développeurs construisent leurs applications à partir de composants et de services existants, ce qui accélère le développement. Il apporte de la souplesse, puisqu'on peut ajouter, mettre à jour ou remplacer un composant sans toucher au reste du système, faire évoluer les fonctionnalités ou répartir la charge. Il peut enfin centraliser la gestion et la surveillance de l'ensemble.
Faut-il en intégrer un ?
Tout dépend des besoins de l'application et des objectifs du projet. Pour une application simple, sans interactions complexes entre composants ni communication avec des systèmes externes, un middleware n'est pas forcément utile. Il devient en revanche pertinent dès que l'application doit dialoguer avec des systèmes développés avec d'autres technologies, ou que le projet repose sur la réutilisation de composants existants et une architecture modulaire : le middleware fournit alors des briques prêtes à l'emploi.
Il évite aussi de redévelopper des fonctions courantes comme la gestion des transactions, la sécurité, la communication inter-applications ou la gestion des services. Il faut toutefois garder en tête qu'il introduit une certaine surcharge en performances et en ressources, un critère qui pèse lourd sur une cible embarquée aux moyens limités.
Dans un système embarqué, le middleware s'insère dans une pile logicielle plus large ; nos articles sur le BSP et sur le software permettent de situer chaque couche. Nos équipes peuvent vous aider à définir l'architecture adaptée à votre plateforme.
