© 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ö...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang