Microservices sind bei Führungskräften und Projektleitern wahrscheinlich mindestens genauso beliebt wie bei Entwicklern. Dies ist eine der eher ungewöhnlichen Eigenschaften von Microservices, da der Begeisterung für Softwarearchitekturen in der Regel Softwareentwicklungsteams vorbehalten sind. Der Grund dafür ist, dass Microservices dem Bedürfnis vieler Führungskräfte entsprechen, ihre Teams und Entwicklungsprozesse zu strukturieren und zu verwalten.
Anders ausgedrückt sind Microservices ein Architekturmodell, das ein gewünschtes Betriebsmodell besser unterstützt. In einer IBM-Umfrage aus dem Jahr 2021 unter mehr als 1.200 Entwicklern und IT-Führungskräften stimmten 87 % der Microservice-Nutzer zu, dass die Einführung von Microservices die Kosten und den Aufwand wert ist.
Hier sind nur einige der Vorteile von Microservices für Unternehmen:
Unabhängige bereitstellbar
Das vielleicht wichtigste Merkmal von Microservices ist, dass es aufgrund der Tatsache, dass die Services kleiner und unabhängig voneinander einsetzbar sind, nicht mehr eines geschäftlichen Riesenaufwandes bedarf, um eine Codezeile zu ändern oder eine neue Funktion in der Anwendung hinzuzufügen.
Microservices versprechen Unternehmen ein wirksames Mittel gegen die Frustrationen, die mit kleinen Änderungen verbunden sind, die viel Zeit in Anspruch nehmen. Man muss kein promovierter Informatiker sein, um den Wert eines Ansatzes zu erkennen oder zu verstehen, der Geschwindigkeit und Agilität besser fördert.
Aber Schnelligkeit ist nicht der einzige Vorteil dieser Art der Service-Gestaltung. Ein gängiges Organisationsmodell, das sich immer mehr durchsetzt, besteht darin, funktionsübergreifende Teams um ein Geschäftsproblem, einen Service oder ein Produkt herum zusammenzubringen. Das Microservices-Modell passt perfekt zu diesem Trend, da es Unternehmen ermöglicht, kleine, funktionsübergreifende Teams um einen Services oder eine Sammlung von Services herum zu bilden und diese agil arbeiten zu lassen.
Die lose Kopplung von Microservices sorgt außerdem für eine gewisse Fehlerisolierung und eine bessere Ausfallsicherheit in Anwendungen. Und die geringe Größe der Dienste, kombiniert mit ihren klaren Grenzen und Kommunikationsmustern, erleichtert es neuen Teammitgliedern, die Codebasis zu verstehen und schnell dazu beizutragen – ein klarer Vorteil in Bezug auf Geschwindigkeit und Arbeitsmoral.
Das richtige Tool für den Job
In traditionellen n-Tier-Architekturmustern teilt sich eine Anwendung in der Regel einen gemeinsamen Stack, wobei eine große, relationale Datenbank die gesamte Anwendung unterstützt. Dieser Ansatz hat mehrere offensichtliche Nachteile – der größte davon ist, dass alle Komponenten einer Anwendung einen gemeinsamen Stack, ein gemeinsames Datenmodell und eine gemeinsame Datenbank verwenden müssen, selbst wenn es für bestimmte Elemente ein klar besseres Tool für die Aufgabe gibt. Das führt zu schlechter Architektur und ist frustrierend für Entwickler, die ständig wissen, dass es eine bessere, effizientere Möglichkeit gibt, diese Komponenten zu bauen.
Im Gegensatz dazu werden in einem Microservice-Modell die Komponenten unabhängig voneinander bereitgestellt und kommunizieren über eine Kombination aus REST, Event Streaming und Message Brokern. So kann der Stack jedes einzelnen Dienstes für diesen Dienst optimiert werden. Die Technologie ändert sich ständig, und eine Anwendung, die aus mehreren kleineren Services besteht, lässt sich viel einfacher und kostengünstiger weiterentwickeln, wenn eine wünschenswertere Technologie verfügbar wird.
Präzise skalieren
Mit Microservices können einzelne Services individuell bereitgestellt werden – aber sie können auch individuell skaliert werden. Der daraus resultierende Vorteil liegt auf der Hand: Richtig eingesetzt, benötigen Microservices weniger Infrastruktur als monolithische Anwendungen, da sie eine präzise Skalierung nur der Komponenten ermöglichen, die sie benötigen, anstatt der gesamten Anwendung im Fall von monolithischen Anwendungen.
Auch Mikrodienste haben ihre Herausforderungen:
Die erheblichen Vorteile von Microservices gehen mit erheblichen Herausforderungen einher. Die Umstellung von Monolithen auf Microservices bedeutet eine viel höhere Komplexität des Managements – viel mehr Dienste, die von viel mehr Teams erstellt und an viel mehr Orten bereitgestellt werden. Probleme in einem Dienst können Probleme in anderen Diensten verursachen oder durch diese verursacht werden. Die Protokolldaten (die zur Überwachung und Problemlösung verwendet werden) sind umfangreicher und können je nach Service inkonsistent sein. Neue Versionen können zu Problemen mit der Abwärtskompatibilität führen. Anwendungen erfordern mehr Netzwerkverbindungen, was wiederum mehr Möglichkeiten für Latenz- und Verbindungsprobleme bedeutet. Ein DevOps-Ansatz kann viele dieser Probleme lösen, aber dessen Einführung bringt auch eigene Herausforderungen mit sich.
Dennoch halten diese Herausforderungen Nichtanwender nicht davon ab, Microservices zu übernehmen – oder Anwender davon, ihr Engagement für Microservices zu vertiefen. Die oben genannten IBM-Umfragedaten zeigen, dass 56 % der derzeitigen Nichtanwender wahrscheinlich oder sehr wahrscheinlich innerhalb der nächsten zwei Jahre Microservices einführen werden und 78 % der derzeitigen Microservice-Nutzer wahrscheinlich mehr Zeit, Geld und Aufwand in Microservices investieren werden.