Business-IT
21.07.2020
Entwicklungs- und Geschäftsprozesse
1. Teil: „Container machen agiler“

Container machen agiler

Container-SchiffContainer-SchiffContainer-Schiff
Avigator Fortuner / shutterstock.com
Mit Containern und Kubernetes Anwendungen und IT-Umgebungen modernisieren.
Zugegeben, brandneu sind Container nicht. Auf die Idee, mehrere Ausgaben eines Betriebssystems auf demselben Host laufen zu lassen, kamen bereits die Entwickler von Unix V7 Ende der 1970er-Jahre. Und Linux-Container (LXC) erschienen 2008 auf der Bildfläche. Zu einem Hype mutierte die Technologie fünf Jahre später mit der Container-Plattform Docker. Mittlerweile zeigt der Markt für Container-Plattformen allerdings deutliche Anzeichen der Kon­solidierung. So verkaufte Docker Anfang 2020 seine Geschäftskundensparte an den Cloud-Dienstleister Mirantis. Doch die Implosion von Docker hat unterm Strich auch gute Seiten, findet Frank Haumann, Partner beim Cloud-Spezialisten Red Reply: „Docker wurde dadurch zu einem echten Open-Source-Produkt. Der Vorteil für die Nutzer ist, dass nun kein Vendor-Lock-in droht. Daher setzen jetzt auch viele Unternehmen in Deutschland auf Container, die bislang in diesem Punkt zögerlich waren.“
Das sehen auch andere Anbieter von Plattformen und Tools für containerisierte Anwendungen so: „Container sind akzeptiert und stellen die Technologie für die nächste Dekade dar, vor allem wegen der steigenden Zahl an containerbasierten Microservices“, sagt etwa Thomas Meier, Chief Technologist Intelligent Data Platform & Hybrid IT bei HPE. Für Container sprechen aus seiner Sicht zudem die vielfältigen Einsatzfelder: „Sie sind überall dort zu finden, wo die Vorteile der Technologie Entwicklungs- und Geschäftsprozesse beschleunigen.“
Frank Haumann vom Software-Haus Red Reply sieht derzeit drei Haupteinsatzfelder von Containern:
  • Große, skalierbare B2C-Anwendungen wie mobile App-Backends, Content-Management-Systeme und Webshops
  • Kleine Anwendungen mit komplexen Implementierungsansätzen, meist aus dem Java-Umfeld. Container ermöglichen etwa eine schnelle Evaluierung der Software
  • Die Modernisierung von Legacy-Anwendungen.
