Inhaltsverzeichnis
Warum Microservices?
Getrieben wird die Entwicklung im Bereich von Microservices einerseits durch die Verfügbarkeit neuer Technologien wie Container und andererseits von der fortschreitenden digitalen Transformation, mit der sich Unternehmen zusehends konfrontiert sehen. Um wettbewerbsfähig zu bleiben, müssen Unternehmen in der Lage sein, Innovationen möglichst schnell zu entwickeln und auf den Markt zu bringen. Das schließt unter anderem ein, neue Anwendungen und ihre funktionellen Erweiterungen und Updates effizient umzusetzen und auszurollen. Darüber hinaus stehen Unternehmen vor der Herausforderung, bestehende monolithische Softwareanwendungen dynamischer zu gestalten. Hier sind oft die eigenen Entwickler die treibende Kraft im Unternehmen, die Anwendungen auf Basis von Containern und Microservices neu aufsetzen wollen. Auf diese Weise können sie den Anforderungen nach mehr Agilität und schnellerer Entwicklung gerecht werden.
Microservices: Modulare Software-Architektur
Microservices verteilen Funktionalitäten innerhalb einer Anwendung auf separate Applikationen, die über sprachunabhängige Programmierschnittstellen – wie REST APIs – miteinander kommunizieren. So könnte eine E-Commerce-Anwendung unter anderem aus einer Userdatenbank, einem Versandmodul, einem Bestellmodul, einem Modul für die verschiedenen Bezahlarten sowie dem Frontend bestehen.
Eine Anwendung kann aus einigen Dutzend bis einigen hundert solcher Microservices bestehen. Jeder der Microservices ist dabei in sich vollständig unabhängig. Das heißt, die Microservices teilen sich untereinander keine Datenverbindungsschicht, sondern jeder Microservice verwendet seine eigene Datenbank, Load Balancer etc. Denn oftmals benötigt jeder dieser kleinen Dienste unterschiedliche Skalierungstechniken. So werden manche Microservices beispielsweise Zugriff auf eine relationale Datenbank benötigen während andere lediglich auf eine NoSQL-Datenbank zurückgreifen.
Welche Vorteile bieten Microservices?
Microservices auf Entwicklerteams verteilen
Wofür eignen sich Microservices?
- Neue Softwareprojekte
- Anwendungen, die hohe Skalierbarkeit benötigen
- Legacy-Anwendungen, die an ihre Grenzen stoßen (zu viele Zeilen Code, zu große Datenbank, zu wenig skalierbar, zu träge bei der Entwicklung neuer Features)
Gibt es auch Nachteile?
Anwendungen, die auf einer Microservice-Architektur basieren, sind zwar schneller entwickelt und ausgerollt. Diese Art der Software-Architektur bringt jedoch auch einige Limitierungen mit sich, vor allem hinsichtlich Logging, Monitoring und Debugging. Die einzelnen Module innerhalb einer solchen Architektur sind schnell aktualisiert, bearbeitet oder sogar ausgetauscht. Aber die Tatsache, dass Microservices über APIs miteinander kommunizieren, kann sich gerade bei der Fehlersuche innerhalb einer modulbasierten Gesamtanwendung als sehr komplex erweisen.
Komplexe Fehlersuche?
Bei monolithischen Anwendungen werden meist bestimmte Haltepunkte innerhalb des Codes gesetzt – sogenannte Break Points oder Debugging Hooks. Stimmt etwas nicht mit dem Programm, können Entwickler durch die Nutzung von Debugging Tools den Softwarecode Schicht für Schicht an den jeweiligen Haltepunkten kontrollieren, um den Fehler möglichst schnell zu finden. In einer Microservice-Architektur gestaltet sich die Fehlersuche unter Umständen etwas komplizierter, bis alle zusammenhängenden Module inklusive der Schnittstellen überprüft und ausgewertet sind.
Die in einer Microservice-Architektur verwendeten REST APIs sind zwar einerseits schlanker, flexibler und einfacher erweiterbar. Sie addieren andererseits aber eine zusätzliche Schnittstelle, die es ebenfalls zu überwachen gilt. Denn auch hier können sich Fehlfunktionen oder Bugs einschleichen, die gegebenenfalls gefunden und behoben werden müssen. Logging, Monitoring und Debugging von Microservice-basierten Anwendungen kann daher eine durchaus komplexe Angelegenheit sein – vor allem wenn die Software am Ende aus mehreren hundert Microservices besteht.
Strategische Planung nötig
Ihr Start in die Welt der Microservices
Das akkurate Zusammenspiel von Microservices untereinander ist immens wichtig und bringt auch einiges an Komplexität mit sich. Deshalb sollten sich Unternehmen im Vorfeld einer Investition in die Entwicklung von Microservices strategisch mit der Thematik auseinandersetzen. Denn nicht für jede Anwendung ist es sinnvoll, sie als Microservice aufzusetzen oder umzuschreiben. Das gilt vor allem für bestehende Applikationen, die Cloud-fähig gemacht werden sollen. Hier können die Beratungsangebote erfahrener Cloud-Anbieter helfen, um den individuellen Bedarf genau zu identifizieren, zu planen und mögliche Fallstricke von vorneherein auszuschließen.
Glossar
Container – verpacken eine Anwendung und alle zu ihrer Ausführung erforderlichen Dateien in ein handliches Paket. Das vereinfacht die Installation und den Betrieb von Server-Anwendungen sowie deren Management und Verteilung.
REST – Representational State Transfer. Der Begriff bezeichnet ein Programmierparadigma für verteilte Systeme, insbesondere Webservices. REST ist eine Abstraktion der Struktur und des Verhaltens des World Wide Web und hat das Ziel, einen Architekturstil zu schaffen, der die Anforderungen des modernen Webs besser darstellt. Dabei unterscheidet sich REST vor allem in der Forderung nach einer einheitlichen Schnittstelle von anderen Architekturstilen.
API – Application Programming Interface. API ist eine Schnittstelle zur Anwendungsprogrammierung bzw. ein Programmteil, der von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung gestellt wird.