Aus dem Kurs: Cloud Computing lernen: Compute – VMs, Container, Serverless

Konzept und Funktion von VMs

Einer der wohl bekanntesten Cloud-Services und für viele auch der erste Cloud-Service, der überhaupt genutzt wird, sind virtuelle Maschinen. Und in diesem Video wollen wir uns mal anschauen, wie virtuelle Maschinen in der Cloud eigentlich funktionieren und welches Konzept dahinter liegt. Grundsätzlich klären wir noch mal ganz kurz: Was sind eigentlich virtuelle Maschinen? Man spricht hier oft auch vom sogenannten "Gast"-Betriebssystem. Denn diese virtuellen Maschinen werden betrieben auf einem Host. Das heißt, es gibt irgendeine zugrundeliegende Hardware, die wir benutzen. Und dann haben wir mehrere Komponenten, die so eine virtuelle Maschine erzeugen, nämlich die eigentliche virtuelle Maschinenhülle. Zu der gehört natürlich eine Festplatte, in der beispielsweise unser Betriebssystem installiert ist. Da gehören Netzwerkkomponenten dazu. Und so weiter und so fort. Das Ganze macht dann eben dieses virtuelle Gastbetriebssystem. Ansonsten gehen wir erst mal davon aus, dass eine virtuelle Maschine die gleichen Funktionen hat wie ein eigentlicher physischer Rechner. Und man sagt so gerne auch: "Eine VM ist eine VM ist eine VM." Das heißt also, ob wir uns eine virtuelle Maschine im eigenen Rechenzentrum anschauen oder eine virtuelle Maschine in der Cloud, macht erst mal keinen großen Unterschied. Bei virtuellen Maschinen befinden wir uns hier in diesem blauen Bereich. Wir haben also Virtualisierung und Betriebssystem. Und das ist genau der Scheidepunkt bei Infrastructure as a Service, wo die Virtualisierungsschicht noch vom Provider bereitgestellt wird, ab dem virtuellen Betriebssystem wir aber die Verantwortung übernehmen müssen. Und wenn wir dieses Bild mal ein bisschen weiter abstrahieren, dann haben wir eigentlich unten drunter mit Netzwerk, Storage und Servern eine Hardwareschicht, die wie auch immer geartet ist. Wir haben dann das Betriebssystem, was eben virtualisiert auf einer Virtualisierungsplattform läuft, und oben drauf haben wir in irgendeiner Form eine Applikation. Das kann jetzt eben eine Middleware sein, das kann aber vielleicht auch eine Enterprise-Applikation sein. Und genauso sieht ja jeder physische Server aus. Das heißt, ich habe eine Hardware, darauf installiere ich ein Betriebssystem und darauf betreibe ich meine Applikation. Bei virtuellen Maschinen ist es jetzt also so, dass wir immer noch die Hardware haben, wir aber irgendwo eben diesen Hypervisor benutzen. Und dieser Hypervisor erlaubt uns dann, mehrere Betriebssysteme auf der gleichen Hardware zu betreiben und auf diesen Betriebssystemen mehrere Applikationen. Und damit das Ganze funktioniert, braucht es auch hier noch ein Host-OS, also ein Basis-Betriebssystem. Und deswegen spricht man eben bei den virtuellen Maschinen auch von Gästen. Wir haben den Host des Servers und die Gäste des Servers, die eben auf diesem Host-OS und auf dem Hypervisor laufen. Ja, virtuelle Maschinen kommen mit einer ganzen Menge Vorteile daher. Wir haben nämlich die hohe Individualität als großes Merkmal, denn wir können bestimmen, wie diese virtuelle Maschine aussehen soll. Wir können die Ressourcen zuteilen. Das heißt also, wie viel CPU-Leistung, wie viel Arbeitsspeicher, welche Festplatten, welche Netzwerkkonfiguration wollen wir haben? Und wir können natürlich auch alles innerhalb der VM festlegen. Das heißt, welches Betriebssystem möchten wir einsetzen? Möchten wir das patchen? Möchten wir das absichern und was darf damit überhaupt passieren? Wir haben also die volle Kontrolle und auch das volle Management. Das heißt, wenn wir bestimmte Neuerungen zum Beispiel nicht annehmen wollen, dann können wir das aktiv steuern. Dadurch, dass wir die Hardware konfigurieren und auch bestimmte Dienste im Server selbst konfigurieren, haben wir einen direkten Einfluss auf die eigentliche Performance unseres Systems. Und wir können natürlich auch dafür sorgen, dass wir unsere Ressourcen optimieren. Das heißt, wenn wir vielleicht eine Maschine zu groß erstellt haben, dann können wir sie jederzeit kleiner machen. Oder aber umgekehrt: Wenn die Anforderungen steigen, dann können wir jederzeit auch mehr Ressourcen dazupacken. Und das bringt uns eben die notwendige Flexibilität, die wir im Businessalltag doch so oft brauchen. Virtuelle Maschinen kommen aber auch mit kleineren Nachteilen daher. Zum einen gibt es nämlich auf dem Host, auf dem ja mehrere Betriebssysteme laufen, durchaus auch mal Performance-Schwankungen. Man spricht da auch gerne vom "Noisy Neighbor"-Effekt. Das heißt, ich habe ein anderes Betriebssystem, was auf dem gleichen Hypervisor läuft, der aber eine unheimlich laute, also sehr ressourcenfordernde Anwendung betreibt. Und das führt eben dazu, dass vielleicht für mich nicht die volle Performance zur Verfügung steht. Wir haben einen gewissen Effizienz- und Performanceverlust durch den Overhead des eigentlichen Basis-Betriebssystems, des Host-OS und natürlich auch der Virtualisierungsschicht. Da kommt es aber tatsächlich auch darauf an, wie der Cloud-Provider das gelöst hat. Man findet beispielsweise in Microsoft Azure heute Technologien wie Azure Boost und FPGA-Karten, die einen Direktzugriff auf die Hardware erlauben und damit eben diesen Overhead reduzieren. Man hat eben den Managementaufwand, der zum einen natürlich ein Vorteil ist, weil ich selbst steuern kann, was ich manage, der kann, aber eben gleichzeitig auch ein Nachteil sein, weil ich eben dieses Management auch übernehmen muss. Das heißt, der Cloud-Provider übernimmt für mich nicht automatisch das Backup, das Patching, das Updaten meiner Systeme, sondern das muss ich tun. Da hilft mir die Cloud erst mal noch gar nichts. Und ein wichtiger Punkt natürlich auch: Ich habe die vollen Ressourcenkosten, denn das ist mein Server. Ich habe die CPU-Kapazität und die Arbeitsspeicher-Kapazität gebucht, und damit bezahle ich die natürlich auch vollständig, auch inklusive Betriebssystem, unabhängig davon, ob ich die nun wirklich nutze oder ob ich sie eigentlich nicht nutze.

Inhalt