Ein Vorteil von Containern ist auch die Automatisierung manueller Prozesse, hebt Oliver Weiß hervor, Managing Delivery Architect beim Beratungshaus und IT-Dienstleister Capgemini: „Container sind eine gute ‚Verpackung‘ für Software und ihre Konfigurationen, weil typische manuelle Konfigurationsschritte beim Anlegen einer Betriebsumgebung durch revisionssichere Automatisierungsprozesse erleichtert werden.“ Das vermeidet Fehler und Verstöße gegen Compliance- und Datenschutzregeln. Außerdem können Weiß zufolge Container nach dem Schichtensystem aufgebaut werden. „Dadurch lässt sich das Prinzip Separation of Concerns in einer Organisation umsetzen, also die Trennung von Zuständigkeiten.“ Dann ist nicht nur eine Abteilung dafür zuständig, einen Container zu liefern. Vielmehr setzt sich dieser aus mehreren Teilen zusammen – „etwa aus dem Ergebnis eines Sprints des Entwicklerteams und den Basis-Images der Betriebs-Software, die wiederum das Cyber-Security-Team auf Resilienz überprüft hat“, so Weiß.
Keine Überraschung ist, dass AWS, Microsoft und Google den Einsatz von Containern vor allem in Verbindung mit Public-Cloud-Services sehen. „Bei allen Container-Diensten konstatieren wir hohe Wachstumsraten“, berichtet Sascha Möllering, Solutions Architect Manager bei Amazon Web Services. „Die hohe Akzeptanz lässt sich alleine daran ablesen, dass AWS gleich vier Container-Services bereitstellt.“ Mit AWS Fargate für Amazon EKS etwa können Anwender „serverless“ Applikationen, die auf die Container-Management-Lösung zurückgreifen, einrichten und verwalten. 
Doch Unternehmen, die gemanagte Container-Umgebungen oder Kubernetes-Cluster einrichten wollen, werden nicht nur bei Cloud-Hyperscalern fündig. Auf den Markt drängen auch heimische Anbieter wie Ionos (ehemals 1&1), SAP und Telekom. Hinzu kommen Firmen aus Fernost wie Alibaba, Huawei und Tencent.
Der nächste Schritt: Serverless Computing
Die Marktforscher von Gartner prognostizieren, dass Serverless Computing mittelfristig an die Stelle von Container-Technologien treten wird. Karsten Stöhr, Data Architect bei DataStax erläutert, was sich hinter der Technologie verbirgt.
Mit Serverless Computing oder Function-as-a-Service (FaaS) wollen Cloud-Provider den nächsten Schritt auf dem Weg zur idealen Applikationsentwicklung gehen. Er sieht vor, dass sich die Projektverantwortlichen bei der Entwicklung einer Anwendung nur um die Umsetzung der Geschäftslogik kümmern müssen und kaum noch Zeit für das Aufsetzen und Betreiben der benötigten Infrastruktur aufwenden. Entwickler sollen ihren Code in unterschiedlichen Programmiersprachen als Funktionen direkt in einer Cloud ausführen können. Das erfolgt mithilfe von Application Programming Interface (APIs).
Allerdings sind diese Funktionen zustandslos (Stateless), und dies beeinflusst die Entwicklung. Mehrere Aufrufe derselben Serverless Function laufen unabhängig voneinander, sie teilen nichts miteinander. Zustände oder Daten müssen also in einer Datenbank oder einem Speichersystem abgelegt werden, welches einen Aufruf eines Web- oder Cloud-Services hinzufügt. Diese Datenspeicherung muss daher sehr schnell arbeiten, um die Antwortzeit der Funktionen durch den zusätzlichen Speicheraufruf möglichst wenig zu verlängern. Außerdem muss eine solches Datenbank mit den Funktionen skalieren können. Nur dann ist auch bei hoher Nutzung und vielen gleichzeitigen Aufrufen eine gleichbleibende Servicequalität und flüssige Bedienung gewährleistet.
Einschränkung: Die Serverless Functions der einzelnen Cloud-Anbieter unterscheiden sich in verschiedenen Punkten. Dies beeinflusst die Entwicklung von Applikationen und schränkt die freizügige Verwendung auf unterschiedlichen Plattformen gegenüber Containern ein. So unterscheiden sich zum Beispiel die Funktionskonfigurationen, die Einsprungpunkte (Entry Points) und Antwortstrukturen. Gleiches gilt für die Konfiguration der Zugangsdaten.
Außerdem sollte eine Datenbank verwendet werden, die nativ Multi-Cloud- und Hybrid-Cloud-Infrastrukturen unterstützt, um eine freizügige Verwendbarkeit der entwickelten Serverless Functions auf unterschiedlichen Plattformen zu gewährleisten. Für eine hochskalierbare, Cloud-native Infrastruktur sind traditionelle Datenbanken ungeeignet. Stattdessen benötigt man eine Datenbank mit Masterless-Architektur ohne Single Point of Failure. Nur dann haben alle Applikationen in jeder Umgebung, in der sie gerade laufen, überall Zugriff auf die Daten, und das bei kurzen Latenzzeiten.
2. Teil: „Plattform als Basis“

Plattform als Basis

  • "Bis wann wollen Sie Kubernetes beziehungsweise ein Container-Management-Tool im Unternehmen einsetzen?"
    Die Mehrheit lässt sich Zeit: Container sollen in vielen deutschen Firmen erst in einiger Zeit zum Einsatz kommen.
    Quelle:
    Cloudflight / Crisp Research
Auf eine solche Plattform zu setzen, ist aus Sicht von Capgemini zwar verlockend, erfordert jedoch ein hohes Maß an Disziplin: „Der Einsatz von Plattformen verleitet schnell dazu, die Anzahl an Containern und zu verwaltenden Artefakten schier explodieren zu lassen. Dann besteht die Gefahr, dass der Überblick verloren geht, was auf der Plattform eingesetzt wird und welchen Bezug die Teile zueinander haben“, mahnt Oliver Weiß. Verteilte Systeme mit vielen Containern stellen nach seiner Einschätzung zudem höhere Anforderungen an das Monitoring, Logging und Tracing. Für Entwickler heißt das: „Sie müssen nicht nur Software entwickeln können, sondern benötigen zusätzliche Kenntnisse. Dazu zählt der Umgang mit Transaktionen, außerdem das Wissen, wie sich das Debugging auf einer Container-Plattform zur Fehlersuche einsetzen lässt.“

