CaaS Ressourcen

Vom Container zu Container as a Service: der beste Weg

Mit Containern und CaaS in die Cloud 2.0

Die Cloud und ihre Services IaaS und PaaS existieren in ihrer heutigen Ausprägung seit über zehn Jahren und sind in immer mehr Unternehmen etabliert. Sie bieten umfangreiche und innovative Features, die den Betrieb von IT-Infrastrukturen in vielen Bereichen verbessert haben.

Neben passgenauen und nach Bedarf flexibel skalierbaren Servern (Stichwort: Autoscaling) lassen sich Cloud-Infrastrukturen leicht mit weiteren nützlichen Services kombinieren. So bauen beispielsweise Data-Warehouses oder Machine-Learning-Dienste meist auf der Flexibilität von Cloud-Infrastrukturen auf. Dienste, die immer mehr Unternehmen gewinnbringend nutzen. Hier stellt eine moderne Cloud IT-Infrastruktur API-Schnittstellen bereit, mit denen die verschiedenen Services dynamischer als in alten On-Premises-Architekturen interagieren können.

Container optimieren Prozesse in der Cloud

Doch die Entwicklung von IT-Infrastruktur geht weiter. Ein entscheidender Nachteil bisheriger IT-Infrastrukturen ist, dass in der Regel jeder Service auf einem eigenen Server bereitgestellt wird. Dieser kommt mit all seinen Programmbibliotheken daher. Und diese enthalten zahlreiche Programme, die entweder gar nicht benötigt werden oder die von mehreren Services gleichzeitig genutzt werden könnten, aber trotzdem mehrfach vorliegen. Um diese Verschwendung von Ressourcen zu vermeiden, lassen sich mittlerweile Container nutzen.

Container sind gekapselte Anwendungen auf einem Betriebssystem. Diese Anwendungen können auf Betriebssystemebene voneinander getrennt werden, statt sie auf unabhängigen Servern laufen zu lassen. So lassen sich mehrere Services auf einem Server bereitstellen und unnötige Ressourcen werden reduziert. Notwendige Funktionen, die das Betriebssystem zur Verfügung stellt, müssen nicht länger mehrfach vorgehalten werden

Container sind kleiner als VM und haben dadurch Vorteile

Dadurch verbraucht eine Container-Applikation viel weniger Speicherplatz. Das bedeutet nicht nur Kosteneinsparungen, sondern führt auch zu höheren Ausführungsgeschwindigkeiten der einzelnen Anwendungen. Start- und Stoppzeiten verringern sich und ermöglichen flexiblere Anpassungen. Das ist beispielsweise bei Belastungsspitzen von Webanwendungen sinnvoll. Innerhalb weniger Sekunden kann eine Containerplattform weitere Anwendungen bereitstellen und damit auch den einen Ausfall einer Applikation effektiv verhindern.

Ein weiteres Plus: Container folgen gewissen Standards, wodurch sich in Containern gestartete Anwendungen sehr viel einfacher portieren lasssen als bisher. Das eröffnet eine Reihe weiterer Vorteile, wie leichtere Deployments über verschiedene Plattformen hinweg oder die Vermeidung von Vendor Lock-Ins.

Container sind eine hervorragende Sache gerade für schnelle und agile Entwickler-Teams. So checkst du einfach aus deinem Source-Code Repository deinen fertigen Container aus, schickst ihn durch deine automatisierte Test-Pipeline und Minuten später ist dein Code bereits in Produktion. Diese Geschwindigkeit durch modernes Deployment erlaubt uns näher am Kunden zu sein und sehr genau für unsere Kunden zu entwickeln.

Anton C., CTO & gridscale Kunde der ersten Stunde

Zusammenfassung

Geschwindigkeit: Da Container ohne eigenes Betriebssystem auskommen, lassen sie sich schneller starten und stoppen als virtuelle Maschinen. Damit beschleunigen sich beispielsweise Rollouts von Updates. 

Hohe Skalierbarkeit: Aufgrund ihrer geringen Größe sind Container schneller und leichter skalierbar als virtuelle Maschinen. Wie bei IaaS ermöglicht die Skalierbarkeit die flexible Anpassung an Leistungsspitzen, sodass keine unnötigen Ressourcen vorgehalten und bezahlt werden müssen.

