Microservices und Legacy-Systeme / Standardsoftware

Keine Kommentare

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.
REST
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.
Events
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.
GUI
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.

Tobias Flohre

Tobias Flohre arbeitet als Senior-Softwareentwickler/Architekt bei der codecentric AG. Seine Schwerpunkte sind Java-Enterprise-Anwendungen und Architekturen mit JEE/Spring. Er ist Autor diverser Artikel und schreibt regelmäßig Blogbeiträge zu den Themen Architektur und Spring. Zurzeit beschäftigt er sich mit Integrations- und Batch-Themen im Großunternehmen sowie mit modernen Webarchitekturen.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.