
Microservices
Microservices sind eine Bauweise für Software: Ein großes Programm wird in viele kleine, eigenständig laufende Teilprogramme zerlegt, die über das Netzwerk miteinander reden. Jedes Teil kann getrennt entwickelt, aktualisiert und vergrößert werden.
Große Programme wie ein Online-Shop bestehen aus vielen Aufgaben: Anmeldung, Suche, Warenkorb, Bezahlung, Versand. Man kann das alles in ein einziges großes Programm schreiben, das als ein Stück läuft. Bei Microservices macht man das Gegenteil. Jede Aufgabe bekommt ein eigenes kleines Programm, das für sich allein läuft und gestartet werden kann. Diese kleinen Programme sprechen über das Netzwerk miteinander, ähnlich wie Kollegen in verschiedenen Büros, die sich gegenseitig anrufen. Die Alternative, also das eine große Programm aus einem Guss, nennen Entwickler einen Monolithen.
Warum große Firmen ihre Software zerlegen
Der wichtigste Grund ist Arbeitsteilung. An einem Monolithen arbeiten alle Entwickler an derselben Code-Basis. Sobald hunderte Leute daran schreiben, blockieren sie sich gegenseitig. Bei Microservices bekommt jedes Team ein eigenes kleines Programm und kann es unabhängig veröffentlichen. Ein Team kann seine Version zehnmal am Tag aktualisieren, ohne den Rest zu fragen.
Der zweite Grund ist Skalierung, also das Mitwachsen bei hoher Last. Am Black Friday wird vor allem die Bezahlfunktion überrannt, nicht die Seite mit den Nutzungsbedingungen. In einem Monolithen muss man das gesamte Programm vervielfachen, obwohl nur ein kleiner Teil davon überlastet ist. Bei Microservices startet man einfach zwanzig Kopien des Bezahl-Dienstes und lässt den Rest unverändert.
Drittens bleibt ein Ausfall oft örtlich begrenzt. Wenn der Dienst für Produktbewertungen abstürzt, kann der Shop weiter verkaufen und blendet die Bewertungen einfach aus. Das funktioniert allerdings nur, wenn man es bewusst so baut. Ohne diese Vorsorge reißt ein hängender Dienst die anderen mit, weil sie ewig auf seine Antwort warten.
Wie die kleinen Dienste miteinander reden
Jeder Microservice läuft in einem eigenen Prozess, meist in einem Container. Ein Container ist eine abgeschottete Verpackung, die das Programm samt allem Nötigen enthält und überall gleich startet. Die Dienste tauschen Nachrichten über das Netzwerk aus, häufig als einfache Anfragen über das Web-Protokoll HTTP. Zusätzlich nutzen viele Systeme eine Warteschlange: Ein Dienst legt dort eine Nachricht ab, ein anderer holt sie später ab.
Wichtig ist die Regel, dass jeder Dienst seine eigenen Daten besitzt. Der Bezahl-Dienst greift nicht direkt in die Datenbank des Warenkorbs. Er fragt stattdessen höflich beim Warenkorb-Dienst nach. Nur so bleiben die Teile wirklich unabhängig austauschbar. Verletzt man diese Regel, entsteht ein Monolith mit Netzwerk dazwischen, also das Schlechteste aus beiden Welten.
Der Preis dafür ist Komplexität im Betrieb. Statt eines Programms muss man plötzlich fünfzig überwachen. Man braucht Werkzeuge, die eine einzelne Bestellung über alle beteiligten Dienste hinweg nachverfolgen. Und das Netzwerk ist unzuverlässiger als ein Aufruf innerhalb eines Programms: Anfragen gehen verloren oder dauern zu lange. Deshalb gilt heute die Faustregel, dass kleine Teams besser mit einem gut sortierten Monolithen starten.
Microservices bei Netflix, Amazon und in KI-Diensten
Bekannt wurde die Bauweise durch Amazon und Netflix, die ihre Systeme in den 2000er- und 2010er-Jahren in hunderte Dienste zerlegten. Wer heute Netflix startet, löst dabei Anfragen an dutzende Microservices aus: Anmeldung, Empfehlungen, Untertitel, Abrechnung. Auch Uber, Spotify und die meisten großen Banken arbeiten so.
In der KI-Welt begegnet einem das Prinzip ebenfalls. Ein Chatbot-Anbieter betreibt getrennte Dienste für die Nutzerverwaltung, die Suche in Dokumenten und die eigentliche Antwortberechnung durch das Sprachmodell. Der teure Modell-Dienst läuft auf speziellen Grafikchips, der Rest auf normalen Servern. Diese Trennung spart Geld, weil man nur den teuren Teil vervielfacht.
In Wirtschaftsnachrichten taucht der Begriff meist im Zusammenhang mit Cloud-Anbietern auf, also Firmen, die Rechenleistung vermieten. Microservices sind ein Hauptgrund, warum Unternehmen Dienste wie Kubernetes einsetzen, eine Software zum Verwalten vieler Container. Wenn eine Bank ankündigt, ihre alte IT zu modernisieren, meint sie fast immer den Umbau eines Monolithen in Microservices.