Erklärung und Bedeutung von Microservices

Microservices und das ereignisgetriebene Datacenter

| Autor / Redakteur: Filipe Pereira Martins und Anna Kobylinska* / Ulrike Ostler

Microservices und Messaging bilden die Grundlage des digtalen Nervenkostüms moderner IT.
Microservices und Messaging bilden die Grundlage des digtalen Nervenkostüms moderner IT. (Bild: © ktsdesign /Fotolia.com)

Microservices verändern die Art und Weise, wie Unternehmen ihre IT in Betrieb setzen: Das ereignisgetriebene (event-driven) Rechenzentrum nimmt Gestalt an.

Die Kernidee von Microservices besteht darin, schwer zu wartende, monolithische Anwendungen in leichtgewichtige, skalierbare und fehlertolerante Service-Einheiten aufzubrechen. Microservices haben DevOps (und DevSecOps) zum Erfolg verholfen und eine groß angelegte Containerisierung des Datacenter ausgelöst.

Abbildung 1: Eine monolithische Applikation wie diese Web-Anwendung werkelt in einem Rechenzentrum auf der Stelle vor sich hin .
Abbildung 1: Eine monolithische Applikation wie diese Web-Anwendung werkelt in einem Rechenzentrum auf der Stelle vor sich hin . (Bild: Nginx, Inc.)

Container erlauben es, die einzelnen Microservices-Komponenten voneinander zu isolieren, zwischen verschiedenen Infrastrukturtypen hin und her zu portieren und in exakt vorhersehbarer Qualität bereitzustellen. Mit dem großflächigen Einzug von Containern in das Datacenter finden Microservices immer mehr Anwendung.

Containerisierte Microservices bieten Datacenter drei wichtige Vorteile im Hinblick auf die Kapazitätsplanung:

  • eine weitaus höhere Nutzungsdichte gegenüber monolithischen Anwendungen in VMs und ein niedrigerer Ressourcenverbrauch,
  • freie Portabilität auch über verschiedene Infrastrukturtypen hinweg,
  • bedarfsgerechte Skalierbarkeit und die damit verbundene höhere Agilität des Rechenzentrums.

Von Microservices zum ereignisgetriebenen Datacenter

Trotz all ihrer Vorteile bringen Microservice-Architekturen eine ganze Menge eigener Herausforderungen mit sich. Spätestens wenn es darum geht, die Abwicklung von Transaktionen in verteilten Anwendungen auf der Basis von Microservices zu implementieren, greifen bisherige Ansätze einfach zu kurz.

RESTful-APIs sind einfach nicht dafür geeignet, robuste, fehlertolerante und elastisch skalierbare Microservices zu implementieren. Aspekte eines Deployments wie die Diensterkennung und die Lastverteilung zustandsloser Komponenten, die mit REST-Aufrufen einhergehen, bieten sich hierzu einfach nicht an.

Abbildung 2: In einer Microservices-Architektur (MSA) sind die einzelnen Funktionsbereiche der Anwendung als eigenständige Dienste implementiert (im Beispiel unter Verwendung von RESTful-APIs); die Portabilität der Dienste ist dank Container-Technik gewährleistet
Abbildung 2: In einer Microservices-Architektur (MSA) sind die einzelnen Funktionsbereiche der Anwendung als eigenständige Dienste implementiert (im Beispiel unter Verwendung von RESTful-APIs); die Portabilität der Dienste ist dank Container-Technik gewährleistet (Bild: Nginx, Inc.)

Die abgegrenzten Service-Einheiten in einer Microservices-Architektur (MSA) müssen miteinander effizient kommunizieren können. Dabei soll die Agilität und Elastizität der Anwendung gewahrt bleiben. Die Antwort auf diese Herausforderungen bietet eine Ereignisverarbeitung durch Messaging-Dienste.

Service-Einheiten und Messaging-Dienste

Messaging-Dienste entkoppeln die einzelnen Microservices einer MSA voneinander: Nachrichten wandern stets durch eine Vermittlungsstelle, zum Beispiel eine so genannte Warteschlange oder einen Broker, und zwar asynchron - an einen oder mehrere Empfänger. Die MSA gewinnt dadurch an Widerstandsfähigkeit und Elastizität.

Der Ausfall eines der Microservices führt nicht mehr zum Ausfall der gesamten Anwendung. Die Notwendigkeit der Verfügbarkeit von Diensterkennung (service discovery) entfällt. Die resultierende Softwarelösung arbeitet ereignisgetrieben, autonom und weist eine hohe Anpassungsfähigkeit auf.

Microservices auf der Basis von Messaging-Diensten läuten das Aufkommen ereignisgetriebener IT ein. Für Rechenzentren entstehen hierbei neue Anreize, geeignete Lösungen für die Orchestrierung zu finden, um die Bereitstellung eines geeigneten Infrastrukturunterbaus für elastische Microservices zu gewährleisten.

