Aus Kubernetes wird Container as a Service
Microservices
von Konstantin Pfliegl - 08.01.2021
Doch wie sehen Anwendungen in Containern eigentlich aus? Im Zusammenhang mit Containern ist häufig von Microservices die Rede. Darunter versteht man Dienste, die jeweils eine kleine Aufgabe erfüllen. Die Microservices lassen sich über Schnittstellen so miteinander verbinden, dass sich daraus eine beliebig komplexe Software ergibt. Darüber hinaus sind die einzelnen Funktionsblöcke je nach Nutzung und Auslastung unabhängig voneinander skalierbar. Die beiden Haupteigenschaften von Microservices sind dabei Spezialisierung und Eigenständigkeit. So beschränkt sich jeder Dienst auf die Lösung eines bestimmten Problems - und arbeitet dabei eigenständig: Jeder dieser kleinen Dienste lässt sich bereitstellen, betreiben und skalieren, ohne die Funktionsfähigkeit anderer Services zu beeinträchtigen.
Aus technischer Sicht besteht jedoch zwischen Microservices und Containern kein direkter Zusammenhang. So lassen sich auch komplette monolithische Applikationen mit Hilfe von Containern betreiben. Doch gerade in Anbetracht einer möglichen Skalierung beziehungsweise einer effizienten Nutzung der IT-Infrastruktur ist das manchmal nicht unbedingt sinnvoll.
Ähnlich sieht es Wolfgang Kurz, CEO beim IT-Dienstleister Indevis: „Natürlich kann man auch größere Blöcke in Container packen. Allerdings verfehlt man dann etwas den ursprünglichen Gedanken, für jeden Task einen Container zu haben, der dann im Idealfall ‚stateless‘ ist und im Bedarfsfall einfach häufiger gestartet wird.“ Wolle man beispielsweise eine große SQL-Datenbank in einem Container betreiben, dann stelle sich die Frage, warum sie in einem Container laufen sollte. „In klassischen Infrastrukturen hat man das Thema des persistenten hochverfügbaren Storage mit hohem I/O, funktionierendem Cluster und Backup-Konzept seit vielen Jahren im Einsatz.“ Wenn man so etwas in einem Container machen wolle, dann sei man schnell im experimentellen Bereich oder müsse sehr viel Know-how selbst aufbauen. Das sei nur für sehr große Firmen oder Cloud-Anbieter sinnvoll.
In einigen Fällen kann es dennoch ratsam sein, auch ganze Applikationen in Container zu packen. Laut Simon Fleischer von Consol hat es sich insbesondere während der Entwicklungsphase bewährt, lokale Dienste wie etwa Datenbanken oder Queue-Server in Containern zu starten, „da auf diese Weise sehr einfach identische Umgebungen für alle Kollegen im Entwicklungsteam erstellt werden können“.