in

Middleware : guide complet pour tout savoir sur l’intergiciel

Middleware

Middleware ou intergiciel en français accélère le développement d’applications distribuées en simplifiant la connectivité entre les applications, les composants applicatifs et les sources de données dorsales.

Qu’est-ce qu’un Middleware  ?

Un Middleware est un logiciel qui permet un ou plusieurs types de communication ou de connectivité entre deux ou plusieurs applications ou composants applicatifs dans un réseau distribué. En facilitant la connexion d’applications qui n’ont pas été conçues pour se connecter les unes aux autres — et en fournissant des fonctionnalités pour les connecter de manière intelligente — l’intergiciel rationalise le développement des applications et accélère la mise sur le marché.

Il existe de nombreux types de middleware. Certains, comme les courtiers en messages ou les moniteurs de traitement des transactions, se concentrent sur un type de communication. D’autres, tels que les serveurs d’applications Web ou les Middlewares pour appareils mobiles, fournissent la gamme complète des capacités de communication et de connectivité nécessaires à la création d’un type particulier d’application. D’autres encore fonctionnent comme un hub d’intégration centralisé. De hubs permettant de connecter tous les composants d’une entreprise. (Il existe même des Middlewares qui permettent aux développeurs de créer leur propre intergiciel personnalisé).

Middleware doit son nom au fait que le premier Middleware servait généralement de médiateur entre une application frontale, ou client, et une ressource dorsale — par exemple, une base de données, une application mainframe ou un dispositif matériel spécialisé — à laquelle le client pouvait demander des données.

pcloud

Mais les intergiciels actuels dépassent largement ce cadre. Le middleware de portail, par exemple, englobe le frontal de l’application ainsi que les outils de connectivité du back-end ; le middleware de base de données comprend généralement son propre magasin de données. Une nouvelle catégorie de middleware exploite la technologie des conteneurs. L’objectif étant d’aider les développeurs à se connecter à des ressources réparties sur plusieurs nuages.

Comment fonctionne un Middleware

Au niveau le plus élémentaire, un middleware permet aux développeurs de concevoir des applications sans avoir à créer une intégration personnalisée chaque fois qu’ils ont besoin de se connecter à des composants d’application (services ou microservices), à des sources de données, à des ressources informatiques ou à des périphériques.

Pour ce faire, il fournit des services qui permettent à différentes applications et différents services de communiquer à l’aide de cadres de messagerie communs tels que JSON (JavaScript object notation), REST (representational state transfer), XML (extensible markup language), SOAP (simple object access protocol) ou les services Web. En général, l’intergiciel fournit également des services qui permettent aux composants écrits dans plusieurs langages — tels que Java, C++, PHP et Python — de communiquer entre eux.

Gain de temps

Le Middleware fournit notamment cette interopérabilité qui permet de gagner du temps. Il comprend également des services qui aident les développeurs à : 

  • Configurer et contrôler les connexions et les intégrations. Sur la base des informations contenues dans la demande d’un client ou d’une application frontale, l’intergiciel peut personnaliser la réponse de l’application ou du service back-end
  • Connexions et transfert de données sécurisés. L’intergiciel établit généralement une connexion sécurisée entre l’application frontale et les sources de données dorsales à l’aide du protocole TSL (Transport Layer Security) ou d’un autre protocole de sécurité réseau. Il peut également fournir des capacités d’authentification. Pour ce faire, il conteste les demandes d’informations d’identification (nom d’utilisateur et mot de passe). Mais également les demandes de certificats numériques de l’application frontale.
  • Gérer dynamiquement le trafic sur les systèmes distribués. Lorsque le trafic applicatif atteint des sommets, l’intergiciel d’entreprise peut évoluer. Il peut répartir les demandes des clients entre plusieurs serveurs, sur site ou dans le nuage. Et les capacités de traitement simultané permettent d’éviter les problèmes. Les éviter notamment lorsque plusieurs clients essaient d’accéder simultanément à la même source de données dorsale.

Types d’intergiciels

