Container – die Lösung für alle Probleme?

Container – die Lösung für alle Probleme?

Wie viele Buzzwords haben Sie schon gehört? Docker, Kubernetes, Microservices, Cloud Native, K8s, K3s, DevOps, CI-CD, Service Mesh, Ingress,  – um nur einige zu nennen. Sicher war auch Container eines dieser technischen Schlagworte, welches Sie irgendwo gelesen haben. Um was geht es genau? Container sind eine Art, um Applikationen zu betreiben. Die Entwicklung von physischen Servern (Bare Metal) zu virtuellen Maschinen (VMs) ist schon längst Realität. Ist die Entwicklung zu Containern vergleichbar? In diesem Blogbeitrag wollen wir darauf eingehen.

Container werden heute vielfach auf VMs betrieben, obwohl es auch auf physischen Servern möglich ist. Mit einer Container-Lösung wird die komplette Architektur der Software geändert und benötigen weniger Systemressourcen. Läuft eine Applikation heute auf zwei VMs (DB-Server und App-Server) wird von einem Monolith gesprochen, sind doch beide VMs für den Betrieb notwendig. Fällt eine VM aus, läuft die Applikation nicht mehr. Die Container Architekturen verfolgen einen anderen Ansatz: Es werden in jeder Komponente Redundanzen gebildet, fällt eine aus, wird sie auf einem weiteren Host gestartet. Grundsätzlich kann jede Komponente ausfallen und die Applikation bzw. der Enduser merkt im besten Fall nichts. So zumindest die Theorie (Stichwort: Seaf Healing).

container_evolution-1

Quelle: Overview | Kubernetes

Um ein wenig Licht in das ganze Thema zu bringen hier ein paar Begriffe aus der Container-Welt kurz erklärt:

Docker
Docker ist eine Technologie, um Software-Anwendungen in Container zu betreiben und brachte den containerbasierten Ansatz in den Mainstream. Es ist aber längst nicht mehr die einzige Art und verliert zunehmend an Bedeutung. Mein Arbeitskollege Jan meint dazu: "Meiner Meinung Container-Docknach wird Docker noch lange bleiben, da es zu bekannt ist und zu viele docker-compose Vorlagen im Internet herumliegen. Aber Neues wird nicht mehr entstehen." Podman von RedHat gilt als direkter Nachfolger und soll einige Sicherheitsbedenken von Docker entkräften.

Kubernetes
Kubernetes ist eine Containerorchestrierungs-Software, ursprünglich entwickelt von Google. Heute als Open-Source Projekt innerhalb der Cloud native Computing Foundation (CNCF) geführt, entwickeln grosse Firmen wie Google, RedHat, VMware und Microsoft an Kubernetes weiter (auch Upstream Kubernetes oder Vanilla Kubernetes genannt). Übrigens wird Kubernetes auch als K8s abgekürzt: K – 8 -s /  Kubern – eight - S.

Kubernetes bietet Konzepte, um der Anwendung Compute, Speicher, Netzwerkressourcen, Load Balancing, automatische Skalierung und Deployments bereitzustellen. Vergleichbar: VMware vSphere für VMs, Kubernetes für Container. Hier die Features im Vergleich:

Vergleich vSphere vs Container-2

Kubernetes-Services von Microsoft und VMware
Einzelne Hersteller packen die Upstream Kubernetes Variante in eigene Produkte und Services. Kubernetes kann komplett selbst installiert und konfiguriert werden, doch im Betrieb stösst man schnell auf Probleme und neue Herausforderungen. Die Kubernetes Architektur zu verstehen, stellt schon eine erste grosse Hürde dar. Dazu kommt noch ein schier endloser Technologie-Stack rundherum, welcher beherrscht werden muss. Die Hyperscaler wie Microsoft bieten mit ApplikationAzure Kubernetes Service einen einfacheren Einstieg, wobei Teile der Kubernetes Infrastruktur vom Hersteller verwaltet werden. VMware bietet mit Tanzu ebenfalls eine sehr breite Palette an Produkten rundum Kubernetes, unabhängig wo die Kubernetes Cluster laufen (on-premises auf vSphere, bei einem VMware Cloud Partner, auf Azure, AWS, GCP). 

Tönt gut, kann ich nun mein Active Directory in einem Container betreiben?
Nein, legacy- oder monolithische Applikationen von einem klassischen VM Deployment Modell auf Container umzustellen ist nicht so einfach möglich. Grundsätzlich muss die Applikation dafür ausgelegt sein, um auf Container betrieben zu werden. Web-Applikationen bieten sich sehr gut an. Bei vielen Softwareherstellern findet aktuell ein Wandel statt, um die Applikation für eine Container-Architektur auszulegen. Aus Softwaresicht spricht man von Microservices. 

Fazit
Container sind eine moderne Methode zur Bereitstellung von Anwendungen. Sie packen Code und alle notwendigen Abhängigkeiten in eine isolierte Umgebung, um sicherzustellen, dass die Anwendung konsistent auf verschiedenen Umgebungen ausgeführt werden kann.
Für ein Erstgespräch rundum Container stehen wir gerne zur Verfügung. Sie erreichen uns über verkauf@firstframe.net oder +41 41 768 08 00.