Microservices sind ein Architekturmuster zur Erstellung von Software, bei dem komplexe Anwendungen aus zahlreichen, kleinen, unabhängigen Prozessen erstellt wird, die untereinander mit sprachunabhängigen Programmierschnittstellen (APIs) kommunizieren. Die Dienste sind weitgehend entkoppelt, erledigen je eine kleine, übersichtliche Aufgabe. So ermöglichen sie einen modularen Aufbau von Anwendungssoftware, die sich gut skalieren lässt. Aufgrund der Skalierungsfähigkeit sind Microservices bei Superscalern wie Google, Amazon und Netflix sehr verbreitet, welche auf HTTP und REST-basierende Services benutzen.
Solche Microservices benötigen sehr viele Infrastrukturdienste, welche selbst wiederum eigenständig implementiert sind. Zentrale Routingdienste kümmern sich um die Zuordnung von URLs zu Instanzen von Diensten und übernehmen als Load-Balancer die Lastverteilung von HTTP-Requests. Bei Überlast können Autoscaler neue Dienstinstanzen starten und bei Unterauslastung auch wieder stoppen. Statische Inhalte werden mittels eines Content Delivery Network ausgeliefert. Weitere Dienste übernehmen Anwendungs- und Service-Monitoring, Logging, Operations-Datenbanken, Konfigurationsmanagement, Verschlüsselung, Authentifizierung und Autorisierung, Softwareverteilung u.v.a.m. Optimaler Weise sollten Microservices auch eigene Dienste für die Datenpersistierung benutzen. Das reicht von einfachen Caches über NoSQL- bis relationale Datenbanken.
Allerdings haben Microservices nicht nur Vorteile. Die gute Skalierbarkeit wird durch einen sehr hohen Overhead durch die Netzwerkumsetzung erkauft. Die vielen Services erschweren es im Betrieb den Überblick zu behalten und sind durch ihre Komplexität fehleranfällig.