Microservices und Legacy-Systeme / Standardsoftware
11.1.2016 | 2 Minuten Lesezeit
Eine Microservices-Architektur entsteht selten auf der grünen Wiese. Wie geht man also mit Schnittstellen zu Legacy-Systemen um? Und neben Legacy-Systemen gibt es ja auch noch Standardsoftware, denn manchmal macht es einfach keinen Sinn, etwas selbst zu entwickeln. Wie integriert man diese? In diesem Blogpost zeige ich drei Pattern der Integration.
Für unsere Microservices haben wir eine Basis- oder Makroarchitektur definiert, die die Kommunikation regelt. Für synchrone Kommunikation ist das beispielsweise REST über http, für asynchrone Kommunikation verwenden wir ein Messagingsystem.
Synchrone Services
Ein Legacy-System bzw. eine Standardsoftware spricht nicht unbedingt die gleiche Sprache, also nutzen wir einen Anti-Corruption-Layer, der für uns übersetzt – beispielsweise von REST nach SOAP.
Diese ACL-Anwendungen gehören fachlich zum Bestandssystem und werden demnach auch von dem Team entwickelt und gewartet. Synchrone Aufrufe sind jedoch problematisch, wie ich auch schon im Blog-Post „Kommunikation von Microservices – Die vier Ebenen der Entkopplung “ dargestellt habe. Neben Performance gehört dazu auch die Entwicklungsgeschwindigkeit.
Asynchrone Services
Synchrone Aufrufe sind natürlich nicht die einzige Möglichkeit der Integration. Wenn wir uns in der Microservices-Welt eher auf asynchrone Events und Datenduplikation verlassen, können und sollten wir auch Legacy-Systeme entsprechend einbinden.
In diesem Beispiel duplizieren Service A und Service B jeweils Teile von Anträgen, um schnell und effizient auf den Daten arbeiten zu können. Der Anti-Corruption-Layer für Antrag nimmt nun keine synchronen Requests entgegen, sondern feuert ein Event, wenn sich ein Antrag ändert. In vielen Legacy-Systemen ist die Datenhoheit nicht geklärt – das heißt, dass verschiedenste Services eine Entität in der Datenbank ändern können. Um wirklich jede Änderung mitzubekommen, kann ein Trigger an der Tabelle dienen. Wenn die Datenhoheit klar ist, gibt es natürlich auch andere Wege.
GUI-Integration
Neben kommunizierenden Services gibt es natürlich auch noch die Möglichkeit, Legacy-Anwendungen über einen Link in das Microservices-System zu integrieren.
Diese sehr einfache Möglichkeit wird häufig nicht in Betracht gezogen, da eine nahtlose GUI-Integration mit einem Fremdsystem in der Regel nicht möglich ist.
Fazit
Es gibt Legacy-Systeme und Standardsoftware, und das ist auch gut so! Dieser Blogpost hat drei Möglichkeiten zur Integration von Legacy- und Fremdsystemen gezeigt. Dabei können die verschiedenen Varianten natürlich auch kombiniert werden.
Weitere Beiträge
von Tobias Flohre
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Tobias Flohre
Senior Software Developer
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.