Suchen

Mikrodienste als Architekturmuster Die Umstellung auf Microservices richtig kalkulieren

| Autor / Redakteur: Thomas Joos / Stephan Augsten

Microservices werden bei Software-Entwicklern und -Anbietern immer beliebter, nicht nur für neue, Container-basierte Projekte. Auch monolithische Anwendungen sollen den Mikrodiensten vermehrt weichen. Für eine erfolgreiche Neuumsetzung und Portierung ist jedoch eine gute Planung vonnöten.

Firma zum Thema

Microservices lassen sich verhältnismäßig einfach warten und bei Bedarf neu kombinieren.
Microservices lassen sich verhältnismäßig einfach warten und bei Bedarf neu kombinieren.
(Bild: Kelly Sikkema - Unsplash.com)

Geht es um die Entwicklung von Microservices, stehen Entwickler in den meisten Fällen vor zwei verschiedenen Szenarien: Entweder befassen sie sich mit einer Neuentwicklung von Projekten oder der Portierung bestehender Lösungen zu Microservices. In beiden Fällen stellt sich zunächst einmal die Frage, welche Bestandteile der neuen Lösung als Microservices darstellbar sind.

Microservices bieten durchaus etliche Vorteile, zum Beispiel die extrem schnelle Bereitstellung von neuen Funktionen und eine extrem hohe Skalierbarkeit, nicht zuletzt, weil sie moderne Technologien wie Container unterstützen. Allerdings bedeutet eine Umsetzung auch in den meisten Fällen höhere Kosten und eine längere Entwicklungszeit.

Microservices – Was steckt dahinter?

Microservices arbeiten mit dem Konzept einer serviceorientierten Architektur (SOA). Bei dieser Herangehensweise werden geschlossene Systeme wie zum Beispiel ein Webshop so aufgeteilt, dass sie aus verschiedenen Diensten bestehen, die miteinander über Schnittstellen interagieren. Die Entwicklung von Microservices besteht im Grunde genommen darin, das komplette Development-Projekt in verschiedene kleine (Micro) Dienste (Services) aufzuteilen.

Das Zerlegen der einzelnen Komponenten geht so weit, dass im Endergebnis jeder Mikrodienst eine einzelne Aufgabe erfüllt. Mehrere Microservices werden dann mittels Schnittstellen wieder zu einem großen Dienst gekoppelt, dessen Einzelteile sich nun besser warten und bei Bedarf neu verknüpfen lassen. Am Beispiel eines Webshops wäre es beispielsweise denkbar, die verschiedenen Funktionen wie Produktsuche, Einkauf und Bezahlung zu separieren.

Monolithische Anwendungen in Microservices überführen

Sollen monolithische Anwendungen in Mikrodienste überführt oder Projekte, die als monolithische Anwendung betrieben werden könnten, als Microservices zur Verfügung gestellt werden, so müssen die Vorgänge in der Kalkulation der Kosten und des Zeitablaufs von vorne herein einkalkuliert werden.

Nicht immer sind Microservices ideal für ein Projekt. Oft kann eine monolithische Herangehensweise besser geeignet sein. Häufig werden Microservices als der heilige Gral der Entwicklung und Bereitstellung betrachtet, vor allem wenn es noch um den Bereich der Container-Technologie geht. Moderne Betriebssysteme wie Windows Server 2016 unterstützen diese Sichtweise noch dadurch, dass Container-Technologien bereits fest in das Betriebssystem integriert sind, und daher ideal als Basis für Microservices dienen können.

Allerdings gehen viele Unternehmen oder Entwickler von einem übertriebenen Idealbild solcher Microservices aus, und vergleichen sich mit großen Unternehmen. Zwar nutzen große Konzerne wie Microsoft, Amazon oder Google Microservices für viele Anwendungsbereiche, allerdings haben diese Unternehmen auch das entsprechende Budget und Know How dafür.

Wann sind Microservices ideal?

Microservices sind dann ideal, wenn die zu entwickelnde Anwendung häufig erweitert und mit neuen Funktionen ausgestattet werden muss. Sind die neuen Funktionen dann noch als Wettbewerbsvorteil zu sehen, und würden monolithische Anwendungen diesen aushebeln, sind Microservices ideal.

Geht es also um die schnelle Bereitstellung von Fortschrittstechnologien, dann sind Microservices häufig besser geeignet als monolithische Anwendungen. Dies gilt ebenso für den Fall, dass eine hohe Flexibilität der neuen Anwendung gefragt ist

Häufig lassen sich Probleme bei monolithischen Anwendungen durch Continuous Delivery und Continuous Integration bereits beheben. Eine höhere Qualität der vorhandenen Anwendung kann in vielen Fällen Lösungen schaffen, die sich die Verantwortlichen durch die Implementation von Microservices erhoffen.

Monolithische Anwendungen zu Microservices portieren

Manch aktuelle, monolithische Anwendung ist instabil, fällt häufig aus oder bietet trotz aktueller Hardware nicht genügend Leistung. Dann kann es durchaus sinnvoll sein, die Anwendung in Microservices aufzuteilen und verbessert bereitzustellen, vor allem mit einer höheren Skalierbarkeit. Treten Lastspitzen oder Szenarien auf, mit denen die monolithische Anwendung nicht umgehen kann, weil ihr die Flexibilität fehlt, ist die Umstellung ebenfalls durchaus sinnvoll.

In vielen Fällen bestehen monolithische Anwendungen aus verschiedenen Komponenten und Codebausteinen, die miteinander interagieren müssen. Die Schnittstellen dieser Komponenten stellen häufig Flaschenhälse dar, die die monolithische Anwendung ausbremsen. Werden die Komponenten in Microservices aufgeteilt, lassen sich solche Probleme häufig beheben, eine optimale Konzeptionierung und genügend Zeit vorausgesetzt.

Herausforderungen bei der Verwendung von Microservices

Auch wenn viele Entwickler oder Unternehmen von einem Idealbild ausgehen, wenn Anwendungen als Microservices zur Verfügung gestellt werden, lässt sich dieses Idealbild selten erreichen. Die Verantwortlichen müssen von vorneherein damit rechnen, dass Kompromisse notwendig sind, und nicht alle optimalen Einsatzszenarien erreicht werden – zumindest nicht sofort.

Sollen vorhandene, monolithische Anwendungen zu Microservices umgestellt werden, müssen die vorhandenen Applikationen genau analysiert werden. Die Probleme müssen benannt werden. Dabei ist es allerdings wichtig, die aktuelle Anwendung objektiv zu beurteilen. Viele Verantwortliche sehen in Microservices den Heilsbringer und halten ältere Anwendungen oft für schlechter, als sie tatsächlich sind.

Im Rahmen der Planung muss danach festgelegt werden, ob sich diese Probleme überhaupt mit Microservices beheben lassen. Darüber hinaus sollte im Rahmen der Analyse auch geprüft werden, ob die monolithische Anwendung Vorteile bietet, die durch Microservices nicht oder nur schwer umsetzbar sind. Denn auch hier müssen dann die entsprechenden Kosten- und Zeitplanungen berücksichtigt werden.

Fachwissen, Kapazitäten und Budget berücksichtigen

Unabhängig davon, ob vorhandene Anwendungen portiert oder neue Microservices entwickelt werden sollen, müssen die Verantwortlichen für das Projekt genau das Fachwissen, die freien Kapazitäten und das Budget für die Entwicklung der Microservices planen und entsprechend freistellen. Microservices erfordern tiefes, technisches Wissen und genügend Kapazitäten, um die Bereitstellung und Optimierung so ideal wie möglich durchführen zu können.

(ID:44642975)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist