Was sind Microservices?

Durch Microservices lässt sich die Entwicklung und der Rollout komplexer Anwendungen flexibler gestalten. So können Unternehmen den Entwicklungen in einer zunehmend digitalen Geschäftswelt optimal begegnen. Eine auf dieser Software-Architektur basierte Applikation setzt sich aus einer Vielzahl kleiner, unabhängiger Modul-Services zusammen. Jeder dieser Microservices hat eine dedizierte Aufgabe und nutzt eine genau definierte Schnittstelle, um mit den anderen Modulen zu kommunizieren.

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 zeitnah und effizient umsetzen und ausrollen zu können. Zudem stehen Unternehmen vor der Herausforderung, auch bestehende monolithisch aufgebaute Software-Anwendungen dynamischer gestalten zu müssen. Hier sind oftmals die eigenen Entwickler die treibende Kraft innerhalb der Organisation, die Anwendungen in Form von Containern und Microservices aufsetzen möchten. Auf diese Weise können sie den Anforderungen an mehr Agilität und schnellere Entwicklung gerecht werden.

Container Whitepaper previewNeben Microservices sind Container ein großes Thema in der IT. Erfahren Sie mehr im kostenfreien Whitepaper, das einen guten Einstieg in das Thema bietet.

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 beispielsweise aus folgenden Microservices bestehen: eine Userdatenbank, ein Versandmodul, ein Bestellmodul, ein Modul für die verschiedenen Bezahlarten sowie das Frontend.

Darstellung Microservices
Eine E-Commerce-Anwendung könnte beispielsweise aus diesen Microservices bestehen.

Eine Anwendung kann hierbei 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.

Diese Form der “Isolierung” von Teilaufgaben zeichnet den Aufbau von Microservice-Architekturen aus. Softwareunternehmen können damit ihre Applikationen effizient strukturieren und auch ihren Entwicklerteams möglichst viel Verantwortung für einen begrenzten Teil einer Applikation geben. Gerade für Firmen, die mit hunderten oder sogar tausenden von Entwicklern zusammenarbeiten, ist dies ein enormer Vorteil. Sie müssen diese großen Teams nicht zentral verwalten, sondern können selbstorganisierte Mitarbeitergruppen bilden, die verschiedene Microservice-Softwaremodule jeweils eigenverantwortlich betreuen.

Wo sinnvoll, können einzelne Teams auch mehrere Microservices betreuen, wenn diese beispielsweise fachlich oder funktionell zusammenhängen. Das jeweilige Team entscheidet dann alle Implementierungsdetails und stellt unter Umständen sogar Bereitschaften für den Betrieb des Dienstes. Selbstverständlich gibt es unter den Teams auch eine gewisse Interaktion und Abstimmungsprozesse. Diese sind in der Regel jedoch nicht so angelegt, dass sie die Geschwindigkeit hemmen oder in endlosen Abstimmungsrunden enden. Der Einsatz von Microservices ermöglicht so kürzere Entwicklungszeiten und schnellere Rollouts von Updates oder neuen Funktionalitäten.

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)

Nicht nur Vorteile

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 zwar 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.

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

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 Hosting- und Cloud-Anbieter helfen, um den individuellen Bedarf genau zu identifizieren, zu planen und mögliche Fallstricke von vorneherein auszuschließen.

Das könnte Sie auch interessieren

Container Whitepaper previewIm Whitepaper „Container“ lesen Sie mehr über den Einsatz von Containern und Microservices in der IT, um Anwendungen schnell und agil auszurollen. Jetzt kostenfrei downloaden.

 

 

Auch im Blog erfahren Sie mehr über Container: Was sind Container in der IT?

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.