X

Neuste Trends, Tipps, Strategien &
Events rund um das Thema Cloud

Microservices: Smart verteilte Software in der Cloud

Der Grundgedanke von Microservices ist ebenso einfach wie genial. Und mindestens 200 Jahre alt. Denn eine der ersten großen, erfolgreichen Innovationen, die darauf beruhen, ist die Eisenbahn. Sie wäre ohne Microservices – in ihrer analogen Urform – nicht das, was sie heute weltweit ist. Waggons mit Kupplungen, beliebig kombinierbar, funktional vielfältig und zugleich voneinander unabhängig… modular, würde man heute sagen.

 

Was sind Microservices?

 

Bei der sogenannten verteilten Softwareentwicklung bilden Microservices einzelne Bausteine einer Gesamtlösung: Jedes Teil arbeitet im Prinzip für sich, unabhängig von den anderen, aber alle kommunizieren miteinander über gemeinsame Schnittstellen. Komplexe Programme und ihre Funktionen werden in einzelne Dienste aufgeteilt.
 

 

Modularität ist auch in der Programmierung moderner Software ein essenzielles Paradigma. Monolithische Programme hingegen – also in einem Stück geschaffene – sind heute weitgehend passé. Softwarepakete werden inzwischen aber nicht nur modular aufgebaut, sondern ihre einzelnen Komponenten verrichten außerdem ihre Aufgaben cloudbasiert an unterschiedlichen Standorten. Der Vorteil: Größere Softwareprojekte lassen sich in ihrer Umsetzung und Organisation sowie in ihrem Zusammenspiel leichter optimieren. Und genau hier liegt das Hauptargument für die wachsende Bedeutung von Microservices.

 

Microservices - was ist das nun konkret?

Microservices sind vergleichbar mit dem Zellsystem des menschlichen Körpers: Viele Billionen Zellen werden für einige hundert Aufgabenbereiche gebraucht, die wiederum das Funktionieren des Gesamtorganismus' sicherstellen.

Ein einzelner Microservice enthält eine in sich abgeschlossene Funktionalität und wird eigenständig entwickelt und betrieben. Es handelt sich also um eine kleine Einzelkomponente (ein Service) in einem Software-Gesamtsystem. Diese Komponente stellt wiederum eine Teilfunktion in einer verteilten Applikation bereit. Die auf Microservices basierende Applikationsarchitektur ist somit modularisiert und kann deshalb schneller und einfacher um weitere Funktionen ergänzt werden. Das vereinfacht auch die Wartungsarbeiten im Lebenszyklus.

 

Wie funktionieren Microservices?

Die Microservices-Architektur ist eine Weiterentwicklung der serviceorientierten Architektur (SOA). Bei SOA spielen ebenfalls einzelne Softwaremodule als Services eine Rolle. Wesentlicher Unterschied: Bei SOA sind die Module an einem Ort in einem Gesamtsystem zusammengefasst, also gerade nicht voneinander unabhängig. In einem SOA-Konzept geht die Softwareentwicklung nicht ohne Beteiligung allerbeteiligter Teams. Deshalb ist die Teambildung bei monolithisch gestalteten Programmen anders organisiert als bei der Microservice-Architektur; z. B. kümmert sich ein Team um die Datenbankentwicklung, andere Teams um den Aufbau des Benutzer-Frontends bzw. die Entwicklung einzelner Funktionalitäten. Zusätzlich braucht man Mitarbeiter für Analysen und Wartung. Bei einer monolithisch aufgebauten Software sind alle beteiligten Teams voneinander abhängig; bei der Microservice-Architektur lassen sich dagegen Entwickler-Abhängigkeiten weitestgehend vermeiden.

 

Vor- und Nachteile: Microservices auf dem Prüfstand

Ein cloudbasierter Microservices-Ansatz weist zunächst eine ganze Reihe von Vorzügen auf:

•      Verbesserte Skalierbarkeit: Sobald ein Microservice innerhalb einer Gesamtapplikation stärker belastet wird als die übrigen, kann dieser eigenständig skalieren und die zusätzlich benötigten Ressourcen anfordern, ohne dabei das Gesamtsystem in seiner Performance negativ zu beeinflussen.

