Startseite Unternehmen Gehen Sie auf Cloud Native um und vermeiden Sie Turbulenzen

Gehen Sie auf Cloud Native um und vermeiden Sie Turbulenzen

by Gastautor

Willkommen zum ersten einer Reihe von vier Artikeln über die Containerisierungs- und Cloud-native-Bewegung, die von Docker, Google und einem aufstrebenden Ökosystem aus traditionellen und neuen Akteuren angeführt wird. In dieser Reihe wagen wir es, diesen aufstrebenden und spannenden Bereich zu definieren und zu diskutieren, um Organisationen dabei zu helfen, sich darin besser zurechtzufinden. Während sich dieser erste Artikel auf die Definition von „Cloud Native“ und einige damit verbundene bewegliche Teile konzentriert, werden wir in zukünftigen Artikeln die wichtigen Ebenen und damit verbundenen Herausforderungen bei Netzwerk, Speicher und Container-Orchestrierung untersuchen, um Ihnen einen umfassenderen Überblick zu geben … aber beginnen wir zunächst mit der Anfang.


Willkommen zum ersten einer Reihe von vier Artikeln über die Containerisierungs- und Cloud-native-Bewegung, die von Docker, Google und einem aufstrebenden Ökosystem aus traditionellen und neuen Akteuren angeführt wird. In dieser Reihe wagen wir es, diesen aufstrebenden und spannenden Bereich zu definieren und zu diskutieren, um Organisationen dabei zu helfen, sich darin besser zurechtzufinden. Während sich dieser erste Artikel auf die Definition von „Cloud Native“ und einige damit verbundene bewegliche Teile konzentriert, werden wir in zukünftigen Artikeln die wichtigen Ebenen und damit verbundenen Herausforderungen bei Netzwerk, Speicher und Container-Orchestrierung untersuchen, um Ihnen einen umfassenderen Überblick zu geben … aber beginnen wir zunächst mit der Anfang.

Am Anfang gab es Free BSD und Solaris, die meisterhafte Grundlagen für das legten, was heute als moderne Containerisierungstechnologien gilt, mit Funktionen namens FreeBSD Jails bzw. Solaris Zones. Google hat dazu beigetragen, Container zu Linux zu bringen, indem es cgroups zum Linux-Kernel hinzugefügt hat. In Kombination mit Namespaces und Chroot wurden die technischen Grundlagen gelegt. Docker machte Container darüber hinaus zugänglicher, indem es einen einfachen Workflow rund um Container-Images erstellte und sich auf eine einfache Entwicklererfahrung konzentrierte.

Der wahrscheinlich beste Weg, den Raum zu definieren, besteht darin, einige grundlegende Fragen zu beantworten und einige Gastexperten mit deren Beantwortung zu beauftragen. (Sehen Sie sich an, wie ich Arbeit an andere Personen verlagere, die besser qualifiziert sind!?)

Was ist ein Container?
Gastautor Cameron Brunner, Chefarchitekt Navops

Mithilfe von Containern können Anwendungen zuverlässig von einer Computerumgebung in eine andere verschoben werden. Dies kann vom Laptop eines Entwicklers über die Qualitätssicherungsumgebung bis hin zur Produktion vor Ort oder in der Cloud reichen. Software-Stack-Abhängigkeiten der im Container ausgeführten Anwendung, wie z. B. das Betriebssystem oder andere Softwarekomponenten und Bibliotheken, können weitgehend in einen Container eingebettet werden, sodass dieser unabhängig von den Details der zugrunde liegenden IT-Umgebung ausgeführt werden kann. Container wurden ursprünglich entwickelt, um die Isolierung zwischen Anwendungen zu gewährleisten, die auf einem Betriebssystem ausgeführt werden. Sie bieten eine Kombination aus Ressourcenkontrollen und Grenztrennung, die dabei hilft, die Ausführung von Code innerhalb des Containers von anderen Aktivitäten und anderen Containern zu isolieren, die auf dieser Maschine/diesem Betriebssystem ausgeführt werden. Container erreichen diese Isolierung, indem sie Betriebssystemfunktionen wie Cgroups und Namespaces nutzen. 

Was ist Docker?

Docker ist sowohl ein Unternehmen als auch eine kommerzielle/Open-Source-Implementierung von Containern. Container gab es schon lange vor Docker mit frühen Implementierungen wie FreeBSD Jails (2000) und Solaris Zones (2004), und Docker hat großartige Arbeit geleistet, um Container für die breite Masse nutzbar zu machen, indem es den Erstellungs- und Ausführungsprozess erheblich vereinfacht hat. Während sich Docker schnell zum De-facto-Standard-Containerformat entwickelt, hat das Unternehmen durch die Gründung der Open Container Initiative (OCI) im Rahmen der Linux Foundation weitere Schritte in Richtung Offenheit und Zusammenarbeit unternommen. OCI bezieht eine Reihe von Branchenteilnehmern ein und arbeitet an Industriestandards für Containerformate und Laufzeiten. (Siehe www.opencontainers.org/)

Was ist Cloud Native Computing?
Gastautor Joe Beda, Gründer und Mitwirkender von Google Compute Engine und Kubernetes

Cloud Native ist eine von vielen neuen Denkweisen zum Erstellen und Verwalten von Anwendungen in großem Maßstab. Im Grunde strukturiert Cloud Native Teams, Kultur und Technologie, um Automatisierung und Architekturen zu nutzen, um Komplexität zu bewältigen und Geschwindigkeit freizusetzen.