Container orchestrieren

Neben Plattformen spielen Management-Werkzeuge eine zentrale Rolle beim Einsatz von Containern. Wichtig aus Sicht der Nutzer ist, zwischen Containern und deren Orchestrierung zu unterscheiden, betont Markus Eisele, Developer Adoption Program Lead bei Red Hat: „Container sind quasi die Verpackungseinheit für die Anwendungen und können beliebig auf einer Hardware verschoben werden.“ Allerdings ist das manuelle Starten und Stoppen sowie das Verteilen dieser Container auf unterschiedliche Hardware-Komponenten mühsam und fehleranfällig. „An dieser Stelle kommt die Orchestrierung ins Spiel“, so der Experte von Red Hat. 
Kubernetes ist derzeit das wichtigste Tool für das Orches­trieren von Containern, erklärt Chip Childers, Executive Director der Cloud Foundry Foundation (CFF): „Kubernetes entwickelt sich zur bevorzugten Infrastrukturplattform für Unternehmen.“ Die Lösung stammt ursprünglich von Goo­gle, steht als Open Source aber jedem Unternehmen frei zu Verfügung. Anbieter wie Red Hat, Red Reply und Suse haben rund um Kubernetes Komplettpakete geschnürt.
Ein Beispiel ist OpenShift von Red Hat: „Dies ist nicht einfach nur eine Technologie, die als Baustein implementiert werden muss. Es handelt sich vielmehr um eine unternehmensweite Lösung, die einen zuverlässigen Betrieb von Containern in kritischen Produktivumgebungen ermöglicht“, erläutert Markus Eisele.

Komplettpakete

Auch HPE setzt bei seiner Container-Lösung auf ein Komplettpaket inklusive Storage-Interface, mandantenfähigem Datenzugriff und Portierbarkeit von Daten. Die Grundlage bildet die Datenmanagement-Lösung von MapR, einem Anbieter, den HPE 2019 übernommen hat. Pluspunkt einer solchen Plattform ist, dass sie für den Einsatz auf allen Ebenen einer IT-Infrastruktur ausgelegt ist – von der Cloud über Unternehmensrechenzen­tren bis zum Edge. Hinzu kommen Sicherheitsfunktionen wie eine durchgängige Verschlüsselung von Informationen und eine Authentifizierung von Usern. Vergleichbare Funktionen erhalten Anwender auch mit OpenShift und Plattformen, die andere IT-Dienstleister bereitstellen.
Capgemini etwa bietet mit Devonfw eine Referenzarchitektur für Container sowie eine Software-Entwicklungsplattform an. „Sie besteht aus Bausteinen für DevOps, Cloud und Microservices“, so Oliver Weiß. „Mit dem Referenzmodell können Unternehmen trotz der wachsenden Zahl an Frameworks und Plattformen Ordnung schaffen und deren Beziehungen untereinander im Blick behalten.“
Solche Container- und Management-Pakete sind, ebenso wie Cloud-Services, insbesondere für KMUs von Vorteil. Sie erhalten Zugang zu Ressourcen, mit denen sie schneller und mit überschaubarem Aufwand Anwendungen entwickeln, anpassen und betreiben können. Allerdings muss immer geprüft werden, inwieweit man sich in die Abhängigkeit eines Anbieters begibt, wenn man eine Referenz-Plattform einsetzt, die von einem Unternehmen bereitgestellt und unterstützt wird. Gleiches gilt für Frameworks.

Überzogene Erwartungen