•      Mehr Agilität: Softwareerweiterungen und -änderungen können an einem Microservice vorgenommen werden, ohne dabei andere Services zu beeinträchtigen.

•      Optimierte Verfügbarkeit: Der Ausfall eines Teil-Services innerhalb einer Applikation stellt die Verfügbarkeit des Gesamtsystems nicht infrage – der Fehler beschränkt sich darauf, dass kurzzeitig eine einzelne Funktionalität nicht zur Verfügung steht. Ein User am Frontend bemerkt es unter Umständen überhaupt nicht, wenn im Backend-Bereich ein Microservice ausfällt.

•      Kontinuität: Für Updates und Erweiterungen muss nicht mehr die gesamte Applikation in den Wartungsmodus geschickt, geschweige denn das gesamte Programmpaket aktualisiert werden.

Noch ein wesentlicher Vorteil von Microservices ist, dass sie mehrfach verwendet werden können: Nach der Fertigstellung eines Microservices kann dieser später eine Funktion auch in vielen anderen Applikationen abbilden. Das Modul kann, was es kann, überall.

Wo ist nun der Haken bei der Microservices-Architektur? Unter Umständen zunächst bei der Geschwindigkeit. Es kann durchaus passieren, dass sich durch die Kommunikation vieler einzelner Services die Latenzzeiten spürbar erhöhen. Die einzelnen Module agieren nun mal in einem verteilten System und nicht mehr auf einem zentralen Server.

Ein anderer potentieller Nachteil ist unbeabsichtigte Redundanz: Durch die Eigenständigkeit der Entwicklerteams kann sich derselbe Programmcode an verschiedenen Orten in unterschiedlichen Modulen einschleichen. Die Folge ist Mehraufwand an Entwicklungszeit, obwohl ja ursprünglich das Gegenteil erreicht werden sollte, indem einzelne Services mehrfach verwendet werden können. 

Verschwiegen werden soll auch nicht, dass sich durch die Unabhängigkeit und Isolation von Microservices an verschiedenen Orten der Wartungsaufwand erhöht und Testszenarien sich komplexer gestalten.

 

Wo werden Microservices eingesetzt?

Microservice-Architekturen bewähren sich bereits in vielen großen Unternehmen. Sie haben dort etwa Geschäftsprozesse optimiert und interne Probleme beseitigt. Beispiele der Big Player im Online-Geschäft wie eBay, Spotify und Netflix belegen eindrucksvoll die Vorteile von Microservices, nachdem man damit etablierte monolithische Systemarchitekturen aufgebrochen hat. Auch andere Branchengrößen wie Amazon und Google arbeiten längst mit global verteilten Microservices. Genauer gesagt, sie haben schon verteilte modulare Strukturen benutzt, als es den Begriff Microservices noch gar nicht gab.  

•     Das Online-Auktionshaus eBay fing einst als Monolith-System an, dessen Umfang aber schon bald solche Ausmaße annahm, dass das Ganze kaum noch zu warten war. Irgendwann verbargen sich über drei Millionen Zeilen in einer einzigen Code-Datei! – Grund genug für den Branchenriesen, den monströsen Monolithen in viele einzelne, javabasierte Microservices aufzuteilen. Diese kommunizieren per REST untereinander, einem Programmierparadigma für Webanwendungen. Das Beispiel eBay zeigt den Fortschritt: Als es nur wenige Nutzer gab, war ein monolithisch gestaltetes Software-Projekt vollkommen ausreichend; mit wachsenden Anforderungen entstand ein wachstumshemmendes Software-Ungetüm.

•     Der Musikstreaming-Anbieter Spotify ist ebenfalls ein prominenter Nutzer von Microservices und ein Beispiel von Effizienzsteigerung durch verteilte Software. Mit Apple, Google und Amazon hatte Spotifiy bereits beim Start große Konkurrenten im Musikstreaming-Business. Um nun schnell auf wachsende Nutzerzahlen reagieren und neue Funktionen integrieren zu können, waren Microservices für Spotify die beste Lösung – z. B. die Funktion, Vorschläge bereits beim Eingeben eines Suchbegriffs zu erhalten. Dafür ist ein eigenes Team verantwortlich. Außerdem gewährleisten Microservices die Robustheit des gesamten Systems. Insgesamt sind hier mehr als 800 Microservices im Einsatz, die größtenteils auf Java basieren, gibt Spotify an. Im Prinzip können einzelne Services auch in unterschiedlichen Programmiersprachen entwickelt werden. Da aber einzelne Mitarbeiter öfters das Team wechseln, ist es durchaus sinnvoll, wenn alle Teams in derselben Sprache entwickeln.

