kalafoto - stock.adobe.com
Container vs. VMs: Container benötigen dedizierten Speicher
Unternehmen müssen die Vorteile von Containern gegenüber virtuellen Maschinen kennen, um die richtigen Storage-Funktionen für erfolgreiche Container-basierte Anwendungen zu wählen.
Der moderne Geschäftserfolg hängt sowohl von der Geschwindigkeit als auch von der Effizienz datenzentrierter Initiativen ab. Daten bieten einen strategischen Vorteil, und die Ausstattung von Entwicklern mit den richtigen Tools und Daten ist unerlässlich, um mit den geschäftlichen Anforderungen Schritt zu halten.
Infolgedessen erkennen Unternehmen schnell die Vorteile von Containern gegenüber virtuellen Maschinen (VMs) für die Modernisierung von ITOps- und DevOps-Praktiken. In einer 2020 durchgeführten Umfrage unter IT-Speicheradministratoren stellte die Enterprise Storage Group (ESG) fest, dass 41 Prozent Container für Produktionsanwendungen und weitere 33 Prozent Container für Test-/Dev-Aktivitäten nutzen.
Oft werden Container mit VMs verglichen, obwohl Container kleiner sind und weniger Overhead benötigen. Es ist verlockend zu denken, dass die beiden Anwendungsumgebungen die gleiche Infrastruktur benötigen, insbesondere die gleiche Speicherinfrastruktur. In Wirklichkeit sind Container ganz anders als VMs. Zu verstehen, wie sich diese Unterschiede auf das Design der IT-Infrastruktur auswirken, ist unerlässlich, wenn das Ziel darin besteht, den Wert der Container-basierten Anwendungsumgebung zu maximieren.
Hauptunterschiede zwischen Containern und VMs
Im Gegensatz zu VMs sind Container kurzlebig. Sie werden automatisch gestartet und heruntergefahren. Aber wie VMs benötigen auch Container Zugriff auf persistenten Speicher, um ihr volles Potenzial in Produktionsumgebungen auszuschöpfen. Ohne persistenten Speicher „sterben“ die Daten, wenn ein Container heruntergefahren wird.
Eine Speicherinfrastruktur auf Unternehmensebene für containerbasierte Anwendungen muss zumindest funktionellen persistenten Speicher bieten. Aber das ist nur der Anfang. Um zu florieren, benötigt eine Container-Umgebung ein Storage-Ökosystem, das die leichtgewichtige, mobile und flüchtige Natur von Containern unterstützt.
Vorteile von Containern gegenüber virtuellen Maschinen
Der Entwurf eines Storage-Ökosystems, das die Vorteile von Containern gegenüber VMs hervorhebt, beginnt mit der Identifizierung der wichtigsten Aspekte von Containern, die sich von VMs unterscheiden:
- Die Leichtigkeit eines Containers bedeutet größere Mobilität. Container sind auf Mobilität ausgelegt, im Gegensatz zu VMs, die zwar bewegt werden können, aber überwiegend stationär ausgelegt sind. Container sind daher eher geeignet, Public-Cloud-Dienste für die Bereitstellung zu nutzen und sich in Hybrid-Cloud- und Multi-Cloud-Umgebungen zu bewegen.
In einer ESG-Forschungsstudie über containerbasierte Anwendungsumgebungen gaben 70 Prozent der Teilnehmer an, dass sie für containerbasierte Anwendungen eine Kombination aus der öffentlichen Cloud und einem privaten Rechenzentrum bevorzugen. In einer separaten Umfrage unter Storage-Administratoren, die Container-Umgebungen verwalten, gab mehr als ein Drittel an, dass das Management von Container-Storage in einer hybriden oder Multi-Cloud-Umgebung eine ihrer größten anhaltenden Storage-bezogenen Herausforderungen sei. Für VMs ist die Bewegung in und aus der Cloud eine Möglichkeit. Für containerbasierte Umgebungen wird diese Art der Portabilität erwartet.
- Die ephemere Natur eines Containers erfordert eine höhere Leistung. Ein weiterer Vorteil von Containern gegenüber virtuellen Maschinen ist ihre Kurzlebigkeit. Container haben eine gewisse Unmittelbarkeit. Sie müssen schnell hochgefahren und ebenso schnell wieder heruntergefahren werden. Kurzlebige, beschleunigte Anwendungsumgebungen können nicht durch traditionelle IT-Prozesse gebremst werden.
Es bleibt zum Beispiel keine Zeit, den Helpdesk zu kontaktieren, damit der Storage-Administrator ein Volume manuell bereitstellt. Container müssen automatisch Ressourcen bereitstellen, und in den meisten Fällen eine Menge Ressourcen: Das Refactoring vieler heutiger Anwendungen könnte dazu führen, dass Hunderte, wenn nicht Tausende von Microservices gleichzeitig laufen. Die unterstützende Speicherumgebung muss in der Lage sein, große Mengen von Anfragen nach neuen Speicherressourcen schnell und konsistent zu bedienen.
Diese Anforderung erhöht nicht nur die Nachfrage nach guter Storage-Performance bei Containern, sondern bedeutet auch, dass die Storage-Infrastruktur besser in der Lage sein muss, Datendienste bereitzustellen, zum Beispiel die Bereitstellung neuer Volumes. In einer ESG-Studie bezeichnete mehr als ein Drittel der Storage-Administratoren, die Containerumgebungen verwalten, die Storage-Performance als eine ihrer größten anhaltenden Storage-bezogenen Herausforderungen, und fast ein Drittel nannte die Geschwindigkeit der Speicherbereitstellung als Top-Herausforderung.
Benötigte Storage-Funktionen
Angesichts dieser Merkmale ist es wichtig, sich auf einige Funktionen der Speicherinfrastruktur zu konzentrieren, um das Beste aus containerbasierten Anwendungen herauszuholen. Bei der Architektur einer Enterprise-Storage-Infrastruktur zur Unterstützung von Containern sollten Sie auf die folgenden vier Merkmale achten:
- Die Fähigkeit, eine konsistente, standardisierte und abstrahierte Speicherumgebung bereitzustellen. Während die meisten Implementierungen von Kubernetes Gemeinsamkeiten bieten, können die verbleibenden Variationen die Komplexität erhöhen. Entwickler benötigen eine standardisierte Abstraktionsschicht zwischen den verschiedenen Iterationen von Kubernetes (oder anderen Container-Orchestrierungs-Frameworks), damit diese Iterationen einfach und nahtlos miteinander kommunizieren können. Eine Möglichkeit, diese notwendige Standardisierung zu erreichen, ist das Open-Source-Projekt Container Storage Interface (CSI), das einen standardisierten Mechanismus für die Speicherung über verschiedene Container-Orchestrierungssysteme hinweg bietet, darunter Kubernetes, Mesos und Docker. Wenn Sie Speicheroptionen in Betracht ziehen, suchen Sie nach solchen, die einen CSI-Treiber für Container-Umgebungen anbieten.
- Konsistente Verwaltung, Überwachung und Kontrolle über hybride Cloud-Umgebungen hinweg. Eine Standardisierung kann die Entwicklergemeinde entlasten, aber die Administratoren müssen konsistente Speicherfunktionen und -verwaltung über die gesamte hybride oder Multi-Cloud-containerbasierte Anwendungsumgebung hinweg einrichten. Optionen, die keine Hybrid-Cloud-Grenzen überspannen, schränken entweder die Mobilitätsvorteile von Containern ein oder führen zu unnötiger Verwaltungskomplexität. Bevorzugen Sie Speichertechnologien, die einen einzigen Speicherendpunkt mit einem konsistenten Satz von Tools und einer konsistenten Benutzererfahrung sowohl für On- als auch für Off-Premises-Workloads bieten.
- Zukunftsfähige Leistung. Jede Speicherumgebung, die Container-basierte Anwendungen unterstützt, sollte mindestens Flash verwenden. NVMe-basierte Speicherarchitekturen und solche, die für die Unterstützung von Storage Class Memory ausgelegt sind, können die Gesamtleistung des Speichers ebenfalls steigern. Die Leistungsanforderungen gehen jedoch über die Fähigkeit hinaus, ein hohes Maß an Lese- und Schreibanforderungen bei niedrigen Latenzzeiten zu bedienen. Die Speicherumgebung muss darauf vorbereitet sein, das Potenzial von Tausenden von Microservices zu verarbeiten, die gleichzeitig gestartet werden.
Bei der Evaluierung der Speichertechnologie für Container müssen alle Aspekte der Speicherleistung berücksichtigt werden: Latenz, Bandbreite, die Fähigkeit, Datendienste bereitzustellen und auszuführen, und Skalierbarkeit. Die Speichertechnologie muss Daten schnell liefern, und sie muss auch in der Lage sein, Datendienste schnell bereitzustellen und auszuführen. Die IT muss in der Lage sein, diesen Microservices schnell und effizient persistenten Speicher zuzuordnen, und der Speicher muss in der Lage sein, seine Leistung bei steigenden Anforderungen zu skalieren.
- Skalierbarkeit und Hardware-Flexibilität. Der Zeit- und Arbeitsaufwand, der für die manuelle Bereitstellung von Speicher erforderlich ist, ist für Container nicht praktikabel. Anwendungsentwicklungsteams benötigen einen skalierbaren, schnellen Ansatz, insbesondere wenn neue Anwendungen oder Microservices in die Produktion überführt werden. Die Umgebung sollte in der Lage sein, Speicherressourcen einfach zu skalieren, mit wenig bis gar keinem Eingriff des Administrators. Das Ziel ist es, sicherzustellen, dass Entwickler nicht Stunden, Tage oder Wochen auf die Erfüllung von Anforderungen warten müssen und die Entwicklung zu beschleunigen.
Die Container-Speicherumgebung sollte über mehrere Hardwaretypen und -generationen hinweg funktionieren. Die Integration neuer Technologie, die Skalierung der Leistung oder das Hinzufügen von Kapazität sollte kein „Rip and Replace“ der Hardware erfordern. Diese Umgebungen müssen so flexibel wie möglich nach oben und unten skaliert werden können.
Wenn man die Vorteile von Containern gegenüber virtuellen Maschinen in Betracht zieht, ist es wichtig, kreativ zu sein. Die Architektur einer Speicherinfrastrukturumgebung, die es Ihren Anwendungsentwicklern, Ihrer IT-Organisation und Ihrem Unternehmen ermöglicht, das Potenzial von containerbasierten Anwendungen zu maximieren, erfordert einen anderen Ansatz. Konzentrieren Sie sich auf Speicherflexibilität, Konsistenz und Leistung, um die besten Ergebnisse zu erzielen.