Abbildung 3: Ein Startup zwei deutscher Unternehmer, Mesosphere, hat mit DC/OS das Management von Datacenter von Grund auf neu konzipiert - genau rechtzeitig für die Microservices-Revolution.
Abbildung 3: Ein Startup zwei deutscher Unternehmer, Mesosphere, hat mit DC/OS das Management von Datacenter von Grund auf neu konzipiert - genau rechtzeitig für die Microservices-Revolution. (Bild: Mesosphere)

Virtualisierung, Container und Microservices

Eine private Cloud für hybride Deployments, wie es etwa Mesosphere mit „DC/OS“ vorgemacht hat (siehe dazu: Konventionelle Server-Betriebssysteme versagen, Zeit wird's: Die neuen Betriebssysteme für Rechenzentren), bietet sich hierbei geradezu an. Es mag zwar möglich sein, containerisierte Microservices nach dem reinen Virtualisierungsparadigma aufzusetzen, doch ist dies nicht unbedingt sinnvoll. Der reine Virtualisierungs-Ansatz wird den aktuellen Anforderungen an die Agilität der Enterprise-IT einfach kaum noch gerecht.

Virtualisierung war gestern. DCOS taugt besser.

Mesosphere hat das Datacenter-Betriebssystem

Virtualisierung war gestern. DCOS taugt besser.

12.01.16 - Betriebssyssteme sollen zukünftig ganze Umgebungen oder Rechenzentren automatisieren. Eines ist „DCOS“ von Mesosphere. Es basiert auf Apache MesOS, ist aber für den Unternehmenseinsatz optimiert. Ariane Rüdiger sprach mit Michael Hausenblas, Developer Evangelist bei Mesosphere, über Vor- und Nachteile, Anwendungsfelder und die Weiterentwicklung von DCOS. lesen

Der Cloud-Ansatz verspricht dagegen nicht nur eine höhere Flexibilität dank der elastischen Skalierbarkeit von Microservices-Architekturen, sondern auch eine bessere Ressourcenauslastung und dadurch wiederum niedrigere Betriebskosten.

Stark vernetzt: Änderungen der Datacenter-Architektur

Die Notwendigkeit, ereignisgetriebene, agile Anwendungen bereitzustellen, erzwingt im Datencenter ein umfassendes Umdenken: weg von dem Virtualisierungs-Paradigma hin zur privaten Cloud. Doch wo es Licht gibt, gibt es auch Schatten: Microservices stellen neue Anforderungen an die Infrastruktur eines Datencenters und möchten bei neuen Investitionen vorausschauend berücksichtigt werden.

Ereignisgetriebene IT stellt hohe Ansprüche an die Netzwerkkapazitäten sowohl innerhalb als auch außerhalb des Datencenters. DCI (Datacenter Interconnect) ist für die standortübergreifende Verzahnung von Microservices-Anwendungen unverzichtbar.

Abbildung 4: 44 Prozent der befragten Unternehmen führen Microservices ein; 78 Prozent dieser Firmen setzen hierbei auf Docker.
Abbildung 4: 44 Prozent der befragten Unternehmen führen Microservices ein; 78 Prozent dieser Firmen setzen hierbei auf Docker. (Bild: Docker Inc.)

In einer repräsentativen Umfrage unter den Praktikern der Datencenter-Branche des vielfach preisgekrönten Cloud- und Virtualisierungsspezialisten Turbonomic von 2015 nannte nahezu jeder zweite Administrator von Microservices-Architekturen (41 Prozent) die Latenz des Speichers als die größte Herausforderung. Weitere 7,69 Prozent beschwerten sich über die Ost-West-Netzwerk-Latenz und 17,95 Prozent beklagten lahmen Anwendungscode. (Die Mehrheit der betreffenden Microservices liefe allerdings noch in VMs.)

Ereignisgetriebene Orchestrierung von Microservices

Mit der Umstellung auf Container und Messaging wird ein System von agilen Microservices geschaffen, welches es auch geschickt zu organisieren gilt. Hier kommen spezialisierte Orchestrierungsanwendungen zum Zuge. Sie entscheiden unter anderem anhand der aktuellen und geplanten Auslastung und des Performance-Profils der Hardware (CPU, Speicher, Datendurchsatz und mehr), auf welchem Server ein Job laufen soll.

Scheduling- und Orchestrierungssoftware fördert eine bessere Hardware-Auslastung und trägt damit zu einem niedrigeren Stromverbrauch bei. Die einzelnen Microservices lassen sich so arrangieren, dass nicht benötigte Ressourcen konsolidiert und frei gewordene Server heruntergefahren werden.

Zu den führenden Frameworks für die Konfigurationsverwaltung und Orchestrierung von Microservices zählen die so genannte Spring Cloud (oft in Kombination mit „Netflix OSS“) und „Google Kubernetes“. Die beiden Lösungen sind sehr unterschiedlich und versuchen zudem, zwei unterschiedliche Probleme zu lösen.

Spring Cloud, Kubernets und Netflix OSS

Eine skalierbare und widerstandsfähige Microservices-Architektur muss sich selbst zentral koordinieren und in der Lage sein, Hunderte oder Tausende von Diensten zu handhaben. Der Aufbau einer solchen MSA bedarf außerdem passender Werkzeuge, welche über umfangreiche Build- und Ablaufumgebungen verfügen müssen.

Mittels der Spring Cloud lassen sich sowohl funktionelle Dienste, wie Web-Statistikdienste, Account- und Benachrichtigungsdienste und zudem auch unterstützende Infrastrukturdienste (etwa: Log-Analyse, Server-Konfiguration, Dienste-Enddeckung und Authentifizierungsdienste) umsetzen.

Die Spring Cloud verfügt über eine umfangreiche Sammlung von integrierten Java-Bibliotheken, um die relevanten Laufzeitaspekte adressieren zu können. Spring-Cloud-basierte Microservices nutzen Java-Bibliotheken und Runtime-Agenten, um Dienste auf der Client-Seite zu entdecken, Load Balancing zu gewährleisten, Konfigurationen zu aktualisieren und Metriken zu erfassen. Auch Muster, zum Beispiel geclusterte Singleton-Dienste und Batch-Jobs ,werden in der JVM (Java Virtual Machine) verwaltet.

Abbildung 5: Docker Inc. singt Lob der eigenen Orchestrierungslösung „Docker Swarm“ . Doch die meisten greifen zu Kubernetes.
Abbildung 5: Docker Inc. singt Lob der eigenen Orchestrierungslösung „Docker Swarm“ . Doch die meisten greifen zu Kubernetes. (Bild: Docker Inc.)

Kubernetes, welches Google einst als einen „Borg“-Nachfolger ins Leben rief, ist hier völlig anders. Die früher bei Google übliche Fokussierung auf Java (und C/C++) gibt es hier nicht mehr. Kubernetes ist als ein mehrsprachiges Mikroservices-Framework ausgelegt, das zwar auch Java unterstützt, aber eben auch viele andere Sprachen, darunter C/C++, Python und vor allem Go/golang.

Harte Schule für Uber

Doch Orchestrierung ist keinesfalls ein Allheilmittel. Diese Lektion musste unter anderem der Fahrdienst und aspirierender Taxi-Ersatz Uber auf die harte Tour lernen. Uber hatte seine Plattform auf der Basis von rund 1.300 Microservices aufgezogen. Bald nach der erstmaligen Bereitstellung war das Chaos nicht mehr in den Griff zu bekommen.

Die Orchestrierungssoftware „Puppet“ propagierte jegliche Konfigurationsfehler und Software-Bugs - auch das Zweit-Rechenzentrum ließ sich nicht in den Griff bekommen. Das Team hatte den Durchblick verloren.

Systemausfälle waren bei Uber an der Tagesordnung. Die Uber-Ingenieure haben erst nach und nach Prozesse entwickelt, um die größten Pannen weitgehend auszuschließen. Um den vielen Problemen ihrer MSA auf die Spur zu kommen, haben sie spezielle Tools entwickelt, unter anderem „Hailstorm“ und „uDestroy“.

Das CI/CD-Paradigma (Continuous Integration und Continuous Delivery) wurde auch noch um eine dritte Komponente ergänzt: kontinuierliches Dazulernen, sowohl durch Menschen wie auch - ereignisgetrieben - durch die Microservices selbst. Den nächsten logischen Schritt stellt die automatische Bereitstellung aufeinander abgestimmter Scheduling- und Orchestrierungsdienste dar.

Viele Unternehmen müssen aber noch ein weiteres Problem meistern, nämlich ihre containerisierten Microservices an zustandsbehaftete, konventionelle Anwendungen, beispielsweise relationale Datenbanken und Big Data-Workloads, mehr oder weniger nahtlos anbinden. Für Datencenter eröffnet sich dabei die Möglichkeit oder gar die Notwendigkeit, die Nutzung ihrer Infrastruktur zu vereinfachen. Server-lose Deployments mit Lambda-Ausdrücken versprechen, die administrative Last für die Benutzer - in diesem Fall Software-Ingenieure - zu senken.

Maschinelles Lernen für ein verstärkt autonomes Rechenzentrum

Die Popularität von Microservices und die Containerisierung des Datencenters sind eine Antwort auf die wachsenden Anforderungen an eine höhere Agilität von Unternehmen und deren IT. Mit dem ereignisgetriebenen Ansatz werden Datencenter nicht nur agiler, sondern auch autonomer und erstmals... lernfähig.

Was vielleicht etwas utopisch klingt, ist eigentlich schon gelebte Realität wie beispielsweise im Falle von „Deep Mind AI“, eines neuronalen Netzwerks zur Stromverbrauchoptimierung von Googles Datencentern (siehe dazu: KI und Big Data modellieren Datacenter für mehr Effizienz). Menschliche Eingriffe bei der Bereitstellung und Skalierung von Microservices-Anwendungen sollen künftig gegen Null gehen.

Fazit: Die breite Einführung von Microservices mit Messaging-Systemen ruft das ereignisgetriebene - also verstärkt autonome - Datacenter auf den Plan.

*Das Autorenduo

Filipe Pereira Martins und Anna Kobylinska arbeiten bei der McKinley Denali Inc. (USA).

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44459519 / Definitionen)