Außerhalb des Containers

Docker und Mikroservices ermöglichen zusätzliche Agilität und Wirtschaftlichkeit im Rechenzentrum.

Große Unternehmen befassen sich mit den Möglichkeiten, die durch neue Container-Technologien wie Docker geschaffen werden. Wir bei Juniper betrachten diesen Trend als Meilenstein in der Rechenzentrumsinnovation, der für große Unternehmen, die Cloud als Service anbieten, erhebliche Vorteile im Hinblick auf Effizienz, Produktivität und Flexibilität bereithält.

Aufgrund der beschleunigten Entwicklung von begleitenden Technologien wie Kubernetes ist für diese Unternehmen 2016 diese Kombination aus containerisierten Anwendungen und einer Mikroservices-Architektur äußerst vielversprechend.

Container und Mikroservices

Der primäre Zweck containerisierter Anwendungen ist eine höhere Effektivität der Softwareteams, indem sie die Zusammenarbeit vereinfachen und den Kommunikationsaufwand reduzieren. In großen Unternehmen beginnen Anwendungen wie ERP- oder CRM-Software-Suiten häufig als einfache Projekte, die aber im Laufe der Zeit schnell umständlich und ineffizient werden, mit einer Codebasis monolithischen Ausmaßes, die das Vorankommen des Entwicklerteams behindert.

Dieser Effizienzmangel kann mit einem neuen Konzept überwunden werden, das die Anwendung in kleinere, leicht zu verarbeitende Komponenten aufteilt, die Mikroservices genannt werden. Durch den Umstieg auf eine Mikroservices-Architektur erlangen Entwicklerteams höhere Flexibilität und betriebliche Effizienz, bedingt durch die kleinere Codebasis für jede Komponente der Anwendung.

Durch den Umstieg auf eine Mikroservices-Architektur erlangen Entwicklerteams höhere Flexibilität und betriebliche Effizienz, bedingt durch die kleinere Codebasis für jede Komponente der Anwendung.

Während die Software die verschiedenen Entwicklungsstadien durchläuft, kann sie vom Entwickler-PC in eine Labor- oder Testumgebung migriert, von einer physischen in eine virtuelle Umgebung verlagert und letztendlich in die Produktionsumgebung implementiert werden. Die Anwendung muss in all diesen Umgebungen eine gleich bleibend hohe Leistung erbringen. Container bieten eine Lösung für das Problem des reibungslosen Betriebs einer Software in unterschiedlichen Computerumgebungen. Sie ermöglichen es Software-Entwicklern, eine Anwendungskomponente in einem einzigen, leichten Paket zusammenzufassen. Container sind inhärent Linux-basiert und versprechen einen gleich bleibenden und reibungslosen Betrieb beim Übergang von einer Computerumgebung zur nächsten, sei sie virtuell oder physisch.

Bestandteil einer DevOps-Herangehensweise

Mikroservices entsprechen der in den IT-Abteilungen erfolgenden Verlagerung hin zu einer DevOps-Kultur, in der die Entwickler- und Operatorteams eng zusammenarbeiten, um eine Anwendung während ihres gesamten Lebenszyklus zu unterstützen. Container sind sowohl für Entwickler als auch für Systemadministratoren ein ideales DevOps-Werkzeug. Container ermöglichen es den Entwicklern, sich auf ihre Kernkompetenzen zu konzentrieren, während die Mitarbeiter von der Flexibilität, der kleineren Stellfläche im Rechenzentrum und den geringeren Kosten profitieren.

Container funktionieren am besten, wenn jeder einem einzigen Prozess zugeordnet ist. Aus diesem Grund kann die Einrichtung einer Mikroservices-Architektur für eine große Anwendung oder ein umfangreiches Software-Projekt unter Umständen ressourcenintensiv ausfallen, der Aufwand lohnt sich jedoch aufgrund der Flexibilität, die geschaffen wird. Diese Flexibilität resultiert zum Teil aus der Tatsache, dass Container innerhalb von Millisekunden bis zu wenigen Sekunden bereitgestellt werden können. Die Anwendungs-Workloads im Container verwenden den Betriebssystem-Kernel des Hostservers, wodurch die Notwendigkeit entfällt, das OS als Teil des Startvorgangs abzurufen.

Container ermöglichen es den Entwicklern, sich auf ihre Kernkompetenzen zu konzentrieren, während die Mitarbeiter von der Flexibilität, der kleineren Stellfläche im Rechenzentrum und den geringeren Kosten profitieren.

