Microservices: Vom Monolithen zum Baukastensystem
Bei der Entwicklung von Applikationen hat sich in den letzten Jahren ein Paradigmenwechsel abgezeichnet. Klassisch wurde oft ein so genannter Monolith entwickelt: die eine, große Lösung, die sämtliche Anwendungsfälle und Einsatzmöglichkeiten abdeckt. Diese groß dimensionierten Systeme waren dann aber in ihrer Architektur und Handhabung oft sehr komplex und in der Anschaffung sehr teuer. Heute präferieren Anwender schlankere Applikationen. Sie wollen nur noch die Funktionen einer Software implementiert haben, die sie auch tatsächlich nutzen. Die Nachfrage nach breit angelegten Lösungen, von denen am Ende nur ein Bruchteil genutzt wird, sinkt.
Vor diesem Hintergrund geht der Trend auf Hersteller- und Entwicklerseite dahin, groß dimensionierte Monolithen in kleine Anwendungen aufzuteilen, die auch entkoppelt voneinander als Einzelmodule funktionieren. Diese sogenannten Micro-Services werden dann vom Service-Provider in einem Rechenzentrum gehostet und dem Anwender als Cloud-Applikation zur Verfügung gestellt. Die Analysten von Gartner bestätigen diesen Trend, und sprechen von einer Infrastruktur in Richtung so genannter „Micro-Datacenter“.
Micro-Datacenter als Trend
Demnach werden bis 2023 die führenden Cloud-Service-Provider dem Anwender ihre Dienste statt über ein zentrales Rechenzentrum verstärkt über mehrere klein dimensionierte Datacenter zur Verfügung stellen. Der Trend geht damit eindeutig weg von der großen Sever-Farm, in der sämtliche Services gehostet werden, und hin zu schlanken Rechenzentren, die jeweils nur einen kleinen Teil der Anwendungen zur Verfügung stellen, die der Hersteller im Portfolio hat. Der Vorteil von dieser Bereitstellungsmethode ist, dass die Latenz spürbar sinkt. Ziel der Micro-Services ist also eine reaktionsschnelle und flüssige Performance aus Anwendersicht.
Flexibler durch modularen Aufbau
Neben dem zu Anfang beschriebenen Vorteil, nur noch das implementieren zu müssen, was wirklich gebraucht wird, haben weitere Faktoren zu dieser Entwicklung geführt. Es geht bei diesem fundamentalen Trend darum, komplexe Anwendungen in einzelne, möglichst unabhängige Prozesse aufzugliedern. Diese übernehmen kleine Aufgaben – zum Beispiel, eine Rechnung zu schreiben, oder einen Preis zu ändern. Wichtig ist dabei auch, dass sie über möglichst standardisierte Schnittstellen verfügen, damit sie mit möglichst vielen weiteren Services kommunizieren können.
Sobald diese Services untereinander kommunizieren, also Daten austauschen können, ergibt sich ein Baukastensystem, in dem sich modulare Applikationen nach individuellen Ansprüchen zusammenstellen lassen können. Mit derartigen Modul-Architekturen und der Unabhängigkeit von Programmiersprachen und Entwicklungsumgebungen haben Systemhäuser und Entwickler viel mehr Freiheit, da sie nun sehr flexibel Service entwickeln und zur Verfügung stellen können, die zu den eigenen Ansprüchen oder denen ihrer Kunden passen. Darüber hinaus ist die Pflege des Systems im Vergleich zum Monolithen spürbar einfacher. So können beispielsweise einzelne, autarke Bausteine mit weniger Abhängigkeiten vom Gesamtsystem bedeutend leichter von Fehlern bereinigt oder verbessert werden.
„API-first“ als Kriterium und Herausforderung
Für Entwickler ist in diesem Zusammenhang der „API-first“-Ansatz leitend – und zugleich auch eine Herausforderung. Denn: Nur wenn ein Microservice gut und optimal über eine Programmierschnittstelle (API = Application Programming Interface) Daten austauschen kann, funktioniert das Konzept. Andernfalls entstehen Insellösungen ohne die genannten Vorteile. Eine Schnittstelle arbeitet aber nur dann gut – und darin liegt die erste Herausforderung – wenn der Entwickler die Gegenstelle für den Datenaustausch ebenfalls gut kennt. Sie muss die übergebenen Daten annehmen oder bereitstellen können. Die Lösung für diese Herausforderung liegt in Standards, auf die sich Entwickler im Blick auf Schnittstellen, Daten und die Kommunikation einigen. So können Microservices jede Funktion im System übernehmen, zum Beispiel einen Bestellprozess auslösen, eine Rechnung stellen oder einen Wareneingang abbilden und performant Daten austauschen.
Plattform kümmert sich um die Skalierung
Nicht zuletzt lassen sich Microservices sehr gut skalieren, was bei Cloud-basierten Anwendungen sehr wichtig ist. Nutzer erwarten schnelle Reaktionszeiten und eine flüssige Performance. Mit Microservices ist es theoretisch möglich, jeden Service auf einen eigenen Server zu legen und so die nötige Skalierbarkeit sicherzustellen, dass jederzeit genügend Rechenleistung und Speicherkapazität zur Verfügung steht, für den Fall, dass die Workloads zunehmen.
Neben der Performance gibt es zudem wirtschaftliche Aspekte: Ein monolithisches System muss immer komplett hochgefahren werden und laufen, auch wenn nur eine Funktion aus der Anwendung gebraucht wird. Flexibler gestaltete System-Architekturen auf Basis von Microservices dagegen reagieren agil darauf, welche Anwendung gerade gebraucht wird. So nehmen sie dann auch nur die Infrastruktur in Anspruch, die auch wirklich gebraucht wird. Damit bleiben Kosten und Kapazitäten effizient.
Nächster Schritt: Verteilung in der Distributed Cloud
Beim Hosting von Microservices geht der Trend klar zu einer dezentralen Verteilung auf mehrere Rechenzentren im Sinne einer Distributed Cloud. Dies zeigt die eingangs zitierte Studie von Gartner eindeutig. Dies bringt wiederum seine eigenen Herausforderungen und Vorteile mit sich. Wie diese exakt aussehen, lesen Sie im nächsten Teil 2 „Microservices: Von der der Cloud in die Distributed Cloud“.