Während Container und Containerverwaltung häufig Teil des „Cloud Native“-Denkens sind, haben Unternehmen wie Netflix dieses Denken bekanntermaßen auf VMs und VM-Images angewendet. Darüber hinaus müssen Sie nicht in der Cloud arbeiten, um einige Vorteile dieses Umdenkens zu erkennen. Anwendungen und Teams lassen sich besser verwalten, wenn Anwendungen vor Ort bereitgestellt werden.

Es gibt keine festen Regeln dafür, was Cloud Native ist. Es tauchen jedoch einige Themen auf.

  • DevOps und Ops-Automatisierung: Ingenieure, die als Anwendungsentwickler arbeiten, tragen aktiv dazu bei, dass Anwendungen zuverlässig in der Produktion ausgeführt werden können. Ebenso stellen diejenigen, die die operative Rolle wahrnehmen, sicher, dass Erfahrungen in die Entwicklung einfließen. Automatisierung ist der Schlüssel zur Verwaltung vieler beweglicher Teile.
  • Container: Container bieten eine praktische Möglichkeit, ein bereitstellbares Build-Artefakt zu erstellen, das getestet und validiert werden kann. Dadurch wird sichergestellt, dass Bereitstellungen vorhersehbar sind.
  • Rechencluster: Ein API-gesteuertes Rechencluster- und Planungssystem ermöglicht es einer kleinen Anzahl von Ingenieuren, eine große Anzahl von Arbeitslasten zu verwalten. Darüber hinaus können diese Arbeitslasten effizient auf Knoten gepackt werden, um die Auslastungsraten zu steigern. Schließlich reduziert ein gut geführter Cluster den Betriebsaufwand für Anwendungsteams.
  • Microservices: Microservices teilen Anwendungen in kleinere bereitstellbare Einheiten auf, damit Entwicklungsteams schnell und flexibel arbeiten können. Diese Ideen sind nicht unbedingt neu, werden aber zusammen mit Tools angewendet, um ein skalierbares Management zu ermöglichen. Wir werden weiter unten mehr darüber sprechen.
  • Tiefe Sichtbarkeit: Cloud Native bietet tiefere Einblicke in die Ausführung von Diensten. Die verteilte Nachverfolgung, das Sammeln und Indizieren von Protokollen sowie eine umfassende Anwendungsüberwachung tragen dazu bei, Aufschluss darüber zu geben, was tatsächlich in einer Anwendung geschieht.

Was ist eine Microservice-basierte Architektur?
Gastautor Joe Beda, Gründer und Mitwirkender von Google Compute Engine und Kubernetes

Microservices sind ein neuer Name für ein Konzept, das es schon sehr lange gibt. Im Grunde handelt es sich dabei um eine Möglichkeit, eine große Anwendung in kleinere Teile aufzuteilen, sodass diese unabhängig voneinander entwickelt und verwaltet werden können. Schauen wir uns hier einige der wichtigsten Aspekte an:

  • Starke und klare Schnittstellen. Eine enge Kopplung zwischen Diensten muss vermieden werden. Dokumentierte und versionierte Schnittstellen tragen dazu bei, diesen Vertrag zu festigen und sowohl den Verbrauchern als auch den Produzenten dieser Dienste ein gewisses Maß an Freiheit zu bewahren.
  • Unabhängig bereitgestellt und verwaltet. Es sollte möglich sein, einen einzelnen Microservice zu aktualisieren, ohne eine Synchronisierung mit allen anderen Services durchzuführen. Es ist auch wünschenswert, eine Version eines Microservices problemlos zurücksetzen zu können. Das bedeutet, dass die bereitgestellten Binärdateien sowohl hinsichtlich der API als auch hinsichtlich aller Datenschemata vorwärts- und abwärtskompatibel sein müssen. Dadurch können die Kooperations- und Kommunikationsmechanismen zwischen den entsprechenden Operations- und Entwicklungsteams getestet werden.
  • Integrierte Belastbarkeit. Microservices sollten so aufgebaut und getestet werden, dass sie unabhängig belastbar sind. Code, der einen Dienst nutzt, sollte danach streben, weiterhin zu funktionieren und etwas Vernünftiges zu unternehmen, falls der genutzte Dienst ausfällt oder sich schlecht verhält. Ebenso sollte jeder angebotene Dienst über einige Abwehrmaßnahmen gegen unerwartete Auslastung und fehlerhafte Eingaben verfügen.
  • Bei Microservices geht es mehr um Menschen als um Technologie. Kleine Teams sind flexibler. Jeff Bezos ist dafür bekannt, dass er vorschlägt, Meetings und Teams so klein zu halten, dass sie mit zwei Pizzen satt werden können. Indem Sie ein großes Projekt in eine Reihe kleinerer Teams strukturieren und sich dann aus dem Weg räumen, können diese Teams sich zusammenschließen und diesen Teil des Projekts übernehmen.

Wir freuen uns auf die nächsten Artikel, in denen wir einige der wichtigen Schichten des Cloud-Native-Stacks besprechen werden.

Rob Lalonde ist Vizepräsident und General Manager von Navips. Er ist aktiver Teilnehmer verschiedener Open-Source-Stiftungen, darunter der Cloud Native Computing Foundation (CNCF), der Open Container Initiative (OCI) und der Linux Foundation. Rob hatte Führungspositionen in mehreren erfolgreichen High-Tech-Unternehmen und Start-ups inne. Er hat ein MBA-Studium an der Schulich School of Business der York University abgeschlossen und einen Abschluss in Informatik von der Laurentian University.

Diskutiere diese Geschichte

Melden Sie sich für den StorageReview-Newsletter an