
Enterprise Service Bus
Ich habe viele Jahre damit verbracht, in Kundenprojekten die verschiedenen Software-Komponenten miteinander zu vernetzen. Da sich die Arbeiten immer wiederholten musste eine Lösung her! Die Wahl viel auf einen Enterprise Service Bus (ESB). Jedoch existierten zum Zeitpunkt meiner Recherche ausschließlich Java-basierte Systeme. Da die Kernkompetenz meiner Kollegen und mir jedoch in der PHP-Entwicklung lag, habe ich mich an die Arbeit gemacht und von Grund auf ein neues ESB auf PHP-Basis geschrieben. Das Ergebnis ist ein hoch performantes und flexibles System, das erfolgreich in mehreren Kundenprojekten eingesetzt wird.
Fakten
Ein Jahr Entwicklungszeit
Mehr als 100.000 Zeilen Code
52 Bibliotheken und Symfony-Bundles
200 Seiten Dokumentation in Deutsch und Englisch
Highlights
Blitzschnell
Das ESB verzichtet auf die Verwendung eines Frameworks oder einer Datenbankabstraktion. Darüber hinaus werden keine unnötigen Operationen durchgeführt und die geringe Komplexität des Codes sorgt für eine schnelle Ausführung. Der gesamte Kern besteht aus lediglich 7.000 Zeilen Code.
Herausragende Technologie
Das ESB nutzt das CQRS-Prinzip zur vollständigen Trennung von Lese- und Schreiboperationen. Das macht es sehr flexibel und erhöht die Lesegeschwindigkeit. Darüber hinaus wird Event-Sourcing eingesetzt, um Änderungen im System zu erkennen und diese endlos zu speichern.
Einfach und intuitiv
Für die Arbeit mit dem ESB ist kein Expertenwissen erforderlich. Alle wichtigen Vorgänge finden im Kern statt, so dass sich ein Entwickler auf die Anbindung der Drittsysteme konzentrieren kann. Er braucht keine Kenntnisse über ein Framework, sondern schreibt einfach reines PHP.
Symfony-Integration
Dank seiner Framework-Unabhängigkeit kann das ESB bei Bedarf in jedes gängige PHP-Framework integriert werden. Standardmäßig steht eine vollständige Integration in Symfony zur Verfügung.
Einzigartig in der PHP-Welt
Es gibt nur sehr wenige Programme in der PHP-Welt, die als Middleware für große Infrastrukturen dienen. Und keines hat eine ähnliche Funktionalität und ist so flexibel wie dieses ESB.
Deep Dive
Das Hauptziel bei der Entwicklung des ESB war es, die gleichen Aufgaben mehrerer Projekte in einer Software zu bündeln und den Aufwand für die Implementierung zu minimieren. In jedem Projekt müssen verschiedene Systeme miteinander verbunden werden. Sei es ein Produktimport aus dem PIM in das Shopsystem oder ein Export von Kundenaufträgen in das ERP. All diese Importe und Exporte können entweder in eines der Systeme (meist das Shopsystem) integriert, oder an einer zentralen Stelle implementiert werden. Die zentrale Stelle hat den Vorteil, dass jedes angeschlossene System – auch der Shop – austauschbar ist, da sich die Geschäftslogik des Kunden ebenfalls in dieser zentralen Stelle – dem ESB – befindet. Sie ist somit unabhängig von Updates der jeweiligen Systeme. Werden beispielsweise Änderungen am Shop vorgenommen, oder wird dieser durch eine andere Software ersetzt, so muss nur der jeweilige Adapter angepasst werden, alles andere bleibt wie es ist.
Durch die unendliche Speicherung aller Änderungen an den Datensätzen kann jederzeit jeder Zustand eines Datensatzes abgerufen werden, z.B. um zu sehen, wie ein Produkt vor ein paar Tagen aussah und was sich seither geändert hat. Diese Nachvollziehbarkeit aller Änderungen im System und die zentrale Protokollierung aller wichtigen Ereignisse machen den ESB zu einem leistungsfähigen Reporting-Tool.
Bei der Entwicklung des ESB wurde besonders auf eine gute Performance geachtet. Durch die Verwendung von MongoDB als Standard-Persistenz und den strikten Einsatz von leichtgewichtigen Komponenten ist das ESB sehr schnell. Durch die Verwendung von Redis kann die Leistung noch weiter gesteigert werden.