Überblick über die neue Technologie

Cloud Computing Windows Azure
Kommentare

Mit Windows Azure ist Microsoft im ganz großen Stil in das Thema Cloud Computing eingestiegen. Doch man hört noch immer oft die Frage, was denn Windows Azure nun wirklich ist. Von Microsoft wird es offiziell als „Betriebssystem“ für die Wolke bezeichnet. Doch was kann man sich darunter vorstellen? In diesem Artikel werden die technischen Details, wie auch die wirtschaftlichen Hintergründe für Windows Azure erklärt

Windows Azure sorgt mitunter auch deshalb für große Verwirrung, weil es die Begriffe „Azure Services Platform“ und „Windows Azure“ gibt. Die Azure Services Plattform ist ein Überbegriff für die Windows Azure, SQL Azure und AppFabric. In diesem Artikel geht es lediglich um Windows Azure. Windows Azure selbst reiht sich in die Plattform-as-a-Service-(PaaS)-Angebote ein. Hierbei handelt es sich um die mittlere Abstraktionsebene des Cloud Computings. Wesentlich abstrakter ist die Software-as-a-Service-(SaaS)-Ebene. Hierbei steht eine Anwendung in der Cloud zur Verfügung. Weniger abstrakt ist Infrastructure-as-a-Service (IaaS), bei der virtuelle Maschinen zur Verfügung stehen. Eine PaaS-Plattform bietet nun eine API, welche die Entwicklung und Bereitstellung von Anwendungen vereinfacht. Windows Azure bietet hier einiges an Möglichkeiten an. Die Anwendung(en) an sich können mit dem .NET Framework sowie mit Fast-CGI-Anwendungen (PHP) entwickelt werden. Hierbei unterscheidet man zwischen einer WebRole und einer WorkerRole, die später noch genauer definiert werden. Windows Azure bietet auch einen flexiblen Datenspeicher, den Windows Azure Storage. Hierbei handelt es sich um eine Message Queue, einen TableStorage und einen BlobStorage. Dies deckt sämtliche Szenarien ab, mit denen man in der Webanwendungsentwicklung beschäftigt ist. Den Windows Azure Storage kann man nicht nur von Webanwendungen ausgehend verwenden, sondern auch über mobile Anwendungen oder WPF-Anwendungen verwenden. Welche Möglichkeiten man mit dem Windows Azure Storage hat, wird später erläutert.

Aufgabengebiete für Windows Azure sind zum einen komplexe Webanwendungen, die wiederum als Software-as-a-Service-Lösung weiter verkauft werden können. Ferner kann man mit dem Windows Azure Storage verschiedenste Szenarien aufbauen: So könnte Windows Azure Storage verwendet werden, um Daten über mehrere Rechner synchron oder aktuell zu halten, Daten zu sichern oder zu verteilen (Abb.1).

Abb.1: Rollen und Storage in der Wolke
Abb.1: Rollen und Storage in der Wolke

Wann macht Cloud Computing eigentlich Sinn?

Um Cloud Computing zu verstehen, muss man die richtigen Anwendungsszenarien kennen. In vielen Fällen bietet Cloud Computing tatsächlich Kostenvorteile gegenüber klassischen Hosting-Lösungen. Gerechterweise muss jedoch auch festgehalten werden, dass Cloud Computing nicht ein Allheilmittel ist. In einigen Szenarien laufen Anwendungen in der Cloud bei Weitem nicht so kosteneffektiv wie in klassischen On-Premise-Lösungen.

Um klar zu stellen, bei welchen Anwendungstypen Cloud Computing tatsächlich Sinn macht, müssen zuerst die verschiedenen Typen von Anwendungsauslastungen klargestellt werden. Hierbei kann man sich auf drei Haupttypen konzentrieren: ständiges Wachstum, Belastungsspitzen und zeitlich begrenzte Anwendungen (Abb.2).

Abb. 2: Sinnvolle Cloud-Computing-Typen
Abb. 2: Sinnvolle Cloud-Computing-Typen

Bei dem ersten Typ geht man von ständigem Wachstum einer Webanwendung aus. Dies ist im Geschäftsumfeld sehr sinnvoll. Wächst die Plattform, wächst auch das Geschäft. Der Vorteil hierbei ist nicht nur die Kosteneinsparung. Werden neue Server benötigt, so bindet dies sehr viel Kapital. Dieses Kapital kann, wenn es durch Cloud Computing nicht gebunden ist, sinnvoll weiter investiert werden. Ferner ist kein Wartungsaufwand notwendig. Ein weiterer Vorteil ist, dass weitere virtuelle Maschinen sehr schnell allokiert werden können. Vergleicht man dies etwa mit der Aufstellung und Instandsetzung von Servern, vergeht hier meist sehr viel Zeit. Ein Beispiel für ein solches Wachstum sind soziale Plattformen wie Facebook und Twitter. Während Facebook die Datencenter noch intern wartet, ist Twitter gänzlich in der Cloud.

Der zweite Typ geht von Belastungsspitzen aus. Hierbei kann man wiederum von zwei Subtypen sprechen. Der erste Subtyp handelt von berechenbaren Belastungsspitzen, der zweite von nicht berechenbaren Belastungsspitzen. Subtyp eins kann eine Anwendung sein, die primär in einem Land benutzt wird. Hierbei könnte es sich um ein Portal der deutschen Regierung handeln. Die Belastung wäre wohl untertags am höchsten. Unberechenbare Belastungsspitzen können immer auftreten, zum Beispiel wenn eine größere Seite auf die eigene Anwendung verlinkt. Damit man diese Belastungsspitzen abdecken kann, benötigt man ein sehr flexibles System, wofür Cloud Computing überdurchschnittlich gut geeignet ist.

