Web & Entwicklung

Microservices

Microservices zerlegen eine Anwendung in kleine, eigenständig laufende Dienste, die über Schnittstellen zusammenarbeiten. Jeder Dienst lässt sich einzeln aktualisieren und ausrollen.

Redaktionell geprüft von Alexander SeidlertwentyonepixelsStand:

Der Preis, der selten genannt wird

Aus einem Programm werden viele, und zwischen ihnen liegt das Netz. Fehlersuche wird schwieriger, weil ein Vorgang durch fünf Dienste läuft; Datenkonsistenz wird zur eigenen Aufgabe, weil es keine gemeinsame Datenbank mehr gibt.

Dieser Aufwand ist konstant, der Nutzen wächst erst mit der Größe. Deshalb ist die Aufteilung für die meisten Firmenanwendungen die falsche Antwort auf ein Problem, das sie nicht haben.

Welches Problem sie tatsächlich lösen

Ein organisatorisches: Mehrere Teams können unabhängig voneinander ausrollen. Wo es nur ein Team gibt, entfällt der Hauptnutzen — und die Kosten bleiben vollständig bestehen.

Der technische Nutzen, einzelne Teile getrennt skalieren zu können, ist real, aber bei den meisten Firmenanwendungen theoretisch. Wenn kein Teil an seine Grenze kommt, gibt es nichts getrennt zu skalieren.

Woran die Aufteilung meist scheitert

An der falschen Schnittlinie. Wer nach technischen Schichten trennt, bekommt Dienste, die für jede fachliche Änderung gemeinsam angefasst werden müssen — der Aufwand steigt, der Nutzen bleibt aus.

Die brauchbare Trennung folgt Fachbereichen, und die kennt man am Anfang selten genau. Deshalb ist der übliche Rat, mit einer zusammenhängenden Anwendung zu starten und erst zu trennen, wenn die Linien sichtbar sind.

Wann es sich lohnt

Wenn mehrere Teams unabhängig veröffentlichen müssen, oder wenn ein Teil der Anwendung ganz andere Lastspitzen hat als der Rest und getrennt skaliert werden soll.

Der übliche Weg ist deshalb: als zusammenhängende Anwendung beginnen, sauber getrennte Bereiche im Inneren, und erst herauslösen, was nachweislich eigenständig sein muss.

Häufige Fragen zu Microservices

Eine Zeilenzahl gibt es nicht; die verbreitete Faustregel bemisst die Größe am Team: ein Dienst, den fünf bis sieben Personen in etwa einem Monat neu schreiben könnten. Diese Zahl stammt aus Ratgebertexten ohne Messverfahren und ist damit eine Konvention, keine Messung. Microsoft nennt dieselbe Grenze ohne Zahl: klein genug für ein einzelnes Team, groß genug für eine fachliche Aufgabe. Zu feine Dienste erhöhen nur die Zahl der Netzaufrufe.

Nein – Microservices laufen auch als einzelne Prozesse hinter einem Webserver auf einer Maschine. Eine Orchestrierung wird nötig, sobald Instanzen automatisch verteilt, ersetzt und nach Last vergrößert werden sollen; bis dahin bindet sie mehr Einarbeitung, als sie einspart. Die Reihenfolge lautet deshalb: erst der fachliche Schnitt, dann die Verpackung in Container, dann – wenn überhaupt – die Orchestrierung. Kubernetes ersetzt keine Entscheidung über Dienstgrenzen.

Für Querschnittsaufgaben wie Protokollierung ja, für fachliche Regeln nein. Microsoft führt geteilte Bibliotheken zwischen Diensten ausdrücklich als Antimuster: Jede Änderung an der Bibliothek zwingt alle Dienste, die sie einbinden, zu einer gemeinsamen Veröffentlichung. Damit entfällt die Unabhängigkeit, für die der ganze Aufwand betrieben wurde. Prüfbares Kennzeichen: Lässt sich ein Dienst nicht mehr allein ausrollen, ist die geteilte Abhängigkeit zu fachlich geworden.

Mit Vertragstests statt mit einer vollständigen Kopie der Umgebung. Geprüft wird je Schnittstelle, dass der aufrufende Dienst genau das erwartet, was der gerufene zusichert; beide Seiten prüfen denselben Vertrag, aber getrennt voneinander. Ein Test über vier Dienste hinweg braucht alle vier lauffähig und schlägt bei jeder fremden Störung fehl. Was Vertragstests nicht leisten: Sie prüfen die Form der Daten, nicht deren fachliche Richtigkeit.

Der gerufene Dienst – die Lage im internen Netz ist keine Berechtigung. Microsoft empfiehlt dafür eine gegenseitige TLS-Prüfung zwischen den Diensten sowie Rollenrechte und benennt es als Antimuster, die Prüfung der Zugangsmerkmale in jeden Dienst einzubauen statt sie an einer eigenen Stelle zu bündeln. Praktische Folge: Jede neue Schnittstelle zwischen zwei Diensten ist ein Zugangspunkt, der eine eigene Entscheidung über Rechte braucht.

Mehr zum Thema

9 Min. Lesezeit

Backup-Strategie für kleine Unternehmen: was wirklich hilft

Gesichert wird fast überall – geschützt ist es selten. Was die 3-2-1-Regel leistet, wie eine Kopie Ransomware übersteht, wo Microsoft 365 aufhört und wie ein Wiederherstellungstest aussieht.

7 Min. Lesezeit

Ivanti Connect Secure: Angriffe laufen – jetzt patchen

Eine Lücke in Ivantis VPN-Gateway Connect Secure lässt Angreifer ohne Anmeldung Befehle ausführen, und sie wird bereits ausgenutzt. Welche Versionen betroffen sind, welche Updates schließen und was das Update nicht leistet.

Alle Fachbeiträge ansehen

Passende Leistungen

Cloud-Migration

Weg von teuren US-Clouds und Altservern: Umzug Ihrer Anwendung in die Hetzner Cloud — containerisiert, skalierbar und DSGVO-konform.

Mehr dazu

DevOps & CI/CD Pipelines

Schluss mit manuellen Releases: automatisierte Test- und Deploy-Pipelines mit Docker, GitHub Actions und sauberer Nginx-Konfiguration.

Mehr dazu