Microservices – Vor- und Nachteile

9. November 2016

In dem ersten Artikel der kleinen Microservices-Serie wurde anhand eines kleinen Beispiels dargestellt, wie Microservices die Organisation der Arbeit beeinflussen. Das Konzept bringt wesentliche Vorteile. Bevor man sich aber für den Einsatz von Microservices entscheidet, müssen auch andere Aspekte in Betracht gezogen werden. Der Zweck dieses Beitrags ist, die wesentlichen Vor- und Nachteile zu beleuchten.

Vorteile

Ein bedeutsamer, technischer Vorteil der Microservices ist, dass sie durch die starke Modularisierung leicht ersetzbar sind. Im Laufe der Zeit wird ein System durch Erosion der Architektur immer fehleranfälliger und ineffizienter. In einer monolithischen Anwendung müsste man entweder die ganze Anwendung refrakturieren oder aber komplett ersetzten. Das Ablösen eines alten Systems ist immer risikoreich. Dadurch, dass ein Microservice nur einen bestimmten Teil des Gesamtsystems abbildet, ist die Änderung weniger riskant. Es lässt sich also nicht leugnen, dass Microservices eine nachhaltige Softwareentwicklung unterstützen.

Moderne Anwendungen müssen auch unter hoher Last leistungsfähig sein. Aus diesem Grund sollten zukunftssichere IT-Systeme Skalierungsmöglichkeiten anbieten. Insbesondere handelt sich es hier um eine sogenannte horizontale Skalierung. Genauer gesagt muss das System bzw. Subsystem auf mehreren Maschinen parallel lauffähig sein. Der Nachteil bei einem Monolith ist, dass die ganze Anwendung komplett skaliert werden muss, was zu einem beträchtlichen Verbrauch kostbarer Ressourcen führt. Sehr häufig sind auch nur bestimmte Funktionalitäten einer hohen Last ausgesetzt. Dank einer starken Entkopplung von Komponenten untereinander kann man sehr feingranular skalieren.

In sehr vielen Projekten entscheidet man sich im Voraus für Technologien, die für die Implementierung geeignet sind. Das reale Leben zeigt aber, dass der englische Spruch „one size fits all“ nicht immer passt. Manchmal gibt es Anforderungen, die schwierig mit vorhandener Technik implementierbar sind. Beispielsweise könnte es besser sein, für eine bestimmte Subdomäne eine nichtrelationale Datenbank oder eine völlig andere Programmiersprache zu benutzen. Die fachliche Domäne beeinflusst also die Architektur. Durch die Entkopplung von Microservices genießt man die Freiheit, unterschiedliche Technologien benutzen zu können.

Nachteile

Trotz der vielen Vorteile haben Microservices aber auch Nachteile, die sorgfältig vor dem Projektbeginn durchdacht werden sollten. Ein wichtiges Argument gegen den Einsatz von Microservices sind hohe Latenzzeiten, die in dieser Architektur vorkommen können. Das Zusammenspiel von Microservices bildet ein verteiltes IT-System ab. Die Kommunikation verläuft über das Netzwerk zwischen verschiedenen Maschinen. So eine Art der Kommunikation ist selbstverständlich viel langsamer als die Kommunikation zwischen Prozessen, die auf demselben Rechner laufen.

Wie eben erwähnt wurde, gehört die technische Unabhängigkeit zu den größten Vorteilen von Microservices. Aus einer anderen Sicht kann der Vorteil aber auch als ein Nachteil betrachtet werden, wenn zum Beispiel hohe Wiederverwendbarkeit von Code eine große Rolle im Projekt spielt. Dadurch, dass die Teams isoliert arbeiten und gegebenenfalls unterschiedliche Technologien benutzten, sinkt die Wiederverwendbarkeit von Code deutlich.

Microservices sind unabhängige Deployment-Einheiten. Das heißt, dass sie einen eigenen Deployment-Prozess benötigen. Um das zu ermöglichen, muss eine separate Infrastruktur eingesetzt werden, was zugleich zusätzliche Kosten generiert.

Fazit

Die Entscheidung, ob für das Projekt Microservices ein passender Ansatz sind, scheint zunächst schwerwiegend zu sein. Man muss hierbei alle Pro- und Contra-Argumente berücksichtigen. Ein wichtiger Schritt in dem Prozess der Analyse ist die Bestimmung von qualitativen Zielen, die das System erfüllen soll. Die Microservices-Architektur muss anschließend im Kontext der Realisierbarkeit der qualitativen Ziele erforscht werden.

Quellen

[1] E. Wolff: Microservices, Grundlagen flexibler Softwarearchitekturen, dpunk Verlag

[2] Dev + Ops bei Otto.de: Why Microservices?