Zudem gibt es Stimmen, die vor überzogenen Erwartungen in Bezug auf Kubernetes und Co. warnen: „Die Orchestrierung von Produktionsumgebungen hat einen massiven Hype ausgelöst und wird heute hauptsächlich mit Kubernetes umgesetzt. Das setzt jedoch eine Dimension voraus, die viele Unternehmen schlichtweg nicht haben“, betont Colin Rand, Vice President Cloud Product Engineering bei Delphix, Anbieter einer Datenplattform für Unternehmen.
„Unter diesen Umständen ist es sehr komplex, die Anforderungen hinsichtlich Arbeitslast, Management oder Ressourcensicherung zu erfüllen. Ein Return on Investment im Bereich Infrastrukturkosten-Einsparungen wird so quasi unmöglich, egal ob Sie Ihre Produk­tionsumgebung On-Premise oder in der Public Cloud betreiben. Der Aufwand für die IT-Abteilung ist dafür zu groß.“ Laut Delphix machen Container aber lokale Entwicklungsumgebungen und den Bau von Software-Pipelines viel produktiver. „Selbst kleine IT-Abteilungen arbeiten hierbei profitabel, wenn sie eine öffentlich zugängliche, vollständig gemanagte und in der Cloud bereitgestellte Container-Plattform verwenden“, so Rand.
3. Teil: „Runtime-Umgebungen und Autos“

Runtime-Umgebungen und Autos

Zu den wichtigsten Entwicklungen bei Containern zählt das Verpacken von Anwendungs-Runtime-Umgebungen wie Cloud Foundry. Mit CF können Unternehmen Anwendungen unabhängig von der Infrastruktur ausführen, etwa im eigenen Rechenzentrum oder einer Public oder Hybrid Cloud. Der Programmcode bleibt dabei unverändert. Mit Quarks hat die Cloud Foundry Foundation ein Projekt gestartet, das eine CF-Laufzeitumgebung (CF Application Runtime, CFAR) in Docker-Container statt in Virtual Machines verpackt. Verwaltet wird das Ganze mit Kubernetes. „Eine solche ‚containerisierte‘ CFAR bietet Entwicklern dieselbe Nutzererfahrung wie Standard-Implementierungen von Cloud Foundry“, sagt der Executive Director der Stiftung Chip Childers. Die CF griff bei Quarks auf Vorarbeiten von Suse zurück. Zu den Vorteilen zählt laut Childers, dass Unternehmen, die CFAR und Kubernetes einsetzen, damit eine Plattform für das Life­cycle-Management von Anwendungen zur Verfügung steht. Zielgruppe sind Anwender, die Erfahrung mit Kubernetes haben. „Die Management-Software übernimmt Aufgaben wie die automatische Skalierung von CFAR-Instanzen und das Wiederherstellen von ausgefallenen Nodes“, so Childers. Implementieren lässt sich Quarks sowohl in Private als auch in Public Clouds.
Selbst in Fahrzeugen werden Container in Kürze eine wichtige Rolle spielen, prognostiziert Rudolf Grave, Chief Expert Products System Architecture bei Elektrobit. Die Continental-Tochter entwickelt Software und Services für Automobilhersteller. „Derzeit kommen Container vor allem in neuen Plattformen für das High Performance Computing, kurz HPC, zum Einsatz“, so Grave. Solche HPC-Systeme werden in Fahrzeug-Architekturen größere Verbreitung finden, da sich mit ihnen Software-Updates effizient umsetzen lassen.

Fazit & Ausblick

Mit Containern können Unternehmen schneller und flexibler Anwendungen aller Art entwickeln, modernisieren und bereitstellen. Die Einstiegshürden sind niedrig. Zum einen, weil ein Großteil der Container-Lösungen und der Management-Software Open Source ist. Zum anderen bieten Cloud-Pro­vider und IT-Dienstleister eine breite Palette von Container-Diensten an, bis hin zu gemanagten Services.
Doch ein Selbstläufer ist der Betrieb von Container-Umgebungen nicht, vor allem wenn die Zahl der „containerisierten“ Anwendungen stark ansteigt. Ein stringentes Management von Containern ist daher Pflicht, alleine aus Gründen der IT-Sicherheit und Compliance. Von solchen Hürden sollten sich Anwender aber nicht abschrecken lassen. Denn die Digitalisierung bringt es mit sich, dass Unternehmen in immer kürzeren Abständen neue Releases und Apps bereitstellen müssen. Container, Kubernetes und containerisierte Application-Runtimes sind wichtige Hilfsmittel, um diese Herausforderung zu meistern.
Tabelle:

4. Teil: „Im Gespräch mit Peter Putz von Dynatrace“

