Wie Vertec Windows Container für das Cloud Abo nutzt
Vom Segen der Virtualisierung
Ich kann mich noch gut daran erinnern, als ich das erste Mal von Betriebssystem-Virtualisierung gehört habe. Ein befreundeter Entwickler hat mir vorgeschwärmt, dass bei ihm in der Firma die Setup-Programme automatisiert über Nacht auf allen möglichen Betriebssystem-Varianten getestet würden. Möglich mache dies ein Tool eines damals noch recht unbekannten Herstellers (VMware). Etwas ungläubig habe ich damals nach dem Thema recherchiert und bin dadurch auf die wundersame Welt der Virtualisierung gestossen.
Mit dem erwähnten Tool war es tatsächlich möglich, sich für Test-Zwecke mal rasch einen neuen Rechner mit frisch installiertem Windows aufzusetzen, ohne dafür auch nur ein Stück Blech oder Silizium in die Hand zu nehmen.
Virtual Machines sind tatsächlich praktisch: Der als virtuelle Maschine neu geschaffene Rechner existiert nur als Daten auf dem eigenen Arbeitsplatz-Rechner. Natürlich merken Programme, die man auf dem virtuellen Rechner startet, nichts davon, das ist ja der Sinn der Sache.
Als eigentliche Killeranwendung für Virtualisierung hat sich der Betrieb von Servern als VMs herausgestellt. In unserem Server-Raum stehen seit vielen Jahren nicht mehr zahlreiche mehr oder minder gut ausgerüstete Blechkisten, sondern nur noch hochgerüstete Rack-Server, welche ausschliesslich als Virtualisierungs-Hosts dienen. Sämtliche internen Server sind virtualisiert, das ermöglicht es uns, die Hardware unabhängig von der Software auszuwechseln. Diese Art der Plattform Virtualisierung hat sich in den letzten Jahren auf breiter Basis durchgesetzt.
Die Probleme mit Virtual Machines
Ein Problem beim Einsatz von virtuellen Rechnern hatte ich bei der anfänglichen Begeisterung übersehen: Es ist nicht ganz einfach, sich so auf die Schnelle eine virtuelle Maschine (VM) zu schnappen und rasch etwas damit zu testen. Wie beim "richtigen" Rechner muss da zuerst noch ein Betriebssystem drauf installiert werden. Also gingen wir bei uns in der Firma dazu über, eine Bibliothek von virtuellen Maschinen zu unterhalten, von denen man sich bei Bedarf rasch eine auf den eigenen Rechner kopieren konnte.
Das "rasch" sollte sich bald als Illusion herausstellen, da eine ernstzunehmende VM rasch ein paar GB Diskplatz belegt. Hinzu kommt der Aufwand der notwendig ist, um eine VM Bibliothek zu pflegen und regelmässig auf den neuesten Update Stand zu bringen. In diesem Bereich entsprechen die virtuellen Rechner dann eben doch nur ihren hardware-basierten Vorgängern. Schön wäre es, ich könnte einfach eine bestimmte Applikation in einer virtuellen Umgebung betreiben, ohne dafür gleich einen ganzen Rechner samt Betriebssystem neu aufzusetzen.
Virtualisierte Applikationen
Wenn ich eine Server-Applikation für verschiedene Kunden anbieten will, drängt sich eine Virtualisierung schon fast auf. Ich möchte schliesslich um alles in der Welt vermeiden, dass der eine Kunde an die Daten des anderen kommt. Ausserdem möchte ich für einen neuen Kunden rasch und in reproduzierbarer Qualität eine neue Umgebung einrichten können.
Auf den ersten Blick ein klarer Fall für server-basierte Virtual-Machines. Aus den oben ausgeführten Gründen würde das Einrichten eines eigenen virtuellen Rechners für jeden Kunden jedoch die Wartung relativ aufwändig machen. Für den Betrieb einer einzigen Applikation ein eigenes Betriebssystem mitzuschleppen ist dann doch etwas schwergewichtig. Schliesslich möchte ich ja nur eine einzelne Applikation in einer möglichst isolierten Umgebung betreiben.
Container als Rettung
Die Linux Welt ist in Sachen Server-Anwendungen und insbesondere beim Thema Applikations-Virtualisierung schon länger einen Schritt weiter. Das "Docker" Open-Source-Projekt hat verschiedene bestehende Virtualisierungs-Konzepte gebündelt und damit in den letzten Jahren zu einem wahren Boom der Applikations-Virtualisierung unter Linux geführt.
Docker verpackt Applikationen in sogenannte Container. Ein Container ist eine virtuelle Umgebung, welche zentrale Dienste des Betriebssystems gemeinsam mit anderen Containern benutzt, die Applikation aber in Sachen Netzwerk- und Dateizugriff komplett von anderen Containern isoliert. Container lassen sich mit geringem Aufwand neu anlegen, starten und stoppen, eigentlich vergleichbar mit normalen Applikationen. Bloss eben in eigener virtualisierter Umgebung und darum weitgehend unabhängig von der Konfiguration auf dem Host-System. Schöne Sache. Dummerweise gab es Applikations-Container bisher nur für Linux.
Windows Server Container
Glücklicherweise hat Microsoft die Zeichen der Zeit erkannt und wir Windows-Entwickler müssen nicht mehr länger neidisch zu unseren Linux-Kollegen hinüberschielen. Seit Windows Server 2016 gibt es Container auch für die Windows Plattform.
Ein "Windows Server Container" ermöglicht es, eine Applikation zu virtualisieren, ohne dafür einen kompletten virtuellen Rechner aufsetzen zu müssen. Analog zu den Containern auf Linux gilt dabei, dass die virtualisierte Applikation keinerlei Oberflächen-Interaktionen machen darf, Container eignen sich also vor allem für Server-Applikationen.
Die Windows Container bieten dieselben Möglichkeiten wie ihre Linux Pendants, laufen aber natürlich nur auf Windows, da ja die Betriebssystem-Ebene nicht im Container enthalten ist. Für die Verwaltungs-Tools ist Microsoft eine Partnerschaft mit Docker eingegangen und hat die bestehenden Docker Command-Line Tools so angepasst, dass sie für Windows Container verwendet werden können. Wer Docker von Linux her kennt, findet sich bei der Verwaltung der Windows Container sofort zurecht.
Auch Windows Desktop Anwender kommen neuerdings auf ihre Kosten. Mit den aktuellsten Updates unterstützt auch Windows 10 auf dem Client Container. Da auch hier nur nicht-visuelle Applikationen unterstützt werden, ist das Feature wohl vor allem für Entwickler interessant, welche damit dieselbe Container Umgebung wie auf dem Server verwenden können.
Vertec Cloud Abo
Bei Vertec nutzen wir das Windows Container Feature seit kurzem für unser neues Cloud Abo Angebot.
Mit dem Cloud Abo können wir unseren Kunden die Vertec-Applikationen im Mietmodell zu monatlich kalkulierten Preisen anbieten. Die Bereitstellung der Applikationen in Containern ermöglicht uns den Betrieb mehrerer Kunden-Instanzen auf einem Windows Server und deren effiziente Verwaltung. Gleichzeitig stellt die Verwendung von Containern sicher, dass die Kundendaten vollständig voneinander isoliert sind.
Ohne Windows Container wäre es für uns einiges aufwändiger gewesen, ein solches Cloud Abo Angebot auf die Beine zu stellen.