Bei einem früheren Job wurde viel über "Enterprise Service Bus" (ESB) gesprochen. Ich habe Teile eines konzeptionellen Buches darüber gelesen, aber nie wirklich verstanden, wie Sie es konkret umsetzen / integrieren würden. Ich bin mit SOA / queuing / directory services / etc. Vertraut. aber ich verstehe nicht, was genau ein ESB ist.
Ist es eine konkrete Sache (Service / Server / Broker / etc.), Dass Sie einfach alle Ihre Apps auf unterschiedliche Weise daran anschließen, oder ist es eher eine konzeptionelle Art, Systeme zu entwerfen?
Alle Erklärungen oder Links zu guten Beispielen wäre sehr dankbar. Vielen Dank.
Antworten:
Es ist ein ziemlich hohes Konzept der Abstraktion. Das zentrale Konzept besteht darin, dass der ESB die Middleware und Schnittstellen bereitstellt, mit denen Unternehmen ihre Anwendungen verbinden können, ohne Code schreiben zu müssen.
Dies kann eine Mediation umfassen, um inkompatible Protokolle, Daten und Interaktionen miteinander in Einklang zu bringen.
Die Idee eines zentralen Busses, an dem alles vorbeifährt, bietet Gelegenheit für zusätzliche Abstraktionsebenen. Durch die Verwendung von Industriestandards zum "Einstecken" anderer Anwendungen, Clients und dergleichen in diesen Bus ist es relativ einfach, neue Dienste, Datenquellen und Clients mit unterschiedlichen Anforderungen zu verbinden.
Aktuelle Implementierungen
Bei den tatsächlichen Implementierungen ist dies die Domäne sehr großer Unternehmen, die Unternehmen unterstützen. Obwohl es sehr Modewort ist, ist das Ziel ein Ideal, das auf einer kleinen Ebene durch Vergleich mit dem Internet verstanden werden kann:
Ähnlichkeit mit dem Internet
Ein großer Kommunikationsbus mit sehr unterschiedlichen Verwendungszwecken und Daten, die jedoch alle standardisierte Protokolle ausführen.
Tatsächlich kann man einen HTTP-zu-FTP-Connector schreiben, der es Browsern ermöglicht, auf FTP-Sites zuzugreifen, ohne einen FTP-Client aufzurufen (normalerweise jetzt im Browser integriert).
Mashups
Mashups zeigen eine interessante Implementierung: Nehmen Sie einige Busroutendaten der Behörde von San Francisco, Karten von Google und Sushi-Bar-Standorte von Yahoo mit Bewertungen und führen Sie eine einfache Abfrage aus, die Ihnen die nächstgelegene Sushi-Bar gibt und sie so gewichtet, dass Sie es sind bereit, ein wenig weiter zu reisen für eine bessere Bar.
Alle völlig unterschiedlichen Dienste, die für sich genommen nicht kompatibel sind, aber mithilfe von Standardverbindern (z. B. Yahoo-Pipes) zu einem zusammenhängenden und nützlichen Ganzen zusammengefasst werden können.
-Adam
quelle
Haftungsausschluss: Ich arbeite für IBM und berate über WebSphere ESB, ein IBM Produkt, mit dem ESBs erstellt werden können. Das Folgende ist meine Meinung und spiegelt nicht unbedingt die Position von IBM wider.
Ein ESB ist leider für verschiedene Menschen etwas anderes.
Für mich ist ein ESB eine beliebige Technologie, die Sie in eine SOA (Service-Oriented Architecture) einfügen können, um unterschiedliche Systeme miteinander zu verbinden. Es führt häufig die Funktionen der Protokolltransformation, Nachrichtenänderung, Weiterleitung, Protokollierung, Funktion als Sicherheitsgateway usw. aus. Beispielsweise können Sie einen ESB verwenden, um einen Dienst, der zuvor nur als Webdienst verfügbar war, auch als JMS-basierten Dienst verfügbar zu machen.
In dieser Hinsicht ähneln ESB-Implementierungen (genauer gesagt Software, die zum Erstellen von ESBs verkauft wird - wie ich sie konsultiere) häufig technologisch dem, was früher als Messaging- oder Queuing-Broker bekannt war, obwohl der Zweck etwas anders ist , weil es (wie die Akronyme andeuten) sich eher an Diensten orientiert als Nachrichten von einem Ort zum anderen zu verschieben. Wie wichtig die Unterscheidung technologisch ist, ist Ansichtssache.
quelle
Meine Erfahrung mit kommerziellem ESB ist, dass es sich um eine überzogene und teure Technologie handelt, die so viele Probleme verursacht, wie sie löst. Der ESB wird neue Systeme und Legacy verbinden, Nachrichten werden über den Bus fliegen und alles wird nahtlos mit allem anderen kommunizieren können. Wenn Sie etwas Ausfallsicherheit und Orchestrierung einsetzen, verfügen Sie über eine sehr leistungsstarke Unternehmensanwendungssoftware.
Das Problem tritt auf, wenn Sie versuchen, sie tatsächlich zu verwenden. Der Aufwand für das Schreiben für den Bus, das Erstellen der Nachrichtenstrukturen usw. kann die Vorteile übersteigen. Als kostenintensives Element wird der ESB als Allheilmittel für alle technischen Probleme angesehen, die es nicht sind. Es wird zu viel Zeit für den Bus und nicht für die Anwendungen / Daten aufgewendet, die verbunden werden. Es ist häufig der Fall, dass mehrere konkurrierende Standards in derselben Organisation um die Vorherrschaft kämpfen, was zu den klassischen, von der Technologie dominierten Silos führt, die diese Systeme tatsächlich reparieren sollten.
IMHO ist es weitaus besser, eine kleine Anzahl spezifischer Schnittstellen zu erstellen, wobei normalerweise Webdienste nur zwischen den Systemen verwendet werden, die sie benötigen.
quelle
Es ist im Grunde eine konzeptionelle Art, ein System zu entwerfen - Softwareunternehmen versuchen, Ihnen mehr zu verkaufen, indem sie den ESB-Aufkleber darauf kleben, und Manager mögen es, weil ein ESB von einer höheren Ebene aus gut aussieht.
Ein ESB ist im Grunde eine MOM (Message Oriented Middleware) mit einem zusätzlichen Datenmodell- und Strukturdefinitionsmanagement. Sie haben eine gemeinsame Datendefinition für alle Anwendungen und Adapter auf diesem Bus (möglicherweise XML mit einer gemeinsam genutzten XSD). Alles, was eine Verbindung herstellt, MUSS Informationen senden, die dieser Datendefinition entsprechen. Der ESB unterstützt das Laden, Freigeben und Versionieren dieser gemeinsamen Datendefinition. Wenn Sie eine neue Komponente an einen ESB anschließen, können Sie sofort mehr Kompatibilität erwarten als beim Anschließen an eine MOM. Jede Komponente auf diesem Bus wird konzeptionell als "Ressource" behandelt. Daher wird eine zusätzliche Abstraktion eingeführt, um den Sender vom Empfänger zu entkoppeln.
Beispiel: Angenommen, Sie möchten Anwendung A mit Anwendung B in einer standardmäßigen nachrichtenorientierten Middleware verbinden. Nehmen wir JMS. Sie sprechen mit Ihren Kollegen, die an Anwendung B arbeiten, vereinbaren ein Thema, einen Nachrichtentyp und Felder und senden es (Pseudocode): sendJms ("TRADE.MSFT", {MapMessage trader = "pete" price = 101,4 vol = 100})
Wenn Sie dasselbe in einer serviceorientierten Architektur tun, müssen Sie dies tun
Das erste Mal ist es wahrscheinlich ein bisschen schmerzhaft, aber ich denke, man kann sich daran gewöhnen, genauso wie man sich an EJBs gewöhnen kann ;-)
Man könnte sagen, ein MOM-System ist "untypisiert" (dynamische Struktur), während ein ESB "typisiert" ist (statische Struktur). Die Kompromisse zwischen rohem Messaging und ESB ähneln denen anderer untypisierter / typisierter Optionen:
Für kleinere Projekte ist es schön, die Funktionalität schnell zu überprüfen (z. B. Groovy-Code), aber für größere Projekte ist es gut, einen Debugger (z. B. Java) zu haben, um im Voraus gewarnt zu werden, wenn etwas kaputt geht, und einen Standard für Leute zu haben, bevor sie sich dazu verpflichten Projekt.
Wenn Ihr Projekt unter zu vielen Personen leidet, die das System durch Einchecken nicht validierter Änderungen beschädigen, gehen Sie zu mehr Struktur über (ESB anstelle von MOM). Wenn Ihre Projekte nicht rechtzeitig erledigt werden, wählen Sie die einfachere, untypisierte Lösung. Wenn es beides ist - holen Sie sich einen Berater (nur ein Scherz ;-)
quelle
Nun, das hängt davon ab, wen Sie fragen ... Viele würden sagen, dass es sich um eine "Middleware" handelt, die verschiedene Teile der "Geschäftslogik" miteinander verbindet, um die Codierung aus dem Messaging zwischen diesen Modulen zu entfernen. Ich denke, das ist eine allgemein genug definierte Definition, aber ich bin sicher, dass Sie bereits über Wikipedia dorthin gekommen sind und so weiter.
Diejenigen, die den großen ESB haben würden, um die Welt zu retten, sehen ihn als den am häufigsten präsentierten, als Drehscheibe für alles. Die meisten ESB-Implementierungen bemühen sich, alle sich wiederholenden Aufgaben zu kapseln, die wir in Unternehmenssoftware sehen. Das bedeutet, dass die meisten ESBs sich um Datenübertragung, Sicherheit, Protokollierung, Protokollübersetzung, Ereignissysteme, API-Exposition über Webdienste usw. kümmern.
Ich denke, das ist so klar wie ich nur kann ... Ich hoffe, das hilft.
quelle
Schauen Sie sich meine Präsentation " Spoiled for Choice - So wählen Sie den richtigen ESB an " an.
Ich erkläre, wann ein ESB, eine Integration Suite oder nur ein Integration Framework (wie Apache Camel) verwendet werden muss. Ich diskutiere auch die Unterschiede zwischen Open Source und proprietären ESBs.
quelle
Über die Standarddefinition hinaus können Sie von Wikipedia erhalten . Ich finde, dass es ein großartiges Werkzeug ist, um eine Reihe von Legacy-Systemen über mehrere Plattformen und Technologien hinweg zu verbinden. Es ist auch ein gutes Werkzeug zum Erstellen verteilter Workflows und Zustandsverwaltungssysteme (z. B. Hauptbuch).
Es ist jedoch ziemlich teuer, komplex und unpraktisch zu warten und zu erweitern, was es zu einer schlechten Wahl für die Technologie als Allzweckwerkzeug zur Skalierung Ihrer Anwendungen macht.
quelle