Cloud Computing Anbietervergleich
„Compute“-Umgebung darstellt, auf der man verschiedene Rollen und Instanzen laufen lassen kann. Somit kann man Webanwendungen, Web Services und komplexe Tasks in dieser Umgebung ausführen. Ziel von Windows Azure ist es, ein Betriebssystem für die Cloud zur Verfügung zu stellen, das die Komplexität der Skalierung im Internet abnimmt. Der Softwareentwickler, der Anwendungen für Windows Azure entwirft, muss sich nicht mehr um Skalierung und Verfügbarkeit kümmern. Mit Windows Azure wird ein bereits sehr stark abstrahiertes „Betriebssystem“ zur Verfügung gestellt, das ein einfaches API hat.
Hinsichtlich der Entwicklungssprachen können auf Windows Azure .NET, PHP und Native Code (C++) ausgeführt werden. Da Windows Azure FastCGI von IIS 7 unterstützt, wäre es über Umwege sogar möglich, Java-Anwendungen zu hosten. Das wird jedoch von Microsoft nicht offiziell unterstützt und daher in diesem Kapitel nicht näher beschrieben. Grundsätzlich handelt es sich bei Windows Azure um eine Plattform, die Anwendungsentwicklung erlaubt, ein Angebot aus der PaaS-Ebene.
Die WebRole und WorkerRole
Die zwei wichtigsten Konstrukte von Windows Azure sind die WebRole und die WorkerRole. Bei der WebRole handelt es sich um eine Webanwendung, die entweder in Asp.NET oder in einer FastCGI-Sprache (PHP) entwickelt werden kann. Die WebRole eignet sich vor allem, um Webanwendungen zu erstellen, die man über IIS auch lokal so erstellen würde. Eine WorkerRole ist vergleichbar mit einem IIS7 (Internet Information Server) auf einem Windows-Server-2008-x64-System. Aktuell wird .NET in der Version 3.5 unterstützt. Ferner gibt es unterstützung für Native Code, Full Trust und User Mode.
Die WorkerRole wiederum ist spezialisiert auf Arbeitsabläufe. Im Normalfall würde man über die WorkerRole einen Geschäftsprozess abbilden. Eine Windows Azure WorkerRole wird einmal gestartet und läuft dann einen gewissen Prozess ab. Will man den Prozess am Laufen halten, muss man das mit einer Schleife tun. Auch hier kommt ein virtualisierter und abstrahierter Windows Server 2008 zum Einsatz. In vielen Fällen wird es wichtig, dass die Web- und WorkerRole zusammenarbeiten. In einem Onlineshop oder Ticketshop kann sich die WebRole speziell um die Bereitstellung der Website kümmern, wohingegen die WorkerRole den Versand der E-Mails, Generierung von Dokumenten und dergleichen erledigt. In Abbildung 1.22 ist die webbasierte, skalierbare Zusammenarbeit dargestellt.
Abbildung 1.22: Zusammenarbeit in der Cloud bei Windows Azure
Wie in Abbildung 1.22 ersichtlich, kümmert sich Windows Azure um das Load Balancing der virtuellen Maschinen und Netzwerklasten. Storage wird im nächsten Kapitel anhand eines Beispiels erklärt.
Damit der Abstraktionsgrad von Windows Azure hoch genug ist, werden sämtliche Einstellungen in Konfigurationsdateien geschrieben, die teilweise während der Ausführung der Anwendung abänderbar sind, etwa die Anzahl der virtuellen Maschinen oder die Storage-Accounts. Die Konfiguration besteht normalerweise aus den beiden Dateien ServiceDefinition und ServiceConfiguration . Der wesentliche Unterschied ist, dass die ServiceDefinition nicht ausgewechselt werden kann, anders als eine ServiceConfiguration . Werden mehr virtuelle Instanzen benötigt, werden sie in die ServiceConfiguration geschrieben.
Der Einstiegspunkt für jede Windows-Azure-Rolle ist der RoleEntryPoint . Die WorkerRole ebenso wie die WebRole erben von dieser Klasse. Erstellt man eine neue Asp.NET-Anwendung, fällt schnell auf, dass diese Klasse zusätzlich zu den Asp.NET-Projektdateien vorhanden ist. Der Erstellvorgang ist in Abbildung 1.23 dargestellt.
Abbildung 1.23: Eine neue Cloud-Anwendung in Visual Studio erstellen
In diesem Buch wird Asp.NET nicht gesondert beschrieben, da es den Umfang des Buches sprengen würde. Listing 1.3 stellt den oben beschriebenen RoleEntryPoint für die WebRole dar. In der vom Assistenten erstellten Anwendung sind zwei Methoden enthalten: Die erste Methode wird aufgerufen, sobald die Rolle gestartet wurde, und heißt OnStart . Die zweite Methode, RoleEnvironmentChanging , wird aufgerufen, wenn sich Konfigurationen in der Anwendung ändern –beispielsweise mehrere virtuelle Maschinen oder der HTTP-Endpunkt.
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
DiagnosticMonitor.Start(
"DiagnosticsConnectionString");
// For information on handling configuration
// changes see the MSDN topic at
Weitere Kostenlose Bücher