Microservices versus Monolithen: Am Anfang war das Missverständnis

Michael Thomas

© Shutterstock.com/RomboStudio

In aktuellen Diskussionen werden Microservices-basierte Architekturen gerne den althergebrachten monolithischen Architekturen gegenübergestellt. Dem Software-Architekten und -Entwickler Robert Annett zufolge existieren zu der Frage, was Monolithen eigentlich sind, jedoch zahlreiche Missverständnisse. Die können soweit führen, dass komplett aneinander vorbeigeredet wird. Der Begriff „Monolith“ kann je nach Blickwinkel eines der drei folgenden Szenarien bezeichnen – die einem laut Annett in der Realität jedoch selten derart klar umrissen begegnen:

Modul-Monolith

Wenn man einen Modul-Monolithen vor sich hat, so bedeutet dies, dass der gesamte Code eines Systems in einer einzelnen Codebasis enthalten ist, die durch Kompilierung ein einziges Artefakt hervorbringt. Der Code kann zwar immer noch gut strukturiert sein, wird für die Kompilierung jedoch nicht mehr in separate Module aufgeteilt. Der Code eines nicht-monolithischen Moduls hingegen kann in mehrere Module oder Bibliotheken aufgeteilt sein, die separat kompiliert, referenziert und in Repositories abgelegt werden können. Beide Vorgehensweisen bergen dabei spezifische Vor- und Nachteile.

Allokations-Monolith

Im Falle eines Allokations-Monolithen wird der gesamte Code zur gleichen Zeit bereitgestellt, d.h. der kompilierte Code wird in einer einzigen Version an alle Knoten verschickt; alle Komponenten verfügen also über die selbe Softwareversion. Dies ist unabhängig davon, ob die komplette Codebasis vor der Verteilung kompiliert wurde oder ob Artefakte auf Grundlage mehreren Quellen und Versionen erstellt wurden.

Eine nicht-monolithische Allokation würde bedeuten, dass verschiedene Versionen zu verschiedenen Zeiten an die einzelnen Knoten verteilt werden.

Laufzeit-Monolith

Ein Laufzeit-Monolith bedeutet, dass eine einzige Anwendung oder ein einziger Prozess die Arbeit für das System ausführt. Ob es sich um einen Laufzeit-Monlith handelt, ist dabei unabhängig davon, ob der Systemcode ein Modul-Monolithen ist. Falls nur ein Hauptknoten bzw. eine Hauptkomponente vorhanden ist, weist dies jedoch häufig darauf hin, dass man es mit einem Allokations-Monolithen zu tun hat.

Fazit

Ein direkter Vergleich der Monolithen ist nur möglich, wenn man über alle drei Arten von Monolithen spricht. Bei einem Wechsel zu einer Microservices-Architektur empfiehlt Annett, alle Szenarien zu bedenken und ihre Grenzen entsprechend abzustecken.

Aufmacherbild: rock monolith at night – long exposure von Shutterstock / Urheberrecht: RomboStudio

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: