© Andy Hoech/Shutterstock.com
Einen Monolithen in Microservices überführen

Aus eins mach zwei, aus alt mach neu


Microservices-Architekturen sind heute in aller Munde. Die Vorteile sind groß, die Anforderungen an die zuständigen Teams in einem Unternehmen allerdings auch. Neben der Frage nach den Grundvoraussetzungen, die ein Team mitbringen muss, um Microservices nachhaltig umsetzen und betreiben zu können, gilt es auch zu klären, ob ein Monolith in Microservices überführt werden kann und sollte.

Bei der Überführung eines Monolithen in Microservices muss man eine ganze Menge bedenken; im Folgenden soll betrachtet werden, ob eine Auslagerung überhaupt sinnvoll ist und – falls ja – wie bei der Überführung vorgegangen werden sollte. Dazu werden wir klären, nach welchen Kriterien die Reihenfolge der Services bestimmt, ob Code wiederverwendet und wie mit Abhängigkeiten umgegangen werden sollte. Der Überführungsprozess umfasst insgesamt also einen Rahmen von der Auswahl der Architektur bis zur Produktivstellung und wird in diesem Artikel anhand des Beispiels einer Verwaltungssoftware für Autowerkstätten verdeutlicht.

Was spricht für eine Microservices-Architektur?

In großen Projekten setzen Unternehmen immer häufiger mehrere Teams ein. Microservices-Architekturen bieten hier den Vorteil, dass einzelne Teams autonom einzelne Services umsetzen können. Da die Architekturen der Services spezifischer auf die geforderten Anwendungsfälle der Domäne ausgerichtet werden können, ist der Abstimmungsaufwand geringer und die Qualität der jeweiligen Projekte wird gesteigert. Darüber hinaus ermöglichen es diese in sich geschlossenen Systeme, Anforderungen einfacher umzusetzen, da Anforderungsdomänen deutlich strikter getrennt sind und so Codegröße und -komplexität deutlich kleiner und einfacher sind.

Diese Anforderungen können durch Verteilung und unterstützte Updateprozesse der einzelnen Umgebungen wie Azure Service Fabric im laufenden Betrieb ausgeliefert werden. Neben den genannten Vorteilen bieten die Umgebungen darüber hinaus einfache Wege, die Applikation nicht nur vertikal, sondern auch horizontal zu skalieren. Architekten sollten neben der Architektur auch ausgelagerte externe Dienste wie Caching und Datenbanken nutzen, um eine einfache Skalierung weiter zu forcieren.

Warum auf einmal dieser Hype?

Die Fallacies of Distributed Computing [1] beschreiben Trugschlüsse, die wesentlich bei der Betrachtung und Abgrenzung von Microservices und Monolithen sind. Die eigentliche Komplexität einer Microservices-Architektur versteckt sich nicht in, sondern neben und unter den einzelnen Services. So sorgt zum Beispiel die Kommunikation zwischen den einzelnen Services mit nicht ausfallsicheren Verbindungen, Latenz, Bandbreite, sich ändernden Standards/Topologien, Overhead und nicht homogenen Netzwerken für eine erhöhte Störanfälligkeit im Vergleich zu Monolithen. Diese Anfälligkeiten können programmatisch nur mit hohem Zeitaufwand und Expertise gemindert werden.

Neue Hostingumgebungen wie Azure Service Fabric oder Kubernetes adressieren diese Schwierigkeiten, wodurch die Komplexität des Gesamtsystems verringert wird. So kann sich ein Team voll und ganz auf die Implementierung von Anforderungen konzentrieren, ohne sich um die oben genannten Herausforderungen kümmern zu müssen. Diese Umgebungen ermöglichen, dass Architekten auch in kleineren Projekten die Vorteile von Microservices nutzen können.

Microservices? Super, aber wie geht es weiter?

Die erste wichtige Frage auf dem Weg ist, ob ein Neubau nicht günstiger beziehungsweise schneller wäre. Eine Überführung wird in den meisten Fällen teurer und zeitaufwendiger sein, bringt aber zwei wichtige Vorteile mit sich: kein Anforderungsstopp (ohne Anforderungen doppelt umsetzen zu müssen) und die Möglichkeit, einen Monolithen schrittweise, also quasi in Raten zu überführen. Dabei spielt die Codebasis des alten Projekts für den Prozess eine untergeordnete Rolle.

Neben dieser grundsätzlichen Frage beschreibt der Autor und Softwarearchitekt Martin Fowler weitere Anforderungen, die ein Team – Entwickler und IT-Administratoren – erfüllen muss, um Microservices sinnvoll einsetzen zu können [2]. Entscheidend sind schnelle Bereitstellungsz...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang