Quelle est la différence entre API Gateway et ESB?
ESB est un middleware traditionnel utilisé dans les solutions SOA pour le routage, la transformation des messages, le pontage de protocoles, entre autres. Une nouvelle catégorie de solutions middleware appelée API Gateway est désormais proposée par plusieurs fournisseurs. Ces solutions sont généralement décrit comme le point central pour accéder aux services REST et SOAP offerts publiquement par une organisation. Cependant, les solutions API Gateway semblent offrir un sous-ensemble de fonctionnalités ESB typiques .
Alors, quelles sont les différences entre ESB et API Gateway? Quand dois-je utiliser l'un ou l'autre?
Une passerelle API est quelque chose qui agit généralement comme un proxy pour vos services Web et fournit une valeur intéressante, telle que: la journalisation, rendre les services SOAP appelables comme REST services , aide au débogage, suivi, etc ... Parce que la passerelle API est un espace entre le consommateur et vos services, elle peut facilement capturer du trafic et faire ce genre de choses.
Un bus de services d'entreprise (comme nServiceBus) est conçu pour s'asseoir au-dessus d'un protocole de messagerie (comme RabbitMQ) pour lui donner des fonctionnalités qui ne sont pas fournies (ou des fonctionnalités difficiles à implémenter) avec la messagerie de base ou pub-sub, par exemple : Messages durables stockés dans la base de données, logique de nouvelle tentative, encapsulation de l'écouteur, moyens plus faciles de s'abonner aux messages et sagas. Vous pouvez utiliser le protocole de messagerie sans utiliser d'ESB mais pas l'inverse. Par exemple, vous pouvez utiliser RabbitMQ sans utiliser nServiceBus .
Comme les passerelles API et les ESB sont capables de servir des mandataires de service, si l'on ne considère que les capacités de médiation et de transformation des deux outils, ils peuvent apparaître identiques. La principale différence dans une passerelle API pour moi réside dans le but spécifique pour lequel elle est créée. Une passerelle API devrait être en mesure de servir de point d'entrée aux ressources auxquelles elle est confrontée en plus de fournir la transformation et certaines capacités de routage. De plus, ils devraient pouvoir déléguer les aspects de contrôle d'accès et de limitation à d'autres composants spécialisés, en les utilisant, ils devraient être en mesure de garantir le comportement souhaité. Comme une passerelle API ferait partie d'une solution de gestion d'API, toutes ces capacités seront prises en charge OOTB.
Il peut être possible d'obtenir un comportement similaire pour les mandataires de service à l'aide d'un ESB et d'autres composants ou logiciels externes. Cependant, étant donné que les ESB sont destinés à être utilisés pour répondre à un ensemble plus large d'exigences d'intégration et ne sont pas spécialisés dans les cas d'utilisation de la gestion des API, il serait beaucoup plus difficile de les atteindre.
Une passerelle API est un proxy fourni pour le client. La passerelle offre au client une interface cohérente indépendamment de tout changement au sein du système plus large. Il permet également au système interne de changer sans affecter le client.
Un ESB fournit un moyen de communication de service à service. Avec cette technique, les services n'ont pas besoin de communiquer entre eux, ce qui réduit le couplage.
Il existe de nombreuses variantes et détails de mise en œuvre, mais c'est la différence fondamentale.