web-dev-qa-db-fra.com

Avantages d'un bus de service d'entreprise

Où puis-je trouver des informations sur les utilisations et les avantages d'un bus de service d'entreprise (ESB)?

Je cherche des informations sur:

  1. les types de problèmes et ESB aide à résoudre
  2. les alternatives à un ESB - et les compromis dans le choix entre eux
  3. ce que vous devez faire en tant que développeur pour construire des systèmes compatibles ESB

Je recherche un niveau de détail plus précis que simplement Wikipedia ou des brochures de marketing en ligne de fournisseurs. Idéalement, un exemple de code aiderait à clarifier ce qui est impliqué dans l'utilisation d'un ESB. Les informations d'un point de vue .NET ou Java seraient les plus utiles.

Merci.

28
LBushkin

Je suggérerais à ESB ou non à ESB pour commencer, écrit par le créateur de Mule .

22
Mirko N.

Les ESB sont un bon moyen d'implémenter Enterprise Integration Patterns

Types de problèmes qu'un ESB aide à résoudre

  • Vous souhaitez normaliser un certain nombre de protocoles en un seul protocole (par exemple, FTP, courrier électronique, SOAP, XMPP, etc., sur un système de messagerie), par exemple. ActiveMQ. Cela vous permet de découpler la mise en œuvre des services du protocole.
  • Vous voulez un moyen cohérent d’attacher les services à cette architecture afin qu’ils puissent écouter les messages, les traiter et générer des messages (noeuds finaux de message, adaptateurs de canaux, etc.).
  • Vous voudrez peut-être qu'un conteneur géré déploie ces divers composants (par exemple, ServiceMix, Mule)
  • Vous voudrez peut-être un certain nombre de composants et d’adaptateurs préconfigurés dans divers protocoles (par exemple, ServiceMix, Mule et Camel comportent de nombreux composants préconfigurés).
  • Vous aurez peut-être besoin de flux de travail longs. La gestion des processus métier est souvent fournie avec un ESB (Apache ODE se connecte à un certain nombre d'ESB Open Source).

Alternatives à un ESB

Les alternatives dépendent vraiment du problème que vous essayez de résoudre.

  • Pour fournir des services distribués, les gens utilisent souvent des serveurs d'applications exposant des services via un protocole RPC point à point (comme les EJB sur RMI ou les services Web sur HTTP). Ainsi, plutôt que de mettre un message sur un "bus", un client appelle directement un serveur.
  • Pour répondre à des protocoles spécifiques, vous pouvez simplement créer un client répondant à ce protocole, par exemple en écrivant une application qui écoute les courriers électroniques avec JavaMail ou qui écoute XMPP avec Smack. Si votre problème est limité à un ou deux protocoles, il ne vaut peut-être pas la peine de mettre en place un ESB complet.

Ce que vous devez faire en tant que développeur pour construire des systèmes compatibles ESB

Cela dépendra du ESB que vous choisirez, même si, étant donné que la plupart des bons sont conçus pour faire appel à toutes sortes de protocoles ainsi qu'à des POJO hôtes, vous n'avez pas besoin de beaucoup pour construire des systèmes compatibles ESB. Cela vaut la peine d'essayer de rendre votre code asynchrone.

Par exemple, Apache Camel a probablement la configuration la plus succincte, voici un tutorial

19
Jamie McCrindle

Trois avantages clés:

  • Un bus permet aux points d'extrémité de se connecter sans avoir à se parler directement. It simplifie les communications pour les points d'extrémité, car ils doivent uniquement se conformer à une interface de communication standard, le bus. (Ceci est avec n'importe quel bus technique, pas seulement les ESB)
  • Un ESB fournit un single place pour obtenir certaines métriques de point d'extrémité clés: fréquence, disponibilité et performances.
  • Un ESB a tendance à fournir plusieurs interfaces de communication. Cependant, un développeur n'a besoin que de choisir le moyen le plus facile d'obtenir et de recevoir les données du bus.

Cependant, assurez-vous que ceux-ci apporteront/ une valeur commerciale à votre situation. Avoir un ESB ajoute encore une complexité supplémentaire à votre entreprise. Idéalement, vous ne devriez pas choisir cette solution en fonction de quelques applications, mais de toute l'organisation. Il ne doit exister qu'un un cluster de production ESB pour l'organisation.

Alternatives:

  • Il suffit de connecter des éléments directement les uns aux autres, en particulier si les protocoles de communication sont les mêmes. C'est bon pour les clusters d'applications simples et ne nécessite pas trop de réflexion. Cependant, à mesure que votre nombre d'applications augmente, il devient difficile de maintenir les interconnexions.
  • Une autre alternative est une implémentation MQ. Cela vous permettra de transférer des données sans passer par des interconnexions complexes, mais vous ne pourrez alors utiliser qu'un seul canal de communication. Heureusement pour Java, ils ont le standard JMS.

Pratique

J'ai énoncé les alternatives possibles. Ils peuvent sembler moche au début, mais cela ne veut pas dire que vous ne pouvez pas commencer comme ça. Personnellement, j'écris des choses pour parler directement à la télécommande sans passer par un ESB pour m'assurer que cela fonctionne sans trop se soucier des problèmes d'intégration.

Si vous ne possédez pas d'ESB, je vous suggère d'essayer Mule pour le développement et WebSphere ESB pour les tests et la production. J'ai tendance à utiliser deux produits qui sont supposés suivre les normes pour nous assurer de garder les fournisseurs honnêtes et pour assurer que vos développeurs se conforment aux normes empêchant le blocage par inadvertance des vendeurs.

En fin de compte, répondez simplement à la question suivante: le temps ajoute-t-il un peu de complexité pour simplifier d’autres complexités pour votre entreprise vaut-il le coût à long terme?

7
Archimedes Trajano

En plus des sites déjà mentionnés. Vous devriez lire cet article sur " Ne pas utiliser un ESB sauf si vous devez absolument ". Il a été écrit par le CTO de MuleSource, l’un des plus populaires ESB open source disponibles. Ce n'est pas vraiment une réponse à votre question, mais plutôt une question de vous demander "Ai-je besoin d'un ESB"?

6
Robin

Il existe une série décente en 3 parties sur IBM concernant ESB qui est plutôt orientée concept et indépendante du vendeur (pour l’essentiel). J'ai trouvé beaucoup de bonnes choses sur ESB en fouillant dans le site d'IBM. Vous trouverez également des informations, des vidéos et des vidéos de qualité sur le site BizTalk .

3
JP Alioto

Un bus de service d'entreprise (ESB) est une architecture logicielle pour middleware qui fournit des services fondamentaux pour des architectures plus complexes. Par exemple, un ESB incorpore les fonctionnalités requises pour mettre en œuvre une architecture orientée service (SOA). D'une manière générale, un ESB peut être considéré comme un mécanisme qui gère l'accès aux applications et aux services (en particulier les versions héritées) afin de présenter une interface unique, simple et cohérente aux utilisateurs finaux via des interfaces côté client basées sur le Web ou sur des formulaires. parties avant.

Pour les services et applications dorsaux hétérogènes distribués, ainsi que pour les utilisateurs frontaux hétérogènes distribués et les consommateurs d’informations, ESB propose essentiellement ce que le middleware est censé faire: masquer la complexité, simplifier l’accès, permettre aux développeurs d’utiliser des formes génériques de requête, d’accès et interaction, gestion des détails complexes en arrière-plan. La clé de l’attrait d’ESB, et peut-être aussi de son succès futur, réside dans sa capacité à prendre en charge une intégration incrémentielle de services et d’applications en fonction des besoins de l’entreprise, et non en fonction des technologies disponibles.

http://searchsoa.techtarget.com/definition/enterprise-service-bus

WSO2 Enterprise Service Bus (Produit)

Documentation WSO2 Enterprise Service Bus (ESB) 4.7.0! WSO2 ESB est un ESB rapide, léger, 100% open source et convivial, distribué sous la licence logicielle Apache v2.0. WSO2 ESB permet aux administrateurs système et aux développeurs de configurer facilement le routage, la médiation, la transformation, la journalisation, la planification des tâches, le basculement, l’équilibrage de la charge, etc. Il prend en charge les modèles EIP (Enterprise Integration Pattern) les plus couramment utilisés et permet la commutation de transport, les événements, la médiation basée sur des règles et la médiation basée sur les priorités pour les besoins d'intégration avancés. Le moteur d'exécution ESB est conçu pour être complètement asynchrone, non bloquant et diffuser en continu sur la base du moteur de médiation Apache Synapse.

WSO2 ESB est développé sur la plate-forme révolutionnaire WSO2 Carbon, un framework basé sur OSGi qui fournit une modularité transparente à votre SOA via la composant. Il inclut de nombreuses fonctionnalités et composants optionnels (add-ons) que vous pouvez installer dans ESB et vous pouvez facilement supprimer des fonctionnalités non requises dans votre environnement, vous permettant ainsi de personnaliser et d'adapter entièrement ESO WSO2 en fonction de votre SOA exacte. Besoins.

Architecture L’infrastructure d’application sur les entreprises peut être complexe par nature, comprenant des centaines d’applications avec une sémantique complètement différente. Certaines de ces applications sont conçues sur mesure, certaines sont acquises de tiers et certaines peuvent être une combinaison des deux et peuvent fonctionner dans différents environnements système.

L'intégration de ces applications hétérogènes est vitale pour l'entreprise. Différents services peuvent utiliser différents formats de données et protocoles de communication. Les emplacements physiques des services peuvent changer arbitrairement. Toutes ces contraintes signifient que vos applications sont toujours étroitement couplées. Un ESB peut être utilisé pour relier ces couplages entre différents services et consommateurs de services.

WSO2 ESB est un ESB complet et prêt à l'emploi. Il est construit sur le projet Apache Synapse, qui utilise le projet Apache Axis2. Tous les composants sont construits en tant que bundles OSGi.

Découvrez ce podcast Hanselminutes . Il répond à quelques questions que vous devriez vraiment vous poser avant de mettre en place un bus de service.

2
Igor Zevaka

Regardez ma présentation " L'embarras du choix - Comment choisir le bon ESB ". 

J'explique quand utiliser un ESB, Integration Suite ou tout simplement un cadre d'intégration (tel qu'Apache Camel). Je discute également des différences entre les ESB propriétaires et open source.

1
Kai Wähner

La première question que vous devez vous poser est la suivante: pourquoi avez-vous besoin d'un ESB?

ESB est généralement utilisé dans les architectures distribuées Event SOA, qui semblent être un mot à la mode actuellement. Avant de vous lancer dans ESB, laissez-moi vous rappeler le premier principe de distribution des systèmes Fowler de Martin:

http://martinfowler.com/bliki/FirstLaw.html

"Ma première loi de la conception d'objets distribués: ne distribuez pas vos objets (de P de EAA).

Le chapitre correspondant est disponible en ligne. "

Lorsque vous construisez un nouveau système, l’aspect le plus important est sa pérennité, ce qui signifie une évolutivité et une facilité de maintenance faciles. Si vous construisez votre système autour du concept de services détachés avec un contrat défini statique distribué dans un environnement en réseau, vous pouvez "masquer" l'architecture souhaitée pour ce service particulier, car les interfaces sont toujours présentes.

ESB est proche des systèmes de messagerie asynchrones. Avant de vous lancer dans une telle implémentation, sachez qu’une architecture ne doit pas nécessairement être homogène, c’est que tous les services doivent être implémentés de la même manière, ne commettez pas la plus grosse erreur qui soit. Dès le début, en distribuant votre système, vous ne devriez le faire que lorsque vous avez besoin d'évoluer, pas avant. Ce que vous devez vous assurer cependant, c’est que vos services doivent pouvoir être distribués facilement en cas de besoin, sans que le contrat soit rompu, ce qui impliquerait des changements pour les clients de ce service.

En ce qui concerne les avantages d'ESB, ils sont identiques à ceux de SOA. ESB ajoute le contexte des opérations de messages asynchrones (événements).

0
MeTitus

Un très bref aperçu des avantages d'un ESB peut être trouvé ici:

http://javaenterpriseworld.blogspot.de/2014/02/benefits-of-esb.html

Les principaux pros sont grossièrement listés ...

0
leon4

il n'y a aucune raison d'utiliser un ESB. Ne le fais pas. Complexité inutile. Pourquoi passer par un intermédiaire quand vous pouvez aller directement? Les gens d'ESB vous diront que point à point est mauvais, mais que, d'une manière ou d'une autre, pointer du doigt vers et depuis l'ESB est bon.

0
user671731
0
Albert Cheng

Tout d'abord, laissez-moi vous expliquerSOA. Il s’agit de construire une architecture sous la forme d’un ensemble de modules logiciels réutilisables exposés sous forme de «services» avec des interfaces bien définies. Les services facilitent le couplage lâche et extraient les détails de mise en œuvre des clients.

L’architecture SOA peut être compliquée si chaque composant appelle directement des services. Par conséquent, il présente les problèmes communs suivants.

  • Comment trouvez-vous les services utilisés et ceux qui ne le sont pas?
  • Comment trouvez-vous les clients utilisant un service particulier?
  • Comment déployez-vous les mises à jour d'un service ou exposez-vous les nouvelles versions aux services existants sans interruption?
  • Comment prenez-vous en charge la compatibilité en amont pour les clients plus anciens appelant des interfaces de service plus anciennes
  • Comment effectuez-vous la journalisation, l'audit, l'application de la sécurité, etc. sur tous les services pour le trafic interne/externe?

Le ESB est la solution aux problèmes ci-dessus. ESB…

  • Aide apporte dans l'ordre
  • Peut appliquer strictement les politiques de l'entreprise
    • par exemple. Sécurité, limitation, audit, etc. appliqués de manière cohérente
  • Virtualise les points de terminaison de service
    • Facilitez la gestion des versions, les mises à jour flexibles, l'équilibrage de charge/haute disponibilité, etc.
  • Effectuer un routage, une médiation, une transformation, etc.

Vous trouverez quelques exemples de cas d'utilisation ici . Notez qu'ils proviennent du site de développement d'AdroitLogic et qu'ils sont étroitement associés à UltraESB, l'ESB d'AdroitLogic. 

0
Rajind Ruparathna