Il existe de nombreux types d’intergiciels différents. Certains se concentrent sur des types de connectivité spécifiques, d’autres sur des applications, des composants d’application et des périphériques spécifiques ; certains combinent les capacités des intergiciels pour une tâche de développement spécifique. Les types d’intergiciels les plus connus et les plus utilisés sont les suivants :

  • L’intergiciel orienté message (MOM) permet aux composants d’application utilisant différents protocoles de messagerie de communiquer pour échanger des messages. Outre la traduction — ou la transformation — des messages entre les applications, MOM gère le routage des messages. Ce, de manière à ce qu’ils parviennent toujours aux composants appropriés dans le bon ordre. Les files d’attente de messages et les courtiers en messages sont des exemples de MOM.
  • Un Middleware d’appel de procédure à distance (RPC) permet à une application de déclencher une procédure dans une autre application — exécutée sur le même ordinateur ou sur un ordinateur ou un réseau différent — comme si les deux faisaient partie de la même application sur le même ordinateur.
  • L’intergiciel de données ou de base de données simplifie l’accès aux bases de données dorsales et l’interaction avec celles-ci. En général, l’intergiciel de base de données est une forme de serveur de base de données SQL.
  • L’intergiciel d’API (interface de programmation d’applications) fournit des outils que les développeurs peuvent utiliser pour créer, exposer et gérer des API pour leurs applications, afin que d’autres développeurs puissent s’y connecter. Certains intergiciels d’API comprennent des outils de monétisation des API, permettant à d’autres organisations de les utiliser, au prix coûtant. Les plateformes de gestion d’API, les passerelles API et les portails de développeurs d’API sont des exemples d’intergiciels d’API.

Middleware d'API

Les autres types de Middleware

  • Un Middleware ORB (Object Request Broker) joue le rôle d’intermédiaire entre une demande émanant d’un objet ou d’un composant d’application et l’exécution de cette demande par un autre objet ou composant sur le réseau distribué. Les ORB fonctionnent avec l’architecture CORBA (Common Object Request Broker Architecture). Cette architecture permet à un composant logiciel de faire une demande à un autre sans savoir où il est hébergé. Sans également savoir à quoi ressemble son interface utilisateur. Le « courtage » gère ces informations pendant l’échange.
  • Les intergiciels transactionnels fournissent des services permettant l’exécution de transactions de données sur un réseau distribué. Les intergiciels transactionnels les plus connus sont les moniteurs de traitement des transactions (TPM). Ils garantissent que les transactions se déroulent d’une étape à l’autre jusqu’à leur achèvement.
  • Les intergiciels de diffusion de données asynchrones répliquent un flux de données dans un magasin intermédiaire, ce qui permet le partage de données entre plusieurs applications. Apache Kafka est l’un des exemples les plus connus d’intergiciel pour le flux de données en temps réel.
  • L’intergiciel de dispositif fournit un ensemble ciblé de capacités d’intégration et de connectivité pour le développement d’applications pour un système d’exploitation mobile spécifique.
  • Le Middleware pour portail fournit des outils et des ressources permettant d’intégrer le contenu et les fonctionnalités de diverses applications connexes « à la vitre » — ou sur un seul écran — pour créer une application unique et composite.
  • L’intergiciel de robotique simplifie le processus d’intégration du matériel, du micrologiciel et du logiciel robotiques provenant de plusieurs fabricants et sites.

Middleware d’intégration d’applications d’entreprise

Les intergiciels d’intégration d’applications d’entreprise permettent à une entreprise de créer un centre d’intégration d’entreprise, c’est-à-dire un moyen normalisé de connecter toutes les applications, tous les composants d’application, tous les processus métier et toutes les sources de données dorsales de l’entreprise étendue.

Jusqu’à il y a une dizaine d’années, le middleware d’intégration d’applications d’entreprise le plus répandu était le bus de service d’entreprise (ESB), qui servait de hub d’intégration dans une architecture orientée services (SOA). Aujourd’hui, un modèle hébergé dans le nuage, appelé « plate-forme d’intégration en tant que service » (iPaaS), permet à une entreprise de connecter des applications, des données, des processus et des services dans des environnements sur site, dans des nuages privés et dans des nuages publics, sans avoir à acheter, installer, gérer et maintenir le middleware d’intégration (et le matériel sur lequel il fonctionne) dans son propre centre de données.

Middleware de plate-forme