•     Bei Netflix war es ein böser Unfall: Als man noch DVDs per Post verschickte, basierte auch dieser Anbieter auf einem monolithisch aufgebauten Online-Service. 2008 passierte es dann. Netflix fiel durch einen Datenbankfehler vier Tage lang komplett aus. Untragbar! Man entschied, das bestehende System in Microservices aufzuteilen und erkannte schnell: Funktionserweiterungen im System können so wesentlich schneller livegeschaltet werden, und auch Reparaturen an einzelnen Services sind viel einfacher zu bewerkstelligen. 
Wegen des Zuwachses an Funktionen im Gesamtsystem entwickelte man später die Software „Conductor“, mit der sich die einzelnen Services untereinander organisieren lassen. So können die Microservices einzeln skaliert und zentral gesteuert werden. Eine weitere wichtige Schaltstelle im Gesamtsystem bildet ein Service namens Decider. Dieser plant automatisiert Prozesse und reagiert auf Ereignisse im Workflow.

 

Microservices – was ist das? Grundlagen. Vorteile und Nachteile.

 

Was kommt nach Microservices?

Das Internet of Things (IoT) ist eine der großen Zukunftsnummern, und auch hier gewinnen Microservices immer mehr an Bedeutung. Effizienzsteigerung bei gleichzeitiger Energieeinsparung spielen in diesem Umfeld eine besondere Rolle. So machen es Microservices möglich, Virtualisierungen umzusetzen und Server optimal auszulasten. Microservices lassen sich zu Containern zusammenfassen und haben damit eine Technologie hervorgebracht, die – noch – Enterprise-Kunden vorbehalten ist. Microservice-Container dienen vorrangig der Portierbarkeit von Applikationen in Multicloud-Umgebungen. Server-Cluster lassen sich damit besser auslasten, wodurch wiederum einzelne Server eingespart werden können. Daraus hat sich eine Vision mit dem klangvollen Namen „Serverless“ ergeben. Serverless ist als Architektur extrem schlank, mehr noch als Microservices, da die Funktionen weder ein Betriebssystem noch Code, CPU-Rechenzeit oder Systemwerkzeuge erfordern. Serverless läuft ohne Funktionsaufrufe und Maschinen!

Oracle-Entwicklungschef Chad Arimura beschrieb Serverless-Funktionen kürzlich als „das nächste SOA-Ding“: Codeblöcke, die idealerweise klein und zweckbestimmt sind und durch eine FaaS-Plattform (Functions-as-a-Service) terminiert und koordiniert werden. Hierfür eignen sich beispielsweise AWS Lambda von Amazon, Azure Functions von Microsoft oder auch Frameworks wie das Fn-Flow-Projekt von Oracle.

 

Fazit: Geniale Architektur – wenn sie richtig umgesetzt wird

Wie jede Software-Architektur hat die besondere Form der Modularisierung bei Microservices ihre Vor- und Nachteile. Einerseits die unabhängige Arbeit jedes einzelnen Teams. Andererseits der größere Aufwand bei Betrieb und Monitoring. Ein erhebliches Potenzial für Vereinfachungen bei der Entwicklung und Wartung bieten Microservices in jedem Fall. Wenn aber die Herausforderungen dieser Technologie nicht beachtet werden, führt die Umsetzung kaum zu den gewünschten Erfolgen. Wichtig ist nicht zuletzt eine zweckmäßig geplante Infrastruktur. Microservices allein wegen des trendigen Architektur-Ansatzes einführen zu wollen, ist ein teures Ticket für den IT-Friedhof.

 

Kontakt:

Wenn Sie noch mehr darüber wissen möchten, dann sind wir gerne für Sie da, per LinkedIn, Facebook oder Twitter.

Kommentieren

Kommentare ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha