© StonePictures/Shutterstock.com
… oder wie ich ein Haus baue, in dem ich auch wohnen möchte

Microservices oder Monolithen? Beides!


Seit 2012 und dem Artikel von James Lewis und Martin Fowler sind Microservices in aller Munde. Sie schienen die Antwort auf eine stets wachsende Komplexität und die Cloud zu sein. Aber mit der Zeit wurde es immer deutlicher, dass es Aufgabenstellungen gibt, die anders beantwortet werden müssen.

Der vorliegende Beitrag setzt sich mit den Vor- und Nachteilen von Microservices und Monolithen anhand von realen Beispielen auseinander. Als Ergebnis werden Kriterien vorgestellt, die diese komplexen architektonischen Entscheidungen vereinfachen können.

Microservices

Microservices sind eine Technik, die eine Applikation als eine Sammlung lose gekoppelter Dienste zusammenstellt [1]. Daher müssen die Dienste feingranular und die verwendeten Protokolle leichtgewichtig sein. In Abbildung 1 ist auf der linken Seite eine Microservices-Architektur schematisch dargestellt. Ein Microservice stellt in der Regel eine Funktion als einen Dienst zur Verfügung. Um Geschäftsanwendungen zu realisieren, müssen viele Dienste mit unterschiedlicher Funktion miteinander gekoppelt werden.

junker_microservices_1.tif_fmt1.jpgAbb. 1: Verschiedene Architekturansätze

Vorteile

Ein Microservice lässt sich als einzelner Dienst einfacher in die Produktion bringen. Da Microservices klein und abgeschlossen sind, lassen sie sich besser verstehen und können dadurch besser gewartet werden. Sie werden durch ein Team weiterentwickelt und gepflegt.

Nachteile

Da Microservices nur einzelne Funktionen zur Verfügung stellen, sind Geschäftsanwendungen notwendigerweise verteilte Systeme. Schnell kann man bei der Entwicklung von verteilten Systemen gewissen Trugschlüssen erliegen, da diese bei der Entwicklung nicht unmittelbar sichtbar sind [2]:

  • Das Netzwerk ist verlässlich.

  • Es gibt keine Latenzzeiten bei der Nachrichtenübertragung.

  • Das Netzwerk ist sicher.

  • Die Netzwerktopologie ändert sich nie.

  • Transportkosten von Nachrichten sind nicht vorhanden.

Mit solchen oft impliziten Annahmen landet man im Chaos. Diese Dinge müssen in der Grundarchitektur unbedingt berücksichtigt werden. Weitere Herausforderungen sind die verteilte Datenpersistenz und die damit verbundene Eventual Consistency [3] sowie das komplexere Ende-zu-Ende-Testen.

Microservices sind als einzelne Dienste einfach in die Produktion zu bringen. Allerdings müssen viele Abhängigkeiten für eine Gesamtapplikation beachtet werden. Sowohl das Einbringen in die Produktion als auch das Testen von Microservices-Architekturen müssen automatisiert werden, um die Komplexität beherrschen zu können.

Monolithen

Ein Monolith ist alles, was einheitlich und unbeweglich ist [4]. In der Softwarearchitektur verstehen wir unter Monolithen Softwarestrukturen, die in einem Dienst viele Funktionen zur Verfügung stellen, die nicht ohne Aufwand zu trennen sind. Abbildung 1 zeigt auf der rechten Seite eine monolithische Architektur, die sich schon entwickelt hat. Das heißt, dass einzelne Services entgegen dem ursprünglichen Entwurf hinzugefügt oder auch entfernt wurden.

Vorteile

Obwohl diese Nichttrennbarkeit als ein zusätzlicher Aufwand zu sehen ist, kann sie auch ein Vorteil sein, da Monolithen einfach in eine Produktion zu bringen sind, wenn sie nicht zu komplex sind. Daher lassen sie sich auch bis zu einem gewissen Maße horizontal skalieren. Sie sind einfach Ende-zu-Ende zu testen, wenn das Testen manuell erfolgt.

Nachteile

Da in der Regel viele Funktionalitäten in einem Monolith zusammengefasst sind, sind diese schwer zu verstehen und Änderungen lassen sich nicht einfach umsetzen. Wenn nur kleine Änderungen in die Produktion gebracht werden müssen – wie z. B. ein neuer Mehrwertsteuersatz –, muss die gesamte Funktionalität neu eingebracht und getestet werden. Auch wenn der Monolith sich einfach in die Produktion bringen lässt, sind Startzeiten in der Regel sehr lang, was eine Automatisierung verhindert.

Solch...

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