Software-Container und Microservices – Teil 5 / 5

Software-Container sind ein mächtiges Werkzeug. Sie entfalten ihr Potenzial in der richtigen Umgebung. Wie steht es um die Kombination von Microservices und Software-Containern? Stellen Software-Container eine geeignete Verpackung für Microservices dar? Diesen Fragestellungen soll im vorerst letzten Teil unserer Blogbeitrag-Serie über Microservices und Software-Container nachgegangen werden. Durch die Zusammenführung beider Technologien lassen sich folgende Beobachtungen machen.

Beschleunigung
Microservices können bestehende Workflows, etablierte Strukturen und Abläufe der Software-Entwicklung umkrempeln. Microservices sind kompakte und fachspezifische Anwendungen. Zusammen mit Software-Containern haben sie das Potenzial die Entwicklung von Software maßgeblich weiter zu beschleunigen. Sie verkürzen durch ihre geringe Komplexität Release-Zyklen und fördern die Entstehung von neuen Funktionen. Dies ist oft auf die Verwendung von agilen Entwicklungsmethoden in Verbindung mit Microservices und Software-Containern zurückzuführen. Microservices können, aufgrund der geforderten geringen Komplexität und ihrer Eigenständigkeit gegenüber anderen Diensten, in kleinen Entwicklungsteams entstehen. Dies fördert kürzere Entwicklungsphasen als bei herkömmlichen Software-Monolithen und ermöglicht des Weiteren von der Eigenständigkeit der Microservices zu profitieren. Besonders die Verwendung von Continuous-Delivery-Techniken, kurz CD, lassen sich auf Microservices in Software-Containern übertragen.

Continuous-Delivery
Bei Continuous-Delivery geht es darum, den Gesamtprozess, von der Entwicklung der Software bis hin zur Veröffentlichung und der Installation, zu betrachten und zu optimieren. Die Entwicklung, die Kompilierung der Anwendung, die automatisierte Durchführung von Tests sowie die darauf folgende Installation des Microservices in die Zielumgebung lassen sich allesamt in gleichförmigen Software-Containern abbilden. Sie erleichtern den Transfer der entwickelnden Anwendung – von dem Computer des Entwicklers, in die Testumgebung und zum Applikationsserver. Dieser Ablauf und die dafür benötigte Infrastruktur wird auch als Continuous-Delivery-Pipeline bezeichnet. Insbesondere bei Continuous-Delivery-Verfahren ermöglichen Software-Container, durch die Förderung der Anwendungsportabilität, ein hohes Maß an Flexibilität und Beschleunigung. Das Ziel eines Software-Containers innerhalb dieses Umfeldes ist es somit, einen deterministischen Zustand für die Ausführung der Anwendung auf allen Plattformen zu schaffen. Durch die Verwendung von Software-Containern kann bei allen beteiligten Computersystemen auf eine native Installation der Abhängigkeiten zur Ausführung der Anwendung verzichtet werden.
Diese Operationen sind, abseits der Entwicklungsphase, Prozesse, welche durch entsprechende Werkzeuge, wie die Verwendung von Build-Job-Servern, einer erhöhten Automatisierung unterliegen und somit die Software-Entwicklung weiter beschleunigen. Gerade die Kombination von Software-Containern und Microservices können hierzu beitragen. Folgende Abbildung verdeutlicht den Ablauf von Software, welche dem Continuous-Delivery-Verfahren unterliegt.

 

Continuous-Delivery
Quelle: medium.com

Ressourcennutzung
Neben der Beschleunigung bei der Entwicklung spielt die optimierte Nutzung von verfügbaren Systemressourcen eine entscheidende Rolle für die Bindung von Microservices an Software-Containern. Besonders in Rechenzentren lassen sich unter der Verwendung von Software-Containern, anstatt virtueller Maschinen, Systemressourcen einsparen. Unter identischen Systemvoraussetzungen lässt sich eine höhere horizontale Skalierung mit Software-Containern erreichen, als durch den Einsatz von virtueller Maschinen. Durch den Wegfall der vollständigen Virtualisierung weiterer Host-Systeme, können die frei gewordenen Systemressourcen für zusätzliche Instanzen von Software-Containern verwendet werden. Zusätzlich lassen sich Software-Container schneller initialisieren als virtuelle Maschinen. Da Microservices i. d. R. über einen kompakten Umfang verfügen, wird die Startzeit des Dienstes innerhalb eines Software-Containers nicht maßgeblich beeinflusst. Wird ein erhöhter Bedarf für einen Dienst festgestellt, so lassen sich schnell weitere Instanzen dieses Dienstes starten. Microservices in Verbindung mit Software-Containern eignen sich, um Infrastrukturen in die Breite zu skalieren.

Es wird klar, dass Software-Container und Microservices über Eigenschaften verfügen, welche sich unter bestimmten Voraussetzungen ideal ergänzen. Um das Potenzial beider Technologien miteinander zu kombinieren und auszuschöpfen, sind agile Strukturen in der Software-Entwicklung von Vorteil. Die Verwendung von Microservices und Software-Containern sind in der Software-Entwicklung nicht zwingend auf alle Anwendungsfälle abbildbar. Dort, wo sie eingesetzt werden, beeinflusst die Kombination beider Technologien den Ablauf der Software-Entwicklung. Bei Vertretern der DevOps-Bewegung werden in der Software-Entwicklung häufig Werkzeuge wie Software-Container, die Microservice-Software-Architektur und Continuous-Delivery-Techniken zur Prozessverbesserung verwendet. DevOps ist ein Kunstwort aus den Begriffen Development und Operations. Das Ziel von DevOps ist die Steigerung von Qualität und Entwicklungszeit in der Software-Entwicklung durch die Anwendung von agilen Entwicklungsmethoden. Es lässt sich festhalten, dass eine gelungene Verknüpfung von Microservices und Software-Containern zu einer modularen und rapiden Beschleunigung bei der Entwicklung von Anwendungen und Produkten führen kann.

 

TR