L’intergiciel de plate-forme (ou Middleware de plate-forme d’application) peut favoriser davantage le développement d’applications et accélérer la livraison d’applications en fournissant un environnement d’hébergement d’exécution — tel qu’un environnement d’exécution Java (Java RE), ou des conteneurs, ou les deux — pour la logique d’application ou d’entreprise. L’intergiciel de plate-forme peut inclure ou combiner des serveurs d’applications d’entreprise. Mais aussi des serveurs web et des systèmes de gestion de contenu ainsi que les autres types d’intergiciels énumérés ci-dessus.

Pourquoi utiliser un intergiciel ?

L’objectif de l’intergiciel est de favoriser l’interaction entre les différents aspects d’une application, voire entre les applications elles-mêmes. En tirant parti des Middlewares, les entreprises peuvent s’attendre à bénéficier de ce qui suit :

  • d’une connectivité efficace
  • de solutions innovantes
  • des périodes de transition plus concises
  • d’outils de travail facilement accessibles.

Par exemple, le système d’exploitation Android utilise des intergiciels pour exécuter ses logiciels rapidement, efficacement et avec une bien meilleure expérience utilisateur. Android n’utilise pas seulement le noyau Linux à son cœur et offre une architecture d’application, il fournit une couche d’intergiciel composée de bibliothèques qui fournissent des services tel que :

  • le stockage des données
  • l’affichage de l’écran
  • Multimédia
  • la navigation sur le Web.

En outre, les bibliothèques d’Android sont compilées en langage machine. Elles permettent à des fonctionnalités spécifiques de varier d’un appareil à l’autre. Ce qui accélère les performances.

Cas d’utilisation courants des intergiciels

1) Traducteur

Il existe de nombreux formats d’échange de données, tels que JSON, XML et Protobuf. Même si nous utilisons principalement JSON de nos jours, chacun d’entre eux a ses propres cas d’utilisation.

Par exemple, les Protobuffers sont connus pour être plus performants que JSON, mais ils ne sont pas lisibles par l’homme. Il se peut donc que vous utilisiez Protobuffers pour des services internes. Il se peut aussi que vous utilisiez JSON lorsque le consommateur de l’API est un navigateur.

2) Accumulation et duplication des données

Accumulation des données

Il est possible d’utiliser un middleware pour envoyer des requêtes aux deux serveurs et leur demander de rechercher dans leurs bases de données les noms d’utilisateur et les produits qui correspondent au mot recherché.

Ce qui permet ensuite d’accumuler les résultats des deux serveurs et les renvoyer au client.

Duplication des données

Nous pouvons stocker les données dupliquées dans notre serveur de recherche afin qu’il puisse les rechercher directement au lieu de demander aux serveurs de produits et d’utilisateurs. Cette méthode est moins efficace en termes de mémoire. Il est toutefois beaucoup plus rapide – et la vitesse est essentielle pour les services de recherche.

Si les tables dont nous avons besoin sont Product et User, nous pouvons également les créer dans notre serveur de recherche. Ensuite, chaque fois que nous enregistrons un nouvel utilisateur dans notre base de données des utilisateurs, nous enregistrons également une copie dans le serveur de recherche.

3) Sécurité de l’API

Pour tout code frontal côté client, nous pouvons visualiser les requêtes sortantes, soit dans la console du navigateur, soit via un proxy.

Si le code frontal envoie directement les requêtes à ce serveur, l’adresse du serveur d’authentification est exposée. Après avoir appris l’adresse IP du backend, les attaquants peuvent utiliser des outils pour trouver des endpoints et analyser le serveur à la recherche de vulnérabilités.

Il est donc possible d’utiliser un middleware comme proxy pour dissimuler l’URL du serveur d’authentification. Le frontal communique avec l’intergiciel, qui transmet la demande au serveur d’authentification et renvoie la réponse.

4) Exposer les API publiques

Dans la partie précédente, nous avons appris que les intergiciels peuvent être utilisés pour restreindre l’accès à notre API.

Voyons maintenant l’autre côté de l’équation : que faire si nous voulons donner un accès restreint à notre API ? Nous sommes peut-être ingénieurs logiciels dans une banque et celle-ci organise un hackathon. Nous devrions fournir un accès à notre API, n’est-ce pas ?

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *