Die steigende Komplexität der Cloud

Effizienz mit Microservices

von - 20.04.2018
Um die Modularisierung von Applikationen voranzutreiben, sind vor allem die sogenannten Microservices effektive Ansätze. Denn sind die Anwendungen erst einmal als Service-Set aufgebaut, ist es möglich, diese ganz unabhängig voneinander zu entwickeln, zu testen und zu skalieren. Zudem können die Microservices unabhängig voneinander deployed werden, sodass verschiedenste Technologien und Infrastrukturen genutzt werden können. Diese Option gibt Unternehmen ein ganz neues Maß an Flexibilität und Unabhängigkeit – ganz im Gegensatz zu den herkömmlichen monolithischen Applikationen, da hier alle Komponenten im selben Prozess sowie derselben Infrastruktur laufen und nur sehr schlecht voneinander isoliert werden können. Sollen die eben erwähnten Monolithen dann skaliert werden, müssen am Ende alle Komponenten skaliert werden; ganz egal, ob es sich dabei um eine einzelne, isolierte Komponente handelt, welche einen Engpass darstellt. Diese Form von Applikationen benötigt eine große Anzahl an Ressourcen und führt letztendlich lediglich zur ineffizienten Arbeitsweise.

Es ist klar, dass Unternehmen nun nicht alle ihre Applikationen in Microservices herunterbrechen können. Doch da, wo es Sinn macht, bringt es immense Vorteile in Bezug auf Unabhängigkeit und der Vereinfachung der Softwareverteilung mit sich. Nutzer können zudem im Gegensatz zu den herkömmlichen Legacy-Infrastrukturen frei wählen, welcher Technologie-Stack sich für die jeweilige Aufgabe am besten eignet. Auch ein Technologiewechsel im Verlauf der verschiedenen Prozessketten ist möglich. Und wurden die verschiedenen Services erst einmal voneinander getrennt, kann eine virusbehaftete Komponente andere Applikationen nicht mehr Schaden zufügen.

Allerdings ist die Umwandlung zentraler und komplexer Anwendungen in Microservices keine leichte Aufgabe. Umso mehr Unternehmen ihre Applikationen in die Cloud implementieren, desto schneller erkennen sie das Potenzial von effektiven und modernen Strukturmodellen. Aus dem Grund handelt es sich bei Microservices auch mehr um eine Evolution statt einer Revolution. Allerdings müssen sich die Operations-Teams auch hier den evolutionären Schwierigkeiten stellen. Denn eines ist klar: wenn jeder einzelne Service auch eine Deployment Unit darstellt, mit samt Releases, Tests und Monitoring, dann steigt auch die Komplexität. Um den Überblick zu wahren, müssen DevOps-Teams, egal wie kleinteilig es auch sein mag, über alle Komponenten und Applikationen im Ökosystem im Bilde sein.

Server? Nein, Danke!

Heutzutage setzen viele Unternehmen um Applikationen hoch- oder runterskalieren vor allem auf Platform-as-a-Service (PaaS) Lösungen wie etwa Heroku oder OpenShift. In der Regel sind PaaS-Lösungen für langfristige Server-Applikationen designt, damit eigehende Anfragen bei Bedarf bearbeitet werden können, doch sie laufen auch dann weiter, wenn mal keine Anfragen kommen.
Bei diesem Leerlauf ist Serverless Computing wie beispielsweise der Service von AWS Lambda die Lösung. So wird eine Funktion beim Eingehen einer Anfrage gestartet und endet, wenn eine Anfrage bearbeitet wurde. Es gibt einen Code, nicht aber einen Server. Der Code wird als Reaktion auf bestimmte Events automatisch ausgeführt und ihm automatisch die notwendigen Rechenressourcen zugewiesen.

Die Zeit, in der alle Anfragen on demand bedient und Anwendungen ad hoc ausgeführt werden, ist natürlich längst nicht erreicht. Zudem würden auch die aktuellen Preismodelle kaum den Einsatz von Serverless in Bezug auf langfristige Aufgaben zulassen. Doch nichtsdestotrotz müssen wir uns zukünftig auf den Einsatz von serverloser Anwendung einstellen, bei denen die Komplexität natürlich genauso zunehmen wird.

Das große Ganze im Blick behalten

DevOps-Teams müssen eine Menge Herausforderungen, wie etwa die Entwicklung und Verteilung von Software und die Verbesserung der User Experience, stemmen. Daher ist es kein Wunder, dass der Einsatz von verteilten Anwendungen, Containern und Microservices oder serverloser Architektur zunimmt. Doch je mehr die Komplexität der einzelnen Komponenten steigt, desto wichtiger ist es, die Verbindungen der einzelnen Elemente zueinander im Blick zu behalten. Denn nur wer auch einen Überblick über das große Ganze behält, kann am Ende auch die technologischen Vorteile nutzen.
Verwandte Themen