Buchempfehlung – Programming Windows Azure

20. Juni 2010

a href=”http://www.amazon.de/Programming-Windows-Azure-Sriram-Krishnan/dp/0596801971/ref=sr_1_1?ie=UTF8&s=books-intl-de&qid=1277044760&sr=8-1″>book_cover_Programming_Windows_Azure Ich habe lange darauf gewartet, aber seit gut einer Woche halte ich nun das Buch “Programming Windows Azure” von Sriram Krishnan aus dem O’Reilly-Verlag in meinen Händen.
Sriram Krishan arbeitet aktuell im Windows Azure Team bei Microsoft und veröffentlichte mit “Programming Windows Azure” Anfang Juni 2010 sein Erstlingswerk. Man durfte also gespannt sein….
Mein erster Eindruck von Krishnan’s Buch ist: Der Mann weiß, wo von er spricht. Der Hauptteil des Buches beschäftigt sich zwar mit der Entwicklung von Windows Azure Anwendungen mittels des Windows Azure Toolset. Doch gibt Krishan dem Leser auch Einblicke in die Historie des Cloud Computing und einige sehr interessante Hintergrundinformationen zu Windows Azure. Einige dieser Informationen sind so verblüffend, so dass diese in mehreren kleinen Blog-Beiträgen zusammenfassen möchte. Ansonsten kann ich “Programming Windows Azure“ vom ersten Querlesen jedem Architekten und Entwickler, der sich mit Coud Computing im Zusammenhang mit Windows Azure beschäftigt, wärmstens empfehlen.
Im ersten Teil meiner zusammenfassenden Informationen aus Krishnan’s Buch möchte ich die Rolle der Hypervisor-Komponente von Windows Azure – nicht zu verwechseln mit Hyper-V von Windows Server 2008 – und die im Buch beschriebenen Optimierungen an Windows Server 2008 für Windows Azure darstellen.

Hypervisor

Windows_Azure_Onion_Pie
Wenn man sich die Schichten der Windows Azure Architektur als Zwiebelschalenmodell vorstellt, dann besteht diese im Kern aus der Hardware, der Hypervisor-Komponente und der Softwarekomponente Fabric, welche für das Management der Hardware, der Betriebssystem und der Anwendungsprogramm in der Cloud zuständig ist.
Von diesen Fabriken existieren verschiedenen Instanzen in unterschiedlichen geographischen Lokationen. Wenn man eine Windows Azure Anwendung published, kann man entscheiden, an welchen dieser Lokationen die jeweilige Anwendungskomponente laufen soll.

Was für eine Rolle spielt nun die Hypervisor-Komponente?

Wie man sich leicht vorstellen kann, wäre es fatal, wenn man in einem Data Center für Cloud Computing jede Anwendungskomponente auf dem nativen System laufen lassen würde. Die Gegenargumente sind hier unter anderem: Ressourcennutzung, Ausfallsicherheit, Systemoptimierung durch Verlagerung. Die Antwort auf diese Probleme heißt: Virtualisierung.

Dieser Ansatz ermöglicht es, eine oder mehrere Gäste-Betriebssysteme auf einem Host-Betriebssystem laufen zu lassen. Im Falle der Microsoft Data Center, ist dies ein für Windows Azure optimiertes Windows Server 2008 als Host-Betriebssystem und ein Standard Windows Server 2008 Enterprise als Gast-Betriebsumgebung.

Für die Steuerung der Virtualisierung ist nun die Hypervisor-Komponente (Virtual Machine Monitor (VMM)) zuständig. Der Hypervisor ist für die faire Verteilung der Ressourcen zwischen den virtuellen Rechnern zuständig. Um diese Aufgabe optimal erfüllen zu können, wurden von Intel und AMD verschiedene Architekturen in ihrer x86/x64-Prozessoren integriert. Ein typischer x86/x64-Prozessor hat vier verschiedene Privileg-Stufen (Rings). Betriebssystemkernprozesse laufen in der Regel in Ring 0 und Anwendungsprozesse in Ring 4. Wenn nun die Kernprozesse in Ring 0 laufen, wo sollte dann die höher privilegierte Komponente Hypervisor seine Arbeit verrichten? Intel und AMD bauten deshalb den neuen Modus “Root mode” in ihre neusten Prozessoren. Dieser Modus wird übrigens auch “Ring –1” genannt 🙂

Um diese zeitkritische Komponente nun noch performanter zu machen und auf die Belange von Cloud Computing zu optimieren, hat man sich im Windows Azure Team entschlossen, eine eigene Windows Server 2008 Hypervisor-Komponente zu entwickeln.
Mit einigen anderen Betriebsystem-Erweiterungen ist die Windows Azure-Basis also lediglich ein Windows Server 2008-nahes Betriebssystem.