Ein anderer wesentlicher Vorteil containerisierter Anwendungen liegt in ihrer Effizienz, sowohl in Bezug auf den Betrieb als auch den Platz- und Strombedarf im Rechenzentrum, da sie sehr wenig Arbeitsspeicher erfordern. Im Gegensatz zu virtuellen Maschinen (VM), die ein vollständiges OS und ein System-Image benötigen, wodurch die Host-CPU-Kosten steigen, sind Container genügsam. Sie teilen das OS des Host-Kernels und haben das Potenzial, die CPU und den Arbeitsspeicher effizienter als VMs zu nutzen, wodurch die Rechenkosten sowie der Energie- und Raumbedarf im Rechenzentrum sinken.

Verwaltung des Clusters

Eine Gruppe von physischen oder virtuellen Maschinen, auf denen Container ausgeführt werden können, bezeichnet man als Cluster, das verwaltet werden muss. Im Rahmen der Evolution von Container-Technologien können Unternehmen Cluster Management Tools verwenden, zu denen OpenShift und das von Google entwickelte Kubernetes gehören, das in Verbindung mit Docker eingesetzt wird. Docker dient nicht nur als Ausführungs-Engine für Container, sondern bietet auch die Verwaltungsstruktur für ihre Dateisysteme.

Cluster Management Tools wie Kubernetes ermöglichen in der Regel eine Abstraktion auf der Ebene einer Anwendungskomponente. Diese als Pod bezeichnete Abstraktion besteht aus einer Gruppe von einem oder mehreren Containern, deren gemeinsamem Speicher und Optionen für das Ausführen der Container. Die Aktion zur Pod-Planung auf einem Computer innerhalb des Clusters resultiert in der Ausführung eines Containers durch Docker.

Ein Netzwerk für Container aufbauen

Das Netzwerk spielt eine wichtige Rolle in der Containerisierung. In mandantenfähigen Umgebungen sind die Fähigkeit zur Zugriffskontrolle und die Überwachung der Netzwerkströme eine grundlegende Notwendigkeit. Die über das Netzwerk bereitgestellte Zugriffskontrolle ergänzt die anwendungsbasierten Authentifizierungs- und Autorisierungsmechanismen. Zusammen bieten sie eine gemeinsame Ebene gemischter Authentifizierungsmethoden. Diese Funktion erfüllt eine häufige Anforderung in Umgebungen, in denen Drittanbieter-Software, wie virtuelle Firewalls, verwendet wird oder in denen mehrere Generationen von Software-Technologien gleichzeitig ausgeführt werden.

Wir bei Juniper sehen ein großes Potenzial für Container und gehen davon aus, dass IT-Organisationen zunehmend auf mit Firewallfunktionen gesicherte Mikroservices-Architekturen und containerisierte Anwendungen umsteigen werden.

Netzwerkzugriffskontrollen in Kombination mit Sicherheitsmechanismen auf den Ebenen 3-7 sollten die Cluster, die containerisierte Workloads ausführen, ebenso wie externe Umgebungen begleiten, z. B. bestehende OpenStack oder Bare-Metal-Server. In diesen gemischten Umgebungen ist das Netzwerk das Bindemittel, das die unterschiedlichen Elemente zusammenhält.

Als Beispiel für diese Funktionalität kann eine Technologie wie Contrail Networking von Juniper dienen. Contrail ermöglicht Mikrosegmentierung für ein Container-Ökosystem, indem es Netzwerke innerhalb einer mandantenfähigen Umgebung zuverlässig isoliert. Es ermöglicht dem Cluster Management Tool die Verbindung verschiedener virtueller Netzwerke zwischen Anwendungen, die in Containern und auf VMs ausgeführt werden, sowie zu Elementen außerhalb des Cluster Management Tools, wie z. B. ältere Infrastruktur oder Datenbanken, die auf Bare-Metal-Servern betrieben werden.

Im Zuge der weiteren Ausreifung der Container-Technologie werden Netzwerktechnologien entstehen, die containerisierte Anwendungen unterstützen. Es wird ein wachsendes Bedürfnis nach Sicherheit entstehen, die diesen Umgebungen gerecht wird, einschließlich Container-Technologie, die in der gleichen Geschwindigkeit wie die Anwendungskomponenten ausgeführt werden kann.

Wir bei Juniper sehen ein großes Potenzial für Container und gehen davon aus, dass IT-Organisationen zunehmend auf mit Firewallfunktionen gesicherte Mikroservices-Architekturen und containerisierte Anwendungen umsteigen werden. Unser Ziel ist es, Netzwerke durchgängig zu schützen, komplexe Netzwerkprobleme zu automatisieren und robuste, offene Plattformen zu entwickeln, die den Weg für die Einführung derartiger Technologien ebnen.

In den Ressourcen dieses Artikels erfahren Sie mehr über containerisierte Anwendungen und wie ein Netzwerk aufgebaut sein muss, um diese zu unterstützen.