Ratgeber

Was sind eigentlich Microservices?

(Bild: Shutterstock-nevodka)

Microservices kommen immer häufiger zum Einsatz. Dabei bilden sie unter anderem die Grundlage für native Cloud-Anwendungen. Doch was sind Microservices und welche Vorteile ergeben sich durch ihren Einsatz?

Microservices folgen einem der wichtigsten Paradigmen bei der Entwicklung von Software: der modularen Programmierung. Dabei wird das Computerprogramm in logische Teilblöcke, die sogenannten Module, aufgeteilt. Dadurch können auch größere Softwareprojekte besser organisiert, umgesetzt und verwaltet werden.

Um dieses Paradigma zu erfüllen, gibt es jede Menge Ansätze und Lösungen. Darunter zum Beispiel der Einsatz von Klassen, die wiederum in Pakete zusammengefasst werden. Um allerdings ein solches Konstrukt ausführen zu können, müssen immer alle Pakete und Klassen deployed werden.

Microservices haben genau in diesem Punkt einen entscheidenden Vorteil: Sie können auch unabhängig voneinander eingesetzt werden. Soll also das System um einen Microservice erweitert werden, so muss lediglich dieser eine Service in Produktion gebracht werden anstatt aller Services.

Microservices kümmern sich jeweils unabhängig voneinander um eigene kleine Teilaufgaben und sind nach außen hin isoliert. Um die Kommunikation zwischen den Microservices zu ermöglichen, werden standardisierte Schnittstellen wie zum Beispiel REST eingesetzt.

Dabei laufen die verschiedenen Microservices, die ein Gesamtsystem ausmachen, auf getrennten Servern oder auch virtuellen Maschinen. Würden alle Services auf einem einzigen System laufen und ein Microservice das System überlasten, so bestünde die Gefahr des Ausfalls der anderen Services auf dem System. Diese Gefahr wird dadurch minimiert, erhöht allerdings die Komplexität des Systems.

Vorteile von Microservices

Die Unabhängigkeit eines Microservices von anderen ermöglicht das ebenso unabhängige Arbeiten kleiner Entwicklerteams, die einen oder mehrere thematisch zusammengehörige Microservices verwalten. Dabei ermöglicht die vorhandene Isolation der Services die Entwicklung eines Microservices in einer beliebigen Programmiersprache und auch mit verschiedenen Technologien. Es muss lediglich der Standard der verwendeten Schnittstelle eingehalten werden. Selbst das komplette Ersetzen eines Microservices lässt sich dadurch denkbar unkompliziert umsetzen.

Dabei besitzt eine Microservice-Architektur auch eine hohe Stabilität. Durch die Unabhängigkeit der Microservices läuft das System weiterhin, selbst wenn ein Service ausfällt. Der Fehler muss dann lediglich im entsprechenden Microservice behoben oder durch einen neuen Service ersetzt werden, während die restliche Architektur davon unberührt bleibt.

Auch lässt sich eine derartige Anwendung ohne Probleme vergrößern oder verkleinern. Dabei werden lediglich die einzelnen Microservices unabhängig und je nach Bedarf individuell skaliert.

Microservices und ihre Nachteile

Kein Architektur-Ansatz kommt ohne Nachteile aus. So auch Microservices. Die große Anzahl der verteilten kleinen Services erhöht die Latenzzeit immens, da die Kommunikation zwischen den Microservices über verschiedene Server hinweg läuft anstatt nur zwischen Prozessen auf einem einzigen System.

Während Microservices das Programmierparadigma der Modularität perfekt erfüllen, wird ein anderes verletzt. Das Prinzip „Don’t repeat yourself“ (Wiederhole dich nicht) soll redundanten Code in einem Projekt vermeiden. Dabei werden Codeabschnitte – wenn möglich – an mehreren Stellen wiederverwendet. Durch die Unabhängigkeit der Teams bei der Entwicklung von Microservices besteht genau dabei die Gefahr, dieses Prinzip zu verletzen. Auch wenn Microservices verschiedene Aufgaben behandeln, können sie trotzdem ein gleiches Problem aufweisen. Wurde dieses bereits durch ein Team innerhalb eines Services gelöst, so muss es durch die Isolation der Microservices in dem anderen Team erneut umgesetzt werden.

Insgesamt erhöht die Unabhängigkeit und die Isolation der Microservices an mehreren Stellen den Aufwand. Darunter wird das Testen der Software komplexer. Auch der Vorteil des unabhängigen Deployments wird zu einem Nachteil, da jeder Microservice seinen eigenen Deployment-Prozess benötigt.

Der Einsatz von Microservices

Vor Projektbeginn sollten alle Aspekte genau abgewogen werden, bevor sich ein Team für oder gegen eine Microservices-Architektur entscheidet. Microservices haben vor allem bei größeren Projekten entscheidende Vorteile: unabhängige kleine Teams sowie die Skalier- und Wartbarkeit und die Tatsache, dass nur eine geringe Koordination zwischen diesen Teams notwendig ist, sind nur einige davon. Die Frage ist jedoch, ob diese Vorteile schwerer wiegen als der in vielerlei Hinsicht größere Aufwand.

Das könnte dich auch interessieren:

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.