Einfache Portierung ohne Vendor Lock-In: Die Anwendungen beinhalten alle erforderlichen Bibliotheken und andere Abhängigkeiten. Unter Entwicklern erfreuen sie sich großer Beliebtheit, da sich solche Pakete leicht teilen und auf andere Container-Plattformen portieren lassen. Die Zusammenarbeit unter Entwicklern wird verbessert und Workloads können problemlos zu einem anderen Anbieter verschoben werden, wodurch ein Vendor Lock-In vermieden wird. 

Kostenreduzierung durch Effizienz: Die geringere Größe von Containern reduziert die benötigten Speicherressourcen bei gleichem Funktionsumfang. Weniger benötigter Speicherplatz bedeutet gleichzeitig eine Reduzierung der Kosten, da nur genutzte Infrastruktur in Rechnung gestellt wird.

Welche Sicherheitsbedenken gibt es?

Vor allem ein Aspekt wird bei Containern stets kritisch hinterfragt und lässt Unternehmen zögern, voll auf Container zu setzen: Da Container für bestimmte Funktionen gemeinsam auf das Betriebssystem zugreifen, stellt sich die Frage, ob die Anwendungen ausreichend voneinander isoliert sind, um Zugriffe nicht autorisierter Nutzer auszuschließen? Denn während es bei virtuellen Maschinen so gut wie unmöglich ist, Zugriff auf andere Maschinen auf demselben Host zu erhalten, fehlt bei Containern diese zusätzlich schützende Schicht.

Aus diesem Grund wird bei der Weiterentwicklung von Containern verstärkt auf den Sicherheitsaspekt geachtet. Mit SELinux und Seccomp oder AppArmor stehen mehrere Frameworks bereit, um Container zusätzlich abzusichern. Achtet man außerdem darauf, Container nur mit den notwendigen Rechten auszuführen und in einer virtuellen Maschine laufen zu lassen, wird es ebenso schwierig, in einen Container einzubrechen, wie das bei virtuellen Maschinen der Fall ist.

Was gilt es noch bei Containern zu beachten?

Damit man Container in der Praxis nutzen kann, ist es sinnvoll, sie mit verschiedenen Features zu ergänzen. So ist es z.B. zweckmäßig, Container mit Load Balancing zu erweitern. Damit werden Container automatisch auf verschiedene Knoten (Server) verteilt. Aber auch bei den Verwaltungsaufgaben, die um Container herum entstehen, kann eine Containerplattform eine erhebliche Hilfe sein.

Container-as-a-Service – die Containerplattform für Unternehmen

Das Aufsetzen einer Plattform für Container mit entsprechenden Features ist in Eigenregie nicht ganz so einfach. Hier helfen Container-as-Service-Lösungen: Plattformen, die eine schlüsselfertige Containerlösung anbieten, mit der direkt gearbeitet werden kann.

Mit schlüsselfertiger Containerlösung hohe Einrichtungskosten vermeiden

Container-as-a-Service-Modelle stellen als Komplettlösung eine Software zur Containerverwaltung zur Verfügung. Sie bieten den Einstieg in moderne Containerinfrastrukturen ohne die Kosten und den Aufwand, die eine eigene Bereitstellung und Konfiguration der benötigten Ressourcen mit sich bringen würden.

Zwar ließen sich Containerlösungen auch in Eigenregie auf einer eigenen Plattform einrichten. Vor allem in der Anfangsphase wäre das aber mit hohen Kosten verbunden. Es handelt sich um eine junge Technologie und Experten auf diesem Gebiet sind noch nicht sehr zahlreich. Will man nicht diese Expertise zusätzlich zur Hardware (Kosten für virtuelle Maschinen etc.) teuer einkaufen und Probleme mit der Einrichtung und Konfiguration von Anfang an vermeiden, ist ein Serviceanbieter die bessere Wahl. Bei einem solchen Anbieter kann eine schlüsselfertige und reibungslos laufende Lösung angemietet werden. 

Neben der grundlegenden containerbasierten Virtualisierung stellen Anbieter dem Kunden oft noch weitergehende Funktionen zur Verfügung, welche die Nutzung zusätzlich erleichtern oder verbessern.

CaaS – worauf sollte ich bei der Anbieterwahl achten?

FEATURES

Neben der vorinstallierten Container-Engine und der Infrastruktur – Rechenleistung, Speicherplatz und ein performantes Netzwerk – beinhalten CaaS-Angebote in der Regel ein Tool zur Orchestrierung der Container. Ebenso wie Image Kataloge (Registry), Cluster Management Software, Entwickler-Tools, APIs und eine benutzerfreundliche Weboberfläche.

LOKALE ODER PUBLIC CLOUD

Eine weitere Frage, die sich bei der Auswahl eines CaaS-Anbieters sollte, ist, ob der Betrieb in der Public Cloud oder On Premise stattfinden soll. Hat man veraltete, zu wenig oder sogar gar keine Hardware zur Verfügung, ist die Public Cloud in der Regel die bessere Option. Hier erhält man performante Infrastruktur, die den eigenen Anforderungen entsprechend konfiguriert werden kann. Der Anbieter übernimmt darüber hinaus die Wartung und Updates der Infrastruktur und garantiert über ein Service-Level-Agreement (kurz: SLA) eine hohe Verfügbarkeit.

SICHERHEIT

Oft werden in Anwendungen sensible Daten verarbeitet, weswegen die Sicherheit und der Datenschutz in keinem Fall vernachlässigt werden dürfen. Anbieter sollten hier die gängigen Zertifizierungen ISO 27001 und ISO 27018 vorweisen können. Um Kunden eine hohe Sicherheit zu gewährleisten, sollte man im Zuge der DSGVO zudem auf Anbieter setzen, die die strengen Anforderungen dieser Leitlinie erfüllen. Zwar lassen sich auch internationale CaaS-Anbieter nutzen, doch mit einem Anbieter aus Deutschland ist man auch zukünftig bestmöglich aufgestellt, wenn es darum geht, einen hohen Datenschutz zu garantieren.

Neben Betriebs- und Sicherheitskriterien gibt es weitere Fragestellungen, die bei der Auswahl eines Anbieters wichtig sind:

  • Wird eine Unterstützung von Multi-Container-Applikationen geboten?
  • Wie gut ist die Integration in andere Clouddienste?
  • Bietet das Unternehmen schnellen Support und eine umfassende Dokumentation?
  • Wie hoch ist die Benutzerfreundlichkeit der Anwendung?
  • Welche Abrechnungsmodelle werden geboten?
Die Vorteile von CaaS aus der Public Cloud
  • keine eigene IT-Infrastruktur notwendig
  • keine Wartungsarbeiten: Updates und Upgrades liegen in der Verantwortung des Anbieters
  • Pay as you Go: nur tatsächlich genutzte Ressourcen werden abgerechnet
  • zukunftssicher durch passgenaue und skalierende Infrastruktur
  • bei Problemen umfassender und kompetenter Support

Wie funktioniert CaaS unter der Haube?

Wie bei den Features genannt, bieten Container-as-a-Service-Angebote nicht nur die reine Container-Engine an. Damit Applikation verteilt und im laufenden Betrieb skaliert werden, integrieren Caas-Lösungen einen Container-Orchestrator.

Herzstück der meisten CaaS-Lösungen ist Kubernetes – eine ursprünglich von Google entwickelte Open-Source-Software, die mittlerweile Marktführer unter den Orchestrierern ist. CaaS-Anbieter erleichtern den Umgang mit diesen komplexen Orchestrierern, indem sie dem Nutzer oft eine einfach zu bedienende Benutzeroberfläche zur Verfügung stellen, mit der sich die Dienste leichter konfigurieren und verwalten lassen. Hier kann der Nutzer außerdem auf Voreinstellungen zurückgreifen, die ihm beim Umgang mit der neuen Technologie helfen. Module wie Load Balancer, persistenter Storage oder Scheduler sind häufig mit wenigen Klicks zuschaltbar und lassen sich in der Regel ohne große Anpassungen nutzen.

Anwendungsbereiche: CaaS in der Praxis

Microservices und CaaS – ein Dreamteam!

Container sind für viele Szenarien eine gute Lösung, in denen ein Unternehmen bisher eigene Server oder virtuelle Maschinen eingesetzt hat, sei es lokal oder aus der Public Cloud. Doch vor allem für den Betrieb von Microservices stellen CaaS-Lösungen eine passende Wahl dar. Microservices sind ein Programmierparadigma, bei dem große und schwer skalierbare Anwendungen in kleine, miteinander kommunizierende Services umgebaut werden. Kleinere Services können weitgehend unabhängig voneinander weiterentwickelt und bereitgestellt werden, was die Entwicklung von Anwendungen beschleunigt und vereinfacht. Doch die Nutzung einer hohen Zahl von Services führt zu komplexen Szenarien in der Orchestrierung.

Die vielen voneinander getrennt laufenden Anwendungen lassen sich performant und ausfallsicher nur schwer selbst verwalten. Die Orchestrierungssoftware greift hier helfend unter die Arme, indem sie Deployments autonom verwaltet. Kubernetes erkennt selbstständig, welche Knoten Ressourcen zur Verfügung haben und verteilt die Applikationen so, dass sie die bestmögliche Umgebung zugewiesen bekommen.

Updates lassen sich mit Kubernetes auf verschiedenen Wegen automatisiert ausrollen und durch die redundante Vorhaltung der Services auf verschiedenen Knoten erreicht man eine extrem hohe Ausfallsicherheit seiner Anwendungen.

Mit CaaS und Containern Legacy-Anwendungen in die Cloud bringen

Außerdem eignen sich Container gut als Einstieg in die Cloud.
Wenn Anwendungen in die Cloud portiert werden sollen, können Container die Lösung sein. Workloads, die bisher On-Premises liefen, lassen sich oft nicht einfach an bestimmte Anforderungen der Cloud-Anbieter anpassen. Mitunter müssen Teile der Anwendung neu geschrieben werden und auch die Konfiguration der virtuellen Server kann sich komplex gestalten.

Setzt man bei der Transformation aber auf Container statt auf virtuelle Maschinen, ist die Migration leichter zu bewerkstelligen: Anwendungen lassen sich mitsamt ihren Abhängigkeiten in ein Image bündeln und sind damit auf jeder Container-Plattform lauffähig. Zudem verhindern die Standards der Services den gefürchteten Vendor Lock-In.

Weitere Einsatzszenarien, in denen Container-as-a-Service sinnvoll sind:

  • Aufsetzen von Clustern für Machine Learning
  • Entwicklung und Betrieb von Cloud Native-Applikationen

Allumfassend: CaaS im Zusammenspiel mit anderen Konzepten

Container und CaaS eignen sich nicht nur zur Transformation einzelner Geschäftsprozesse. Ihre Modularität ermöglicht es, sie mit neuen, ganzheitlichen Geschäftskonzepten zu nutzen, die den gesamten Entwicklungs- und Arbeitsprozess umfassen.

Zum einen greifen Container mit den sogenannten Dockerfiles das Konzept von Infrastructure as Code auf: die Definition von Infrastruktur mithilfe idempotenter Beschreibungen. Diese ermöglichen die schnelle Replikation eines Sets von Containern, die miteinander in Verbindung stehen. Aufgrund ihres Formats verbessern sie die Zusammenarbeit zwischen Teams. Änderungen werden mit einem Versionskontrollsystem sichtbar gemacht und erhöhen die Ausfallsicherheit von Systemen, da bei Fehlern auf die vorherige Version zurückgegriffen werden kann.

Zum anderen eignen sich Container hervorragend für die Etablierung von Cloud Native. Dieses neue Programmierparadigma ist ein ganzheitliches Konzept, mit dem man von den Synergien profitiert, die vernetzte Webservices bieten. Mit Containern lässt sich Cloud Native sehr leicht umsetzen. Mehr dazu erfährst du in unserem Glossar-Beitrag.

Container und CaaS heben die Cloud auf ein neues Level

Container überzeugen vor allem durch ihre geringe Größe, das standardisierte Format, ihre einfache Handhabung und die Vorteile in der Entwicklung. Mit Containern lassen sich Microservice-Architekturen leichter umsetzen als mit virtuellen Maschinen. Die damit einhergehenden Nachteile, wie komplexe Deployments aufgrund einer Vielzahl einzelner Services, lassen sich mit Container-as-a-Service umgehen. Diese Services bieten neben einem schlüsselfertig eingerichteten Setup weitere Features, wie eine benutzerfreundliche Verwaltung und einen umfassenden Support. So kann man ohne langwierige Setups direkt in die Containerwelt einsteigen und sowohl kleine als auch komplexe Workloads schnell in die Cloud bringen.