Im Gespräch mit Peter Putz von Dynatrace

  • Peter Putz: Product Marketing Manager bei Dynatrace
    Quelle:
    Dynatrace
Komplexe und dynamische IT-Umgebungen auf Basis von Containern und Microservices stellen deutlich höhere Anforderungen an das Monitoring als herkömmliche Anwendungen, betont Peter Putz, Product Marketing Manager bei Dynatrace, Spezialist für Application Performance Management. Abhilfe versprechen Monitoring-Lösungen, die auf KI-Algorithmen zurückgreifen.
com! professional: Herr Putz, welche speziellen Anforderungen in Bezug auf das Performance-Management stellen Container und Kubernetes?
Peter Putz: Kubernetes und Container sind Technologien, die agile Software-Entwicklungsprozesse und skalierbare Microservice-Architekturen möglich machen. Monolithische Applikationen waren im Vergleich dazu relativ statisch. Performance-Testing beschränkte sich bei ihnen auf wenige, gut beherrschbare Szenarien und Parameter.
Demgegenüber sind Microservice-Applikationen mit Tausenden von Containern, die in der Cloud dynamisch und automatisch repliziert oder abgeschaltet werden, hochkomplexe Systeme. Damit sind auch Leistungsengpässe nicht mehr so einfach zu diagnostizieren.
com! professional: Durch welche Faktoren können solche Engpässe verursacht werden?
Putz: Es kommen mehrere Punkte infrage: Ist ein bestimmter Service schlecht implementiert? Liegt es an der Container-Orchestrierung? Oder an den Cloud-Ressourcen? Gibt es ein regionales oder globales Problem? Tritt das Problem temporär oder kontinuierlich auf? Zudem ist es wichtig, Kostenfaktoren im Auge zu behalten. Cloud-Umgebungen können fast unbeschränkt Ressourcen zur Verfügung stellen, was aber natürlich seinen Preis hat. Dementsprechend stehen Cloud-Architekten vor der Herausforderung, Skalierbarkeit, Performance und Kosteneffizienz parallel zu optimieren.
com! professional: Erschweren Cloud-Umgebungen, in denen Container und Kubernetes eingesetzt werden, ein End-to-End-Monitoring?
Putz: Alle etablierten Cloud-Service-Provider bieten mittlerweile native Kubernetes-Implementierungen an. Zudem unterstützen sie die Verwendung von Open-Source-Versionen wie Kubernetes und Rancher sowie kommerzielle Distributionen wie Red Hat OpenShift oder Pivotal Cloud Foundry. Monitoring-Lösungen sollten idealerweise das gesamte Ökosystem abdecken. Zudem ist zu bedenken, dass viele Unternehmen nicht nur auf einen Cloud-Anbieter setzen, sondern zunehmend auf hybride Multi-Cloud-Infrastrukturen. Für ein wirkliches End-to-End-Monitoring sind also Tools notwendig, die Transaktionen lückenlos durch un-zählige Microservices verfolgen können, die in verschiedenen Cloud- und On-Premise-Umgebungen laufen, Stichwort Distributed Tracing.
com! professional: Welche Tools stehen Anwendern zur Verfügung, um Leistungsbremsen zu identifizieren und zu beseitigen?
Putz: Anwender können auf viele Open-Source-Werkzeuge zurückgreifen, die unterschiedliche Aspekte im Bereich Monitoring von Kubernetes abdecken. So gibt es spezielle Tools für Metriken, Logs, Traces und Dashboarding.
com! professional: Worauf müssen Unternehmen achten, wenn sie eine Performance-Monitoring-Lösung für Container, Kubernetes und Microservices beschaffen wollen?
Putz: Wesentliche Kriterien für die Auswahl sind ein automatisches Erkennen von dynamischen Abhängigkeiten zwischen Microservices, Pods und Containern zu unterschiedlichen Zeitpunkten sowie eine zusammenhängende Analyse von unterschiedlichen Monitoring-Daten. Dazu gehören Metriken, Logs, Events, ein Distributed Tracing und eine Analyse des Verhaltens von Services aus Sicht des Nutzers, das User-Experience-Monitoring. Wichtig ist zudem, dass eine Monitoring-Lösung unterschiedliche Entwicklungsumgebungen und Software-Plattformen abdeckt, beispielsweise .NET Core, Node.js, Golang, Python und Java. Eine weitere Anforderung ist eine automatische Fehler-Erkennung.
5. Teil: „Im Gespräch mit Haiko Hertes von SoftwareOne“