Das letzte Szenario ist jenes der zeitlich begrenzten Anwendungen. Hier wird viel Rechenleistung für eine begrenzte Zeit benötigt. Dies kann beispielsweise eine Registrierung für ein Event sein. Kurz vor dem Event wird die Auslastung am höchsten sein, nach dem Event wird diese stark nachlassen. Ein Real-life-Szenario ist hier jedoch schon wesentlich interessanter: Eines der größten Tageszeitungen der Welt hat vor einigen Jahren ihre gesamten Ausgaben digitalisiert. Hierbei mussten enorm große Datenmengen, die in gescannter Form vorhanden waren, indiziert werden. Für die Verarbeitung waren in etwa 100 virtuelle Maschinen zwei Tage lang im Einsatz. Bei einem Satz von 0,12 Cent für eine Compute-Hour macht dies in etwa 500 US-Dollar an Kosten. Müsste man sich für diese Aufgabe eigene Server kaufen, so würde dies beträchtlich teurer werden. Das Problem in diesem Fall war auch, das keine Serverkapazitäten zur Verfügung standen. Dies führe dazu, dass sehr viel Geld mit Cloud Computing gespart werden konnte. Natürlich sind hier keine Bandbreitenkosten oder Kosten für die Datenspeicherung miteinberechnet worden.

Die Web- und WorkerRole von Windows Azure

Da nun Sinn und Unsinn von Cloud Computing geklärt wurde, wollen wir uns an die zentralen Konzepte von Windows Azure machen. Neben dem Windows Azure Storage stellen die Web- und WorkerRole wichtige Elemente der Anwendungsentwicklung dar. Hierbei handelt es sich um eine Webanwendung (WebRole) oder eine Anwendung für komplexere Aufgaben (WorkerRole). Die WebRole kann ASP.NET, WCF oder FastCGI-Anwendungen wie PHP hosten. Die Entwicklung für eine WebRole unterscheidet sich kaum von jener von typischen ASP.NET-Anwendungen. Der einzige Unterschied ist, das zusätzliche APIs zur Verfügung stehen. Diese sind hauptsächlich für Maintenance und Storage-Operationen gedacht.

Etwas komplexer verhält es sich nun jedoch bei der WorkerRole. Diese bietet keinen „Anschluss“ nach außen. Eine WorkerRole hat meist die Aufgabe, komplexe Berechnungen einer WebRole abzuarbeiten. Möglichkeiten hierfür gibt es zu genüge, man denke nur an typische Vorgänge in einer Website wie E-Mail-Versand, die Generierung von Dokumenten verschiedener Typen und die Manipulation von Media-Dateien wie Bilder oder Videos.

Ferner kann dies durch weitaus komplexere (wissenschaftliche) Berechnungen ergänzt werden. Grundgedanke der WorkerRole ist es unter anderem, rechenintensive Vorgänge von der Website (WebRole) zu entfernen. Dadurch hat die WebRole mehr Möglichkeiten, sich auf dessen ursprüngliche Aufgabe, nämlich dem Anzeigen von Webinhalten, zu konzentrieren. Besonders bei großer Last kann dies die Website positiv in der Performance beeinflussen. Eine WorkerRole kann jedoch auch unabhängig von der WebRole eingesetzt werden. So würde sich die Abarbeitung (Analyse) großer Daten hervorragend für eine WorkerRole eignen. Präzise formuliert: Eine WorkerRole macht immer dann Sinn, wenn viel Arbeit für eine virtuelle Maschine notwendig ist. Web- und WorkerRole kommunizieren über eine Queue, die unter „Storage Konzepte von Windows Azure“ genauer beschrieben wird.

Eine Windows Azure WorkerRole hat, wenn sie neu erstellt wird, zu Beginn drei Funktionen. Diese Funktionen sind zum einem der Einstiegspunkt OnStart. Er wird aufgerufen, sobald die Rolle gestartet wurde. In dieser Funktion wird ferner ein Handler auf RoleEnvironmentChanging gesetzt. Dies tritt dann auf, wenn sich etwas an der Rolle geändert hat. Hierbei kann man auf neue Eigenschaften der Rolle reagieren. Dies kann zum Beispiel eine Veränderung der virtuellen Maschinen sein. Die Änderungen können während der Ausführung der Rolle auftreten. Eine weitere wichtige Methode ist die Run-Methode. Diese Methode ist der eigentliche Einstiegspunkt für die Anwendungsentwicklung. In der Methode ist eine Schleife, die für die gesamte Laufzeit der Anwendung läuft. Typischerweise würde man hier abfragen, ob Arbeitsaufträge vorhanden sind. Dies könnte aus einer MessageQueue kommen. Ergebnisse eines Arbeitsvorgangs können beispielsweise als Download in einem Blob Storage oder als Tabellendaten im Table Storage angezeigt werden. Listing 1 stellt eine leere WorkerRole dar.

Listing 1: Windows Azure Worker Role

public class WorkerRole : RoleEntryPoint
    {
        public override void Run()
        {
            Trace.WriteLine("WorkerRole1 entry point called", "Information");

            while (true)
            {
                Thread.Sleep(10000);
                Trace.WriteLine("Working", "Information");
            }
        }

        public override bool OnStart()
        {
            ServicePointManager.DefaultConnectionLimit = 12;

            DiagnosticMonitor.Start("DiagnosticsConnectionString");

            RoleEnvironment.Changing += RoleEnvironmentChanging;

            return base.OnStart();
        }

        private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
        {
            if (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange))
            {
                e.Cancel = true;
            }
        }
    }
  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -