In den letzten Wochen bin ich in einige Debatten über SOA und insbesondere über den "richtigen" Weg hineingezogen worden. Und die Definition von "richtig" geht erschreckend oft in Richtung der Anwendung eines ESB.
Jeder neue Computertrend löst Debatten aus, und jede größere Debatte veranlasst die Anbieter, ihre - oft bereits vorhandenen - Produkte aggressiv zu positionieren, um vom Interesse der Kunden an dem heißen, neuen Trend zu profitieren. Natürlich findet die Energie, die in immer höhere Erwartungen gepumpt wird, unweigerlich einen Weg nach draußen in Form von Verwirrung und Ernüchterung. Der Hype um ESBs hat sich als besonders effektiv erwiesen, da Unternehmen, die eine schnelle Lösung suchen (und tun sie das nicht alle?), von der Idee überzeugt sind, dass ein ESB der gelbe Ziegelsteinweg zu einer "sofortigen SOA" ist.
Hier ist die sanfte Einführung: Ein ESB ist kein wesentlicher Bestandteil von SOA. Eigentlich sollten Sie alle Produkte erst einmal in ihren glitzernden Verpackungen lassen: Bei SOA geht es um Analyse und Design und nicht um Technologie.
Natürlich gibt es ein paar Basiskomponenten, die Sie wahrscheinlich verwenden möchten, um in Gang zu kommen. Aber ein ESB gehört nicht zu diesen "Basiskomponenten". Tatsächlich - und jetzt kommt der Schock für einige - sollten Sie auf keinen Fall einen ESB verwenden, wenn Sie mit SOA beginnen, denn ein ESB fördert keine gute SOA. ESBs sind Integrationslösungen, und Integrationslösungen verstärken Anwendungssilos, während es bei SOA darum geht, diese Silos einzureißen.
Ein ESB ist eine nützliche Komponente in einer Service-Infrastruktur, denn er eignet sich besonders gut als Brücke zu Legacy-Anwendungen. Viele ESBs unterstützen auch zuverlässiges Messaging, asynchrones Messaging und verschiedene Muster für den Nachrichtenaustausch, was alles nützliche Fähigkeiten sind - nur nicht in der Anfangsphase eines SOA-Projekts. Um dies in die richtige Perspektive zu rücken, könnten Sie in einem gewissen Stadium eines SOA-Projekts auch eine Orchestrierungs-Engine benötigen - aber auch das ist nicht der Punkt, an dem ein Unternehmen eine SOA-Initiative beginnen sollte. All das brauchen Sie nicht, wenn Sie mit dem Projekt beginnen; ein ESB sollte erst in einer späteren Phase angeschafft werden.
Einige abschließende Worte für all die netten Leute, die versucht haben, mich mit Hilfe von Naben- und Speichen-Diagrammen von der Notwendigkeit eines ESB zu überzeugen: Ein Bus ist per Definition kein Knotenpunkt, sondern eine physisch verteilte Gruppe von föderierten Knotenpunkten. Zu Beginn mag er zentralisiert sein, aber mit der Weiterentwicklung der Implementierung sollte die Infrastruktur eine stärkere physische Verteilung ermöglichen. Möglicherweise möchten Sie jedoch die Konfiguration und Steuerung des Busses zentralisiert halten (und schätzen dies auch).