Im Gespräch mit Haiko Hertes von SoftwareOne

  • Haiko Hertes: Azure Cloud Architect bei SoftwareONE
    Quelle:
    SoftwareONE
Vom Einsatz von Containern profitieren vor allem Firmen, die Software entwickeln, so Haiko Hertes, Azure Cloud Architect beim IT-Unternehmen SoftwareONE sowie Microsoft Most Valuable Professional (MVP) und Microsoft Certified Trainer (MCT). Falsch liegt seiner Ansicht dagegen, wer Container als univer­selle Lösung oder als Ersatz von Virtual Machines betrachtet.
com! professional: Herr Hertes, wie ist Ihrer Erfahrung nach der Status von Container-Technologien in deutschen Unternehmen?
Haiko Hertes: Aus meiner Sicht war der Hype um Container viel zu groß. Klar, Container haben im richtigen Szenario deutliche Vorteile gegenüber den Alternativen, speziell im Vergleich zu klassischen virtuellen Maschinen. Aber das Szenario muss eben passen. Container sind keinesfalls eine Universallösung für alles und jeden.
com! professional: Wann kommen Container in Betracht?
Hertes: Sie sind insbesondere für den Betrieb von Test- und Produktivumgebungen auf Basis von Microservices in der Software-Entwicklung ein passendes Mittel. Von daher ist die Akzeptanz bei Firmen, die selbst Anwendungen entwickeln, deutlich höher als bei denen, die das nicht tun. Bei einem großen Teil der Firmen, die Cloud-Technologien einsetzen oder dies planen, ist jedoch die Cloud gedanklich nur ein weiterer Data-Center-Standort oder ein Ersatz für den On-Premise-Server-Raum. Hier spielen die traditionellen VMs eine deutlich größere Rolle als Container.
com! professional: Sind Virtual Machines und Container somit Rivalen oder ergänzen sich diese Technologien?
Hertes: Beide Technologien ergänzen sich. Virtuelle Maschinen sind flexibler, was die Ausgestaltung angeht, Container dagegen  unabhängiger bezüglich der Betriebsumgebung und leichtgewichtiger. Es gibt somit Szenarien, in denen Container schlecht geeignet sind, zum Beispiel wenn es um die persistente Speicherung von Daten geht. Daher werden VMs wohl mittelfristig weiterhin bestehen bleiben. Eine langfristige Prognose ist aber nicht möglich.
com! professional: Wo lassen sich Container-Technologien wie Docker und Management-Lösungen wie Kubernetes am besten einsetzen?
Hertes: Ein häufig angeführter Vorteil von Containern ist deren Portabilität. Das Container-Image kann sowohl auf einem Entwickler-PC als auch auf On-Premise-Servern sowie bei verschiedenen Cloud-Anbietern als Container betrieben werden. Dadurch lassen sich Container zum Beispiel bei CI/CD-Pipelines (Continuous Integration/Con­tinuous Delivery) in der Software-Entwicklung sehr gut einsetzen, um von der ersten bis zur letzten Stage dieselbe Art der Paketierung und Bereitstellung von Anwendungen zu verwenden. Der Entwickler muss sich keine größeren Gedanken über die künftige Betriebsumgebung machen und der Betrieb kann exakt dasselbe Container-Image, das vorher in den früheren Stages getestet wurde, in die finale, produktive Stage heben und dort nutzen.
com! professional: Welche Rolle spielen denn gemanagte cloudbasierte Plattformen im Zusammenhang mit Container-Services?
Hertes: Der Aufbau und Betrieb von Container-Plattformen ist komplex, weil unterschiedliche Systeme benötigt werden, die aneinander angebunden werden müssen. Neben den eigentlichen Container-Hosts ist beispielsweise eine Orchestrierung durch Kubernetes, DC/OS (Distributed Cloud Operating System) oder auch Docker Swarm erforderlich.
Außerdem werden Container-Registries benötigt, die die Container-Images bereithalten. Diese Systeme bekommt man bei den meisten Cloud-Providern auch als Platform-as-a-Service-Angebot.

mehr zum Thema