Microservices sind ein Architekturstil, bei dem eine Anwendung nicht als ein einzelnes großes Programm, sondern als mehrere eigenständige, unabhängig betriebene Dienste aufgebaut wird.
Statt eine gesamte Anwendung als einen großen, eng verzahnten Softwareblock zu bauen, wird sie bei Microservices in mehrere kleinere, in sich geschlossene Dienste zerlegt. Jeder Dienst übernimmt eine klar abgegrenzte fachliche Aufgabe – etwa die Verwaltung von Kundendaten oder die Zahlungsabwicklung – und kann unabhängig von den anderen Diensten weiterentwickelt und betrieben werden.
Jeder Microservice läuft als eigenständiger Prozess mit eigenem Datenbestand und kommuniziert mit anderen Diensten über klar definierte Schnittstellen, meist über das Netzwerk. Weil die Dienste voneinander entkoppelt sind, lässt sich ein einzelner Dienst aktualisieren, neu starten oder bei Bedarf zusätzlich skalieren, ohne dass die übrige Anwendung angepasst werden muss. Diese Aufteilung erhöht die Flexibilität, erhöht aber zugleich die Komplexität beim Betrieb, da viele einzelne Dienste koordiniert werden müssen.
Ein Online-Shop kann aus getrennten Diensten für Produktkatalog, Warenkorb, Zahlungsabwicklung und Versand bestehen. Fällt der Zahlungsdienst kurzzeitig aus, können Kundinnen und Kunden weiterhin im Produktkatalog stöbern, während nur die Zahlungsfunktion betroffen ist.
Microservices werden eingesetzt, um große, häufig aktualisierte Anwendungen leichter wartbar zu machen, verschiedene Teams unabhängig an einzelnen Diensten arbeiten zu lassen und Teile einer Anwendung gezielt nach Bedarf zu skalieren, statt die gesamte Anwendung gleichmäßig zu vergrößern.
Microservices sind kein Selbstzweck und lösen nicht automatisch jedes Softwareproblem: Die Aufteilung in viele einzelne Dienste erhöht den Koordinations- und Betriebsaufwand deutlich, etwa bei der Überwachung, Fehlersuche und Kommunikation zwischen den Diensten. Für kleinere Anwendungen kann ein einzelner, zusammenhängender Softwareblock oft einfacher zu entwickeln und zu betreiben sein.
Nicht zu verwechseln mit der Application Programming Interface: Diese beschreibt die Schnittstelle, über die Dienste miteinander oder mit anderen Programmen kommunizieren, während Microservices den grundsätzlichen Architekturstil einer Anwendung beschreiben. Ebenfalls abzugrenzen ist Container (Software): Container sind eine verbreitete, aber nicht zwingende technische Betriebsform für Microservices, kein eigener Architekturstil.