Microsoft Azure

Aus Cloud Computing Workshop
Wechseln zu: Navigation, Suche

Windows Azure ist eine Cloud Computing-Plattform der Firma Microsoft. Die Cloud-Lösung basiert auf einer umfangreichen Auswahl von Services, die die Entwicklung, das Hosting und die Skalierung von Anwendungen in Microsofts Datencentern ermöglicht. Windows Azure kann dabei von Entwicklern genutzt werden, um darauf eigene Anwendungen zu betrieben oder aus eigenen Anwendungen gezielt Cloud Services zu nutzen.

Grundlegendes Konzept von Windows Azure [1][Bearbeiten]

Windows Azure hält eine Reihe von Cloud Services bereit. Diese umfassen Dienste wie eine Laufzeitumgebung für eigene Cloud Services, Speicher, Datenbanken und eine Massagingplattform. Entwickler erhalten darüber hinaus eine gewisse Zahl von Entwicklerressourcen, die es ihnen erlauben, aus ihren gewohnten Entwicklungsumgebungen über Projektvorlagen, Deploymenttools und Klassenbibliothekeneigene Cloud-Services zu schreiben. Diese können letztlich in der Cloud betrieben werden. Microsofts Cloud Computing-Lösung zeichnet sich vor allem durch deren Offenheit und Flexibilität aus. Dabei steht es Entwicklern frei, Anwendungen zu schreiben, die letztendlich in der Cloud auf Windows Azure betrieben werden und somit die Windows Azure Dienste nutzen können oder Anwendungen außerhalb der Cloud punktuell auf Dienste von Windows Azure zugreifen zu la]ssen. Das heißt, dass Anwendungen nicht zwangsläufig auf Azure betrieben werden müssen, um Windows Azure Services zu nutzen. Windows Azure bietet auch die Möglichkeit, eine Anwendung schrittweise in die Cloud zu migrieren und dabei punktuell verschiedene Services zu nutzen. Das Azure Portal läuft auf einer Silverlight Umgebung und liefert Zugriff auf die Azure Services. Die Zugriffskontrolle erfolgt hierbei zertifikatbasiert. Azure Plattform.jpg



Technische Konzepte und Services[Bearbeiten]

Core Services[Bearbeiten]

Compute[Bearbeiten]

Compute Übersicht [2][Bearbeiten]

Der Compute Service bietet eine skalierbare Umgebung für eigene Entwicklungen und ermöglicht die Verwendung verschiedener Werkzeuge und Programmiersprachen wie .NET, C++, PHP, Ruby oder Python. Windows Azure stellt zudem Projektvorlagen bereit, mit denen eigene Cloudanwendungen erstellt werden können. Der Compute Service ist dabei der Dienst, in dem die Anwendungen auf der Cloud ausgeführt werden. Hierbei wird über den Compute Service der Application Layer der Anwendung realisiert. Grundsätzlich lässt sich sagen, dass auf Windows Azure alles betrieben werden kann, was auch lokal ausführbar ist, also bspw. Windows Server 2008 und alle Dienste des Betriebssystems. Windows Azure umfasst nicht nur Cloud Services, sondern stellt dem Entwickler auch zwei Umgebungen zur Verfügung, die beide gleichwertig sind. Zum einen die Produktionsumgebung, auf der die Anwendungen letztendlich ausgeführt werden und die Stagingumgebung, die eine Testumgebung darstellt. In der Stagingumgebung können die entwickelten Anwendungen lokal getestet werden. Die beiden Umgebungen können auf Knopfdruck getauscht werden, so dass aus der Staging- die Produktionsumgebung wird und umgekehrt. Der Load Balancer vertauscht dabei entsprechend die beiden Umgebungen. Der Tausch der beiden Umgebungen erleichtert es unter anderem eine neue Version einer Anwendung herauszugeben. So kann beispielsweise der Tausch wieder rückgängig gemacht werden, falls Fehler in der Anwendung auftreten. Somit lässt sich auf die letzte Version problemlos zurückgeschalten.

Load Balancer [3][Bearbeiten]

Der Load Balancer ermöglicht den Zugriff auf die in die Cloud migrierte Anwendung. Dabei lässt der Load Balancer nur Traffic für zuvor geöffnete Ports frei, wie bspw. bei Webanwendungen Port 80. Der Load Balancer balanciert die einzelnen eingehenden Requests auf die entsprechenden Instanzen, auf denen die Anwendung installiert ist. Er stellt zudem sicher, dass die Anzahl der gewählten Instanzen immer zur Verfügung steht und betrieben wird. Das heißt, wenn zum Beispiel bei einem Hardwaredefekt eine Instanz ausfällt, wird automatisch eine weitere Instanz hinzugeschaltet.

Load Balancing.jpg


Azure Storage [4][Bearbeiten]

Übersicht Storage[Bearbeiten]

Der Windows Azue Storage Service ist die Zusammenfassung aller Non-SQL-Datenservices in Windows Azure und ermöglicht die Speicherung verschiedener anderer Datenkonstrukte. Dabei werden in diesem Service Speicherdienste angeboten, die man aus klassischen Betriebssystemen kennt. Alle Speichervarianten werden als Dienste angeboten. Das heißt, der Speicher wird nutzungsgerecht in Rechnung gestellt, man bezahlt also entsprechend der tatsächlichen Nutzung. In diesem Fall werden der verwendete Speicherplatz und ausgeführte Speichertransaktionen in Rechnung gestellt.

Microsoft gewährt für alle Speicherdienste eine Verfügbarkeit von 99,9%. Dabei sorgt Microsoft dafür, dass die Daten sicher abgelegt und ständig hochverfügbar sind. Pro Subscription können maximal 500 Terabyte abgelegt werden. Ferner bietet Windows Azure eine 3-fach-Speicherung aller Inhalte. Das heißt, dass bei allen Speicherdiensten die Inhalte intelligent auf die weltweit 24 verteilten Rechenzenten verteilt werden und somit nicht alle auf einem Server liegen. Windows Azure bietet die drei grundlegenden Speichermöglichkeiten Table Storage, Blob Storage und Queue Storage an.

Table Storage[Bearbeiten]

Der Table Storage stellt keine Datenbank, sondern einen Record Store, der nicht SQL-basiert ist, dar. Im Table Storage können semistrukturelle Datenbestände gespeichert werden. Dabei kommen Tabellen zum Einsatz, die flexibel im Aufbau sind. Das heißt, jede Tabellenzeile kann einen unterschiedlichen Aufbau haben. Innerhalb der Tabellen befinden sich Entitys, auf die zugegriffen werden kann. Jede Tabelle besitzt einen Primärschlüssel.

Blob Storage[Bearbeiten]

Der Blob Storage stellt ein Filesystem da, in dem Dateien abgelegt werden können und steht für Binary Large Object. Der Blob Speicher ermöglicht es, große Binärdaten abzulegen. Der Blob Speicher wird ferner unterteil in Block-Blobs und Page-Blobs. Die Block-Blobs ermöglichen einen blockweisen Upload der Daten, die erst nach vollständigem Upload zusammengefasst werden. Dies eignet sich beispielsweise, wenn lediglich eine schwache Netzwerkverbindung vorhanden ist und die Verbindung während dem Upload unterbrochen werden könnte. So müsste der Upload bei einem Abbruch nicht komplett wiederholt werden, sondern nur ab dem letzten übermittelten Block. Beim Page-Blob werden die Daten nicht in Blöcke unterteilt, sondern es wird ein Speicherbereich reserviert. Jeder Blob besteht dabei aus einem Array von Pages. Auf den Speicherbereich kann flexibel zugegriffen werden. Ferner können die Inhalte des Blob Speichers weltweit über das Content Delivery Network gecached werden. Die Daten werden dabei weltweit vorgehalten, so dass ein Benutzer auf den Blob aus dem jeweils nächstgelegenen Rechenzentrum zugreifen kann. Azure Drives Ein Azure Drive ist ein Aufsatz auf einen Blob-Speicher. Es stellt eine mit NTFS formatierte Virtual Hard Disk dar, die in einem Page Blob Storage gespeichert ist. Ein Drive kann in einer Windows Azure Compute Instanz gemounted werden und dient dort als persistenter Speicher. Dabei kann allerdings nur eine Instanz Schreib- und Lesezugriffe bekommen, wohingegen mehrere Instanzen reine Lesezugriffe erhalten können. Ein Instanz kann wiederum bis zu 16 Drives dynamisch mounten. Die Maximalgröße eines Drives beträgt 1 Terabyte.

Queue Storage[Bearbeiten]

Der Queue Storage ist eigentlich nicht zur wirklichen Datenspeicherung vorgesehen, sondern um Nachrichten zwischen Anwendungen und Diensten zu übermitteln. Er ermöglicht den Versand von Nachrichten zur losen Kopplung von Kommunikationspartnern. Das heißt, ein Sender stellt eine Nachricht in den Queue ein und ein oder mehrere Empfänger können diese über das Queueing System ablesen. Dabei müssen die Nachrichten nicht sofort abgerufen werden, sondern werden ebenfalls 3-fach gesichert gespeichert. Die Nachrichtenzustellung erfolgt nach dem „best effort first-in-first-out“-Prinzip, das heißt, dass die erste Nachricht die eingestellt wurde, zuerst ausgelesen wird.

Datenbank[Bearbeiten]

SQL Azure [5][Bearbeiten]

SQL Azure ist ein Cloud-Service in Windows Azure für Datenverarbeitung in der Cloud. SQL Azure arbeitet im Gegensatz zu den Storage Services mit einer relationalen Datenbank und ermöglicht somit eine sichere und hochverfügbare, relationale Datenspeicherung. In der leistungsfähigen Datenbank können Daten mehrfach gespeichert sowie sicher abgelegt werden und gegen externe Angriffe abgesichert. SQL Azure kann nach Bedarf aktiviert und genutzt werden und wird tagesaktuelle abgerechnet. Darüber hinaus stellt SQL Azure Integrationsdienste für Hybridszenarien bereit, bei denen Teile in der Cloud und Teile lokal gehalten werden. So kann eine Anwendung von einem lokalen Rechner beispielsweie auf SQL Azure in der Cloud zugreifen. SQL Azure umfasst letztendliche mehrere Services, die im Folgenden beschrieben werden.

SQL Azure Database [6][Bearbeiten]

SQL Azure Database Service stellt ein relationales Datenbanksystem in der Cloud dar und ist kompatibel zu SQL Server, sodass SQL basierte Tools wie Mgmt. Studio und Technologie wie .net oder JAVA eingesetzt werden können. Der Datenbank ist eine Firewall vorgelagert, die zunächst geschlossen ist und für gewünschte IP Adress ranges geöffnet werden muss. Man unterscheidet zwischen zwei Datenbankeditionen, die primär durch verschiedene Maximalgrößen charakterisiert werden. Bei Nutzung einer dieser Datenbanken wird nur der Speicherplatz, der verwendet wurde, abgerechnet. Durch das Anlegen einer Datenbank werden im Hintergrund drei Replikationen angelegt. Eine Single Primary Datenbank ist dabei verantwortlich für die eigentliche Kommunikation, d.h. Zugriffe finden immer nur auf diese eine statt. Die beiden anderen Datenbanken dienen für Failover-Mechanismen, d.h. wenn eine Datenbank ausfallen sollte, wird automatisch auf eine andere Datenbank umgeschaltet und eine neue Dritte hochgefahren und entsprechend synchronisiert.

SQL Azure DataSync [7][Bearbeiten]

SQL Azure DataSync ist ein Service mit dem Datenbanken synchronisiert werden können. Dazu wird ein Data Sync Hub eingerichtet über den die Synchronisation konfiguriert wird. Hierbei lässt sich einstellten in welche Frequenz synchronisiert wird, welche Tabellen davon betroffen sein sollen, in welche Richtung synchronisiert wird und bestimmte Einträge können gefiltert werden. Dieser Service ist auch mit Datenbanken möglich, die auf SQL Server lokal laufen und ggf. hinter Firewalls stehen. Hierbei kommen sogenannte Client Sync Agents zum Einsatz, die lokal installiert werden und die Kommunikation mit dem DataSync Hub übernehmen.

SQL Reporting Service [8][Bearbeiten]

SQL Reporting Service erlaubt es, auf Basis von SQL Azure Datenbankberichte zu erstellen. Die Bericht können mit SQL Server Business Intelligence development studio konfiguriert und über ein Report Control in Windows Azure Anwendungen nutzen, anzeigen und Clients zur Verfügung stellen.

Rollen und Instanzen [4][Bearbeiten]

Übersicht Rollen und Instanzen[Bearbeiten]

Anwendungen für Windows Azure werden in der Entwicklungsumgebung (Visual studio) geschrieben und mit Hilfe eines installierten Software Development Kits für verschiedene Sprachen (bspw. Java) können Projektvorlagen genutzt werden, um den Cloud Service vorzubereiten, zu entwickeln und in einem Deployment Paket freizugeben. In diesem Zusammenhang muss sich der Anwender mit der Frage auseinandersetzen, wie die Anwendung in der Cloud ausgeführt werden soll. Der Anwender muss dies konfigurieren, sodass Windows Azure die Konfiguration der virtuellen Maschinen übernehmen kann, die die Anwendung ausführen. Im Kontext von Windows Azure sind Cloud Services aus Komponenten aufgebaut, die Rollen genannt werden. Jedem Cloud Service muss mindestens eine Rolle zugewiesen werden, die dann auf der virtuellen Maschine ausgeführt wird. Mehrere Rollen können nicht in einer Maschine ausgeführt werden, jede Rolle wird immer in einer Instanz ausgeführt.

Konfiguration [9][Bearbeiten]

Rollen und Instanzen werden im Deployment Paket konfiguriert, das sich aus einer Paket- (cspkg) und einer Konfigurationsdatei (cscfg) zusammensetzt. Eine Definitionsdatei(csdef) in der Paketdatei beschreibt den Aufbau des Services, der aus mindestens eine Rolle aufgebaut ist. Darüber hinaus wird die Größe der Instanzen bestimmt, Endpoints konfiguriert und Properties definiert. In der Konfigurationsdatei wird die Anzahl der Instanzen pro Rolle definiert , Werte für die festgelegten Properties festgelegt und ist zur Laufzeit ohne Redeployment änderbar. Eine Rolle ist eine Komponente des Cloud Services und ein Service muss mindestens eine Rolle enthalten. Eine Änderung der Rolle erfordert einen Redeploy wohingegen Updates pro Rolle möglich sind.

Instanzen einer Rolle haben alle die gleiche Größe, lediglich zwischen den Rollen kann sich die Größe der Instanzen unterscheiden. Eine Änderung der Größe erfordert ein Redeployment, da dies anfangs in der Definitionsdatei definiert wurde. Um ein SLA von 99,95% Verfügbarkeit zu erhalten, müssen mindestens zwei Instanzen pro Rolle betrieben werden. Die Konfiguration einer virtuellen Maschine, die für eine Rolle zur Ausführung kommt, wird durch die Größe (in der Definitionsdatei), die Art der virtuellen Maschine und die Version der VM bestimmt.

Arten von virtuellen Maschinen[Bearbeiten]

Bei Web Rollen ist die virtuelle Maschine mit einem Gastsystem, einem Management Layer und einem Internet Information Server ausgestattet und eignet sich für asp. Net Anwendungen. Zur Konfiguration muss vom Entwickler nur noch der der eigene Code der Anwendung hinzugefügt werden. Die Worker Rolle beinhaltet ebenfalls die Inhalte der Web Rolle mit Ausnahme des Internet Information Servers. Beispielsweise könnte hiermit ein Hintergrundprozess einer Webanwendung definiert werden, der von einer Web Rolle aufgerufen wird . Bei VM Rollen wird das Image der VM vom Entwickler bereitgestellt, d.h. das Gastsystem und der Code werden vom Entwickler bereitgestellt, der sich so seine eigene Maschine zusammenstellen kann.

Service Traffic Manager [3][Bearbeiten]

Service Traffic Manager ist eine Komponente der Plattform, die es erlaubt, den Datenverkehr auf vers. Instanzen eines Services verteilen. In diesem Zusammenhang spricht man auch von einem Load Balancing Service, der eingehenden Traffic auf Services verteilt. Soll eine Anwendung weltweit hochverfügbar sein und soll jeder User optimal darauf zugreifen können, kann ein Service in mehreren Instanzen bzw. unterschiedlichen Rechenzentren weltweit verteilen. Mit Hilfe des Traffic Managers kann der Menge der Instanzen eine virtuelle Adresse gegeben werden. Wenn diese Adresse aufgerufen wird, verteilt der Traffic Manager die Zugriffe auf Instanzen anhand von Policies, die vom Entwickler definiert bzw. konfiguriert wurden. Jede Policy erhält einen DNS Namen (virtuelle Adresse) und enthält unterschiedliche Regeln nach denen er IP Adressen vergibt. Wenn ein Request auf einen DNS Namen einhergeht, gibt der Traffic Manager die Adresse eines registrierten Services zurück, der diese Policy erfüllt. Im Folgenden werden abschließend die verschiedenen Arten von Policies aufgeführt.

Leistung

Erkennt den Standort des Benutzerdatenverkehrs und leitet diesen an den im Hinblick auf die Netzwerkleistung besten gehosteten Dienst weiter, der gerade verfügbar ist.

Failover

Es kann eine sortierte Liste gehosteter Dienste erstellt werden. Der Datenverkehr wird dann an den höchsten Dienst in der Liste weitergeleitet, der gerade verfügbar ist.

Roundrobin

Verteilt Datenverkehr gleich auf alle gehosteten Dienste, die beim Traffic Manager registriert und verfügbar sind.

Kopplung der lokalen IT mit Azure[Bearbeiten]

Ausgangspunkt[Bearbeiten]

Ausgangspunkt aller Überlegungen ist häufig, ob die lokale IT um die Cloud ergänzt oder abgelöst werden soll . Es gibt verschiedene Anwendungen, die eine maximale Kontrolle über die Umgebung und eine hohe Indivualisierbarkeit verlangen. Dennoch entstehen viele Investitionskosten , bspw. für die Anschaffung oder Miete neuer Server oder Stromkosten für Klimatisierung. Dies sind Faktoren, die in der Cloud nicht anfallen. Es können beliebig viele Rechenressourcen auf Zeit gemietet werden und gut skaliert werden. Durch eine standardisierte Multimandatenumgebung spart der Provider Kosten und kann IT wahrscheinlich wesentlich günstiger anbieten als es in der lokalen IT möglich wäre. Alle Ressourcen sind in der Cloud flexibel nutzbar, d.h. wenn die Ressourcen nicht mehr benötigt werden, können diese einfach abgeschaltet werden.

Auf Anwendungsebene [10][Bearbeiten]

Der Service Bus Service der Azure Plattform bietet die Möglichkeit auf Anwendungsebene, d.h. beim Schreiben von Anwendungscode, zwischen lokaler IT und Cloud eine Verknüpfung herzustellen. Dabei registrieren sich die Services bzw. Anwendungen beim Service Bus und bekommen einen Endpunkt zugewiesen, über den andere Kommunikationspartner auf diesen Service zugreifen können. Mit Hilfe des Service Bus kann zudem über Firewall hinweg kommuniziert werden. Eine Kommunikation zwischen Cloud und der lokalen IT, insbesondere Szenarien, in denen von der Cloud in die lokale IT Aufrufe ausgeführt werden, ist sehr schwierig. Beispielsweise müsste die Firewall geöffnet oder zunächst mit dem Systembetrieb kommuniziert werden. Dies ist nicht erforderlich, wenn sich der lokale Service beim Service Bus registriert und die Cloud Komponenten über den Service Bus mit lokalen Services kommunizieren kann. Technisch betrachtet registriert sich die Webanwendung beim Service Bus und erhält einen Endpunkt (Adresse) mit dem der Service aufgerufen werden kann. Der Client ruft folglich nur den Endpunkt auf, der den Aufruf weiter an den entsprechenden Service leitet.

Im Service Bus können die folgenden Betriebsarten und Dienste genutzt werden:

• Relay: One-way (n:1), Peer-to-Peer (1:1)

• Broker: Asynchrone Kommunikation, Nachrichten-Pufferung, Publish-Subscriber(n:m)

Service Bus.gif

Auf Datenebene[Bearbeiten]

Der SQL Azure Data Synch ermöglicht eine Kopplung auf Datenebene. Der SQL Azure DataSync ermöglicht die Synchronisation von Datenbankinhalten(siehe dazu SQL Azure DataSync).

Auf Netzwerkebene [11][Bearbeiten]

Der Azure Connect Service ermöglicht es Windows Azure Anwendungen in der Cloud mit lokalen Endpunkten kommunizieren zu lassen. Diese Endpunkte werden über einen Endpunkt Agent bereitgestellt und bieten die Möglichkeit auf den lokalen Computer auf Netzwerkebene zuzugreifen. Hier besteht also eine Verbindung von Windows Azure Komponenten mit einem einzigen lokalen Rechner, auf dem der Endpoint Agent installiert wird. Ferner besteht eine sichere Maschine-zu-Maschine Verbindung, d.h. es ist via IP Sec abgesichert. Im Hintergrund wird der Service Bus Service eingesetzt, sodass keine Änderungen an der Netzwerkinfrastruktur notwendig sind. Folglich muss nur nur der Endpoint Agent installiert werden, der den Zugriff in beide Richtungen ermöglicht. Ein Beispiel wäre hier der Zugriff einer Web Rolle in der Cloud auf eine lokale Datenbank.

Abrechnungsmodelle [12][Bearbeiten]

Windows Azure kann unter zwei verschiedenen Abrechnungsmodellen bezogen werden. Dabei stehen eine nutzungsbasierte Abrechnung, die Pay-As-You-Go Variante und eine Abrechnung per Abonnement zur Verfügung. Darüber hinaus bietet Microsoft eine kostenlose Testversion (3 Monate) an.

Pay-As-You-Go[Bearbeiten]

Das Pay-As-You-Go Abrechnungsmodell ist eine flexible Preisgestaltungsoption. Hierbei sind keine Vorauszahlungen erforderlich und der Kunde geht keine Abonnementverpflichtung ein. Der Kunde bezahlt lediglich für die Ressourcen und Cloud Services, die er tatsächlich nutzt. Bei dieser Bezahlmethode erfolgt eine Abrechnung von Internet-, Arbeitskraft- und VM-Serverressourcen auf Stundenbasis. Im Gegensatz dazu werden Speicher, Datenbank, Bandbreite, Zwischenspeicherung und CDN-Features auf Basis der verwendeten Speicherkapazität in Gigabyte bzw. auf Monatsbasis. Für einige Ressourcen werden dabei allerdings auch Kosten pro Transaktion abgerechnet.

Abonnement[Bearbeiten]

Neben der Pay-As-You-Go Abrechnungsmethode steht auch die Option des Abschlusses eines Abonnements zur Verfügung. Microsoft bietet ein Abonnement über sechs Monate an und gewährt Rabatte auf die Gebühren im Vergleich zur Pay-As-You-Go Methode. Dabei erhält der Kunde einen Rabatt in Höhe von 20% auf Server- und Datenbankressourcen und bis zu 44% für Speicherressourcen. Erfolgt eine Nutzung über das im Abonnement festgelegte Ressourcenkontigent hinaus, rechnet Microsoft für alle weiteren EInheiten mit den üblichen Tarifen der Pay-As-You-Go Variante ab.

Fallstudien[Bearbeiten]

T-Mobile [13][Bearbeiten]

Geschäftssituation

Der Mobilfunkprovider T-Mobile wollte eine neue mobile Applikation anbieten, die es Familienmitgliedern ermöglicht, in Kontakt zu bleiben. Dabei Stand T-Mobile vor der Herausforderung einer knappen Deadline. Der Aspekt Zeit war in diesem Projekt das größte Problem. Anforderungen in diesem Projekt waren für T-Mobile, Freiheit bezüglich der Entwicklung zu haben und sich keine Gedanken über Serverwartung, Speichergeräte und andere Infrastrukturkomponenten machen zu müssen. Die Sicherung von Kundendaten war eine weitere Priorität und die Anwendung musste zudem zuverlässig und immer erreichbar sein.

Lösung

Als Lösung für die gestellten Anforderungen entwickelte T-Mobile die Micro Social Network Seite Family Room. Diese Applikation sollte die Kommunikation innerhalb Familien erleichtern, außerhalb großer Social Networks. Dabei setzte T-Mobile die Family Room Applikation auf Windows Phone 7 und der Windows Azure Plattform auf. T-Mobile setzte somit einen Fokus auf Microsoft Technologien unter der Verwendung von Windows Azure, Windows Phone 7 und Visual Studio. T-Mobile entschied sich für Windows Azure, da hiermit eine Lösung schnell realisiert und somit das Zeitproblem bewältigt werde konnte. Ferner konnte mit Azure ein sicherer Schutz der Kundendaten geboten werden, durch die Nutzung von HTTPS, Transport Layer Security und zertifikatbasierter Authentifizierung. Letztlich konnte der Family Room Launch innerhalb von sechs Wochen realisiert werden.

Funktionen von Family Room

Family Room ist eine Mobiltelefonapplikation, die eine Micro Social Network darstellt. In diesem Social Network können Familienmitglieder unter anderem Aktivitäten untereinander koordinieren, Fotos und andere Informationen austauschen sowie Kalenderinformationen aktualisieren. Family Room ist eine webbasierte Anwendung, die auf Windows Azure implementiert wurde und Tasks ausführt wie das Senden von Push-Meldungen zu Telefonen, Geräte authentifizieren und neue Benutzer registrieren. Die Daten sind dabei auf der SQL Azure Datenbank gelagert und es wird zusätzlich der Service SQL Azure Analytic Tools verwendet.

Nutzen

Gewonnene Nutzen durch die Realisierung von Family Room mit Hilfe von Windows Azure sind unter anderem folgende. Vor allem konnte eine beschleunigte Produkteinführungszeit realisiert werden. Dies konnte durch ein abgestimmtes Set von Tools (Windows Phone 7, Windows Azure, Visual Studio) erreicht werden. Ein Vorteil war zudem, dass sich die Entwickler vollends auf die Softwareentwicklung konzentrieren konnten, anstatt sich um physikalische Server kümmern zu müssen. Ein weiterer Nutzen ist die starke Sicherheit, die die Family Room Anwendung bietet. Mit der Windows Azure Plattform kann T-Mobile seinen Kunden einen hohen Schutz anbieten, was durch Private Key Encryption und Datenzentren mit multiplen Sicherheitskontrollen und Zertifikaten gewährleistet werden kann.

Volvo [14][Bearbeiten]

Geschäftssituation

Im Rahmen der Veröffentlichung des neuen Films der Twillight-Serie startete der schwedische Automobilbauer Volvo als offizieller Sponsor eine Marketingkampagne mit Hilfe eines interaktiven Gewinnspiels. Die Idee war, dass die Nutzer ein Flashgame spielen, um einen neuen Volvo XC60 zu gewinnen. Die bestehende Infrastruktur konnte jedoch nicht die erforderliche Skalierbarkeit gewährleisten und eine Erweiterung wäre sehr kostenintensiv gewesen. Zur Sicherstellung der Verfügbarkeit des Flashgames benötigte Volvo eine Infrastruktur, die weltweit zur Verfügung steht, um den Benutzern aus aller Welt ein zuverlässiges und leistungsstarkes Spiel zu präsentieren. Die Infrastruktur musste schnell skalierbar sein, um den eingehenden Traffic schnell zu verteilen und die Hochverfügbarkeit des Spiels zu gewähren.

Lösung

Volvo entschied sich dafür, eine Cloud-basierte Lösung zu implementieren. Gemeinsam mit erfahrenen Beratern wurde die Anwendung, die auf Microsoft .NET Framework und der Programmiersprache C++ basiert, auf der Plattform von Windows Azure entwickelt. Mit Hilfe des Microsoft Visual Studio 2010 Professional Development Systems konnte die Anwendung innerhalb von zwei Wochen realisiert werden. Das interaktive Spiel wurde in Web-Rollen in Windows Azure implementiert, die ebenfalls die Web-Service-Anfragen behandelten, die während des Spiels ausgelöst wurden. Soweit erforderlich, fügte Volvo schnell neue Web Rollen hinzu und skalierte hoch, um den Traffic aufzufangen. Die Daten aus diesen Service-Anfragen wurden im Queue Storage in Windows Azure gespeichert. Worker-Rollen in Windows Azure verarbeiteten die Service-Anforderungen, während die Benutzer-und Gameplay-Daten in Windows Azure Tabellen Speicher gespeichert wurden. Volvo konnte weiterhin schnell den Speicher durch Hinzufügen neuer Tabellen skalieren, um Daten für möglichst viele Teilnehmer zu speichern. Um die erforderliche Systemleistung zu erreichen, nutzte man die Mircosoft-Rechenzentren auf der ganzen Welt. So lief das Onlinespiel auf Rechenzentren in den USA und Europa, sodass die Nutzer das Spiel auf der physisch nächst gelegener Instanz spielten.

Das Flashgame

Das Ziel des interaktiven Spiels ist es, das Auto in einem Kurs in einem Labyrinth in der schnellsten Zeit und auf dem kürzesten Weg zu finden. Sobald ein Kurs abgeschlossen ist, werden die Kontaktinformationen und Spielergebnisse temporär gespeichert, um einen Vergleich mit allen anderen Spielern zu ermöglichen. Die ersten 40.000 Spieler in der Rangliste wurden eingeladen, einen neuen,anderen Kurs zu spielen und dabei Quizfragen zu dem neuen Film und Volvo zu beantworten. Die Topergebnisse werden abschließend in eine Zeichnung für den Hauptpreis eingetragen.

Nutzen

Volvo war durch die Verwendung von Windows Azure in der Lage, seine Website zu skalieren, um den hohen Datenverkehr während der Marketingkampagne aufzufangen. Dabei entstand dem Unternehmen nur ein Bruchteil der Kosten, die bei der Verwendung einer lokalen Lösung angefallen wären, um die erforderliche Verfügbarkeit zu realisieren.

Anwendungsbeispiele[Bearbeiten]

In nur 7 Schritten in die Microsoft Cloud[Bearbeiten]

Das erste Anwendungsbeispiel beschreibt das Bereitstellen eine eigenentwickelten Anwendung in die Windows Azure Cloud. Dies soll keine detaillierte Anleitung oder ein How-To sein, vielmehr zeigt der Artikel wie einfach es ist eine lokale Anwendung mit Windows Azure cloudfähig zu machen. Vorbemerkung: Ein neues Projekt ist in der Entwicklungsumgebung Visual Studio 2010 erstellt. In diesem Fall handelt es sich um eine ASP.NET MVC 3 Anwendung. Zu Demonstrationszwecken wird eine einfache Hallo-Welt-Website verwendet. Die Beispielanwendung verwendet 2 Instanzen, profitiert somit automatisch vom Load-Balancing und ist ausfallsicher.


Alternativ kann hier ein ausführliches Youtube-Video aufgerufen werden, welches vom Projektteam erstellt wurde.


1.) Das Projekt ist in Visual Studio 2010 angelegt. Mit einem Rechtslick auf das Projekt erscheint das Kontextmenü. Hier wird "Add Windows Azure Deployment Project" ausgewählt. Daraufhin erstellt Visual Studio 2010 die benötigten Konfigurationsdateien für Windows Azure.
WinAzureBsp1 1.JPG


2.) Mit einem Rechtsklick auf die Konfigurationsrolle (siehe roter Kasten im rechten Bild, oberstes Symbol [HalloWeltCloud1]) erscheint das Dialogfenster zum Konfigurieren der Cloud-Variablen bzw. -Einstellungen. Dort werden 2 Instanzen konfiguriert.
WinAzureBsp1 2.JPG


3.) In der Zwischenzeit wurde der Quellcode erfolgreich lokal getestet bzw. gedebugged und soll nun in die Cloud geladen werden. Dafür wird das Entwicklungsprojekt vom Debug-Modus auf den Release-Modus gestellt (siehe roter Kasten im oberen Bild) und schließlich über das Kontextmenü erstellt.
WinAzureBsp1 4.JPG


4.) Nachdem das Ganze erstellt wurde, kann ein Package erstellt werden. Dieses wird dann in die Cloud hochgeladen. Der Schritt erfolgt erneut über das Kontextmenü (siehe obere Abbildung). Nach kurzer Zeit erstellt Visual Studio 2010 zwei Dateien, die Projektdatei und daneben die Konfigurationsdatei, und öffnet im Windowsexplorer den Menüpfad (siehe untere Abbildung).
WinAzureBsp1 5.JPG
WinAzureBsp1 6.JPG


5.) Es wird über einen Browser in das Dashboard von Windows Azure gewechselt. Dort wir ein neuer gehosteter Dienst erstellt und konfiguriert. Die URL, die Deployment-Region und der Bereitstellungsname sind anzugeben. Danach können die im vorherigen Schritt erstellen Dateien ausgewählt und hochgeladen werden (siehe roter Kasten). Ein Klick auf "OK" startet das Deployment in die Cloud. Nach kurzer Wartezeit befindet sich die Eigenentwicklung schon in der Cloud. Noch befindet sich der gehostete Dienst in der Staging-Umgebung, sprich der Testumgebung.
WinAzureBsp1 7.JPG


6.) Mit einem Klick lässt sich über das Dashboard der gehostete Dienst in die Produktionsumgebung stellen. Daraufhin ist unsere kleine Hallo-Welt Anwendung öffentlich zu erreichen.
WinAzureBsp1 8.JPG


Ein Guestbook mit Upload von Bildern - Beispiel für eine Storage-Anwendung[Bearbeiten]

Das zweite Anwendungsbeispiel bringt zusätzlich ein sogenanntes Speicherkonto zur Anwendung, um Daten abzulegen. Bei der Anwendung handelt es sich um ein Gästebuch in dem sich Besucher der Website eintragen können. Zusätzlich kann eine Bilddatei dem Gästebucheintrag hinzugefügt werden. In diesem Zuge kommt das Rollenkonzept von Windows Azure zum Tragen.

  • Die Webrolle stellt einen virtuellen Servers zur Verfügung auf dem ein vorkonfigurierter IIS samt .NET Framework läuft. Diese VM übernimmt die Rolle des Frontends.
  • Die Workerrolle stellt das Backend dar, genauer gesagt den .NET Anwendungsserver. Hier wird der .NET Code ausgeführt und anschließend an die Webrolle zur Darstellung geschickt.


Der Screenshot zeigt die ASP.NET Anwendung, besser gesagt die Webrolle, welches das Frontend zur Verfügung stellt. Der Besucher kann einen Eintrag im Gästebuch hinterlassen sowie eine lokale Bilddatei hochladen.

WinAzureBsp2 1.png


Eine Bilddatei in beliebig hoher Auflösung kann gewählt werden. Nach dem Abschicken kommt die Workerrolle zum Einsatz. Diese verkleinert im Hintergrund das Bild auf die richtige Größe, damit eine Vorschau im Gästebuch angezeigt wird.

WinAzureBsp2 2.png


Um das Ganze in der Microsoft Cloud zu realisieren, muss neben einem gehosteten Dienst auch eine Speicherkonto angelegt werden. Dieses Speicherkonto übernimmt das Sichern der Gästebucheinträge bzw. der hochgeladenen Bilder. Anschließend wird erneut ein gehosteter Dienst erstellt, welchem das entsprechende Speicherkonto per Servicedatei übergeben wird.

WinAzureBsp2 3.PNG


So kann mithilfe von Windows Azure in wenigen Schritten ein öffentlich verfügbares Gästebuch deployed werden, welches die hochgeladenen Bilder und Einträge vollkommen autonom in der Cloud speichert und verwaltet. Der Cloudbenutzer muss sich um keinerlei Infrastruktur kümmern, sprich weder physische Maschinen noch Switches oder korrekte Netzwerkkonnektivität müssen konfiguriert und gewartet werden. Es muss auch keine Datenbank zum Speichern der Bilder eingerichtet, konfiguriert und abgefragt werden. Diese Aufgabe übernimmt das Speicherkonto in der Cloud. Für eine Isolierung der Anwendung, Redundanz und automatisches Load Balancing ist durch die Cloud gesorgt.


Abschließend zeigt der nachfolgende Screenshot das Konzept von Webrolle und Workerrolle. Beide VMs sind mit je 2 Instanzen in der Microsoft Cloud eingerichtet (siehe roter Kasten).

WinAzureBsp2 4.PNG


Remote Desktop mit Windows Azure-Rollen[Bearbeiten]

Mithilfe von Remotedesktopdiensten kann auf jede im Windows Azure veröffentlichte Rolle und dessen im Hintergrund laufendes Betriebssystem zugegriffen werden. Der Zugriff dient allerdings ausschließlich der Problembehandlung oder der Anwendungsentwicklung, da sich die virtuellen Computerinstanzen auf die auf ihr laufenden Azure-Anwendungen der jeweiligen Rolle beziehen. Für Testzwecke und der Ausführung anderer Clientanwendungen ist die Funktion nicht konzipiert.

Um eine Remoteverbindung zu ermöglichen, muss bei der Veröffentlichung eines Projektes der Remotedienst und seine Variablen konfiguriert werden. Hierzu gehört unter anderem die Erzeugung eines Zertifikates. Dieses unterscheidet sich allerdings von den Zertifikaten, die für andere Windows Azure-Vorgänge verwendet werden. Das Remotezugriffszertifikat muss über einen privaten Schlüssel verfügen. Dieses muss folgend im Windows Azure Platform Management Portal unter „Zertifikate“ des jeweiligen gehosteten Dienstes hochgeladen werden. Ferner müssen im Veröffentlichungsdialog ein Benutzername und Kennwort festgelegt werden, welcher automatisch in der virtuellen Maschine als Benutzer angelegt wird. Ist das Projekt inkl. genannter Einstellungen veröffentlicht wurden, kann im Verwaltungsportal von Azure die entsprechende Rolleninstanz zur Verbindung ausgewählt und über den Button „Verbinden“ in der Gruppe "Remotezugriff" verbunden werden.

Mit Ausführung der RDP-Datei öffnet sich ein weiterer Authentifizierungsdialog, in welchem zuvor definierte Anmeldeinformationen einzutragen sind. Mit erfolgreichem Login öffnet sich eine Windows Server 2008 Umgebung in der als Administrator die weitere Problembehandlung oder Entwicklung ermöglicht wird [15].

Remoteauth.jpg


Migration bzw. Erweiterung existierender Web-Anwendungen[Bearbeiten]

Ein weiteres Einsatzszenario besteht darin Applikationen, welche nicht von Beginn an für Windows Azure entwickelt wurden, als gehosteten Cloud Dienst bereitzustellen. Dies gilt bspw. für High Performance Computing-Applikationen, welche plattformunabhängig einfacher umzusetzen sind. Eine Migration oder Erweiterung existierender bzw. die komplette Neuentwicklung von Web-Anwendungen stellen dahingehend Lösungsszenarien für Windows Azure dar. Um dies zu ermöglichen, erlaubt es Microsoft mit der Verwendung des Rollentyps „VM Rolle“ eigene Windows Server Images in der Cloud bereitzustellen [16].

Mit der VM-Rolle können die Konfiguration und die Aktualisierungen des Betriebssystems für den virtuellen Computer selbst vorgenommen werden. Wohingegen eine Webrolle und eine Workerrolle auf einem virtuellen Computer ausgeführt werden, entspricht die VM-Rolle der virtuellen Maschine. Hierdurch kann auf die Betriebssystemvorgänge voll zugegriffen werden. Dies ist bspw. sinnvoll bei umfangreichen nicht skriptbaren Installationen oder insofern Setupprobleme auftreten könnten [17][18]. Mit der Verwendung der VM Rolle werden also wie bei der Web- und Workerrolle die Vorteile der automatisierten Serviceverwaltung (Load Balancing und Failover) mit Ausnahme der Patchverwaltung des Gastbetriebssystems behalten. Ein weiterer Vorteil ist, dass bevor Anwendungen nach Azure migriert werden, entsprechende Installation und Tests in der lokalen virtuellen Maschine erfolgreich abgeschlossen werden können (vgl. MSDN). Somit reduzieren sich auch die Kosten für Anwendungs-Changes und ein schneller Zugriff für die Anwender wird gewährleistet [19][20].

Windows-Applikationen, welche im Image und darauffolgend in der Cloud bereitgestellt werden sollen, müssen allerdings „stateless“ sein. Dies bedeutet, dass die Anwendungen keinerlei Daten oder Einstellungen auf dem Betriebssystem-Image speichern bzw. abhängig von ihnen sein dürfen. SharePoint, Terminal Server und SQL Server sind zustandsbehaftete Anwendungen, sodass diese in der Standard VM-Rolle nicht unterstützt werden (vgl. MSDN). Um auch zustandsbehaftete Anwendungen verfügbar zu machen, ist i.V.m. der VM-Rolle ein Azure SQL Service bzw. ein Windows Azure Blob Storage zu nutzen. Ohne zusätzlichen Aufwand können Anwendungen wie bspw. eine Webserver-Farm, ein Media Streaming Server, ein High Performance Compute-Cluster betrieben werden [16]. Es ist möglich mehrere identische Instanzen für eine stabile Anwendung verfügbar machen [21].

Vhd.jpg

Einige intern gehostete Applikationen können mithilfe der VM role und SQL Azure oder Azure Blob Storage migriert werden Um Anwendungen nach Microsoft Azure zu migrieren, zu erweitern oder Neuentwicklungen durchzuführen, bedarf es gemäß dem Anwendungsbeispiel einiger Voraussetzungen. Microsoft Windows Azure ist das Cloud Computing Betriebssystem und baut auf die Technologie von Microsofts Windows Server 2008. Dahingehend können nur die Betriebssysteme Windows Server 2008 R2 Enterprise und Windows Server 2008 R2 Standard (nur Englisch) für die lokale virtuelle Maschine genutzt werden [22]. Microsoft empfiehlt die Verwendung von Hyper-V-Manager als lokale Virtualisierungslösung, wobei auch VMWare bzw. Virtual Machine eingesetzt werden können. Nachdem das Image installiert wurde, sind die Windows Azure-Integrationskomponenten zu implementieren. Im Anschluss daran können alle individuellen Anpassungen inkl. komplexer Installationen am System vorgenommen werden. Abschließend wird das hochzuladende Serverabbild mit dem Sysprep Tool vorbereitet. Dabei wird das Serverabbild generalisiert und zur Duplizierung vorbereitet. Schließlich kann das Serverabbild auf einer oder mehreren VM-Rolleninstanzen in Windows Azure bereitgestellt werden kann [23]. Die erzeugten VHD-Dateien, welche das Serverabbild darstellen, sind mit dem Befehlszeilentool CSUpload in Windows Azure hochzuladen. Zudem müssen im Azure Verwaltungsportal entsprechende Zertifikate hinzufügt werden, um auf den zu erstellenden gehosteten Dienst auch zugreifen zu können. Während des Bereitstellungsprozesses muss auf die Verwendung der VM Rolle geachtet werden [24]. Per Remote Desktop kann anschließend auf das vorkonfigurierte Betriebssystemimage zugegriffen werden [25].

Instant Messaging via Worker Rolle[Bearbeiten]

Webrollen in Windows Azure unterstützen die Protokolle HTTP und HTTPS bis zu deren Endpunkten. Um verbindungsbezogene Anwendungen mit anderen TCP/IP Protokolle und Ports zu implementieren kann die Workerrolle genutzt werden, wobei direkt und ohne Queues kommuniziert werden kann.

Im Anwendungsbeispiel wird auf einer Workerrolle ein WCF (Windows Communication Foundation) Service realisiert, welcher interne und externe TCP-Endpunkte (Clients) überwacht. Der Service erlaubt es den Benutzern sich unter einem wählbaren Anmeldenamen anzumelden, Nachrichten an andere Nutzern zu senden und zu empfangen sowie weitere angemeldete Benutzer zu sehen. Mit Windows Azure kann die Instanzenanzahl der Workerrollen je nach Bedarf festgelegt werden, was wiederum den Betrieb in unterschiedlichen Knoten bzw. Netzwerken gleichzeitig ermöglicht. In dem Anwendungsbeispiel unterhält jede Instanz seine eigene Liste mit Sessions (s.u. Online Users). Dadurch sind Benutzer in der Lage sich mit den gleichen Workerrollen zu verbinden und zu kommunizieren [26].

Chat.jpg

Einzelnachweise[Bearbeiten]

  1. Azure Plattform - Übersicht – microsoft.com. Abgerufen am 19. Mai 2012.
  2. http://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-1002-01.mspx Compute Service Webcast – microsoft.com. Abgerufen am 21. Mai 2012.
  3. 3,0 3,1 http://msdn.microsoft.com/de-DE/library/windowsazure/hh744833.aspx#BKMK_FLB Traffic Manager und Load Balancing – microsoft.com. Abgerufen am 09. Mai 2012. Referenzfehler: Ungültiges <ref>-Tag. Der Name „Traffic_Manager“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert.
  4. 4,0 4,1 http://msdn.microsoft.com/de-de/library/ee924681.aspx Azure Speicherdienste – microsoft.com. Abgerufen am 19. Mai 2012. Referenzfehler: Ungültiges <ref>-Tag. Der Name „Azure_Storage“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert.
  5. http://msdn.microsoft.com/de-de/library/windowsazure/gg619386 SQL Azure – microsoft.com. Abgerufen am 10. Mai 2012.
  6. http://msdn.microsoft.com/de-de/library/ee336279 SQL Azure Database – microsoft.com. Abgerufen am 10. Mai 2012.
  7. http://msdn.microsoft.com/de-de/library/hh456371 SQL Azure DataSync – microsoft.com. Abgerufen am 10. Mai 2012.
  8. http://msdn.microsoft.com/de-de/library/gg430130 SQL Reporting Service – microsoft.com. Abgerufen am 19. Mai 2012.
  9. http://msdn.microsoft.com/de-de/library/hh369931.aspx Konfiguration – microsoft.com. Abgerufen am 30. Mai 2012.
  10. http://msdn.microsoft.com/de-de/library/ee732537 Service Bus – microsoft.com. Abgerufen am 14. Mai 2012.
  11. http://msdn.microsoft.com/de-de/library/gg445026 Azure Connect – microsoft.com. Abgerufen am 26. Mai 2012.
  12. http://www.windowsazure.com/de-de/pricing/purchase-options/ Kaufoptionen – windowsazure.com. Abgerufen am 15. Mai 2012.
  13. http://www.microsoft.com/casestudies/Windows-Azure/T-Mobile-USA/Mobile-Operator-Speeds-Time-to-Market-for-Innovative-Social-Networking-Solution/4000008598 T-Mobile Fallstudie – microsoft.com. Abgerufen am 30. Mai 2012.
  14. http://www.microsoft.com/casestudies/Windows-Azure/Volvo-Car-Corporation/Volvo-Unleashes-Creativity-Engages-One-Million-Visitors-with-Cloud-Based-Campaign/4000008490 Volvo Fallstudie – microsoft.com. Abgerufen am 30. Mai 2012.
  15. http://msdn.microsoft.com/de-de/library/windowsazure/gg443832.aspx Verwenden von Remotedesktop mit Windows Azure-Rollen – microsoft.com. Abgerufen am 21. Mai 2012.
  16. 16,0 16,1 http://blogs.technet.com/b/wolke/archive/2010/11/02/neu-in-windows-azure-vm-role.aspx Neu in Windows Azure: VM Role – technet.com. Abgerufen am 16. Mai 2012.
  17. http://msdn.microsoft.com/de-de/library/dd163896.aspx'Windows Azure-Platform – microsoft.com. Abgerufen am 17. Mai 2012.
  18. http://msdn.microsoft.com/de-de/library/windowsazure/gg671911.aspx'Vorteile beim Verwenden einer VM-Rolle in Anwendungen – microsoft.com. Abgerufen am 17. Mai 2012.
  19. http://blogs.technet.com/b/stbnewsbytes/archive/2010/11/30/microsoft-delivers-windows-azure-platform-updates.aspx#_sf_id=2.1338388954.5160'Microsoft delivers Windows Azure Platform updates – technet.com. Abgerufen am 16. Mai 2012.
  20. http://sharepoint360.de/2010/12/16/microsoft-erweitert-azure-und-macht-es-windows-kompatibler/'Windows Azure: Mit neuen Funktionen noch kompatibler zu Windows-Server – technet.com. Abgerufen am 19. Mai 2012.
  21. http://msdn.microsoft.com/de-de/library/windowsazure/gg671911.aspx'Vorteile beim Verwenden einer VM-Rolle in Anwendungen – microsoft.com. Abgerufen am 21. Mai 2012.
  22. http://technet.microsoft.com/de-de/library/gg433107?ocid=otc-f-de-jtc--'Übersicht über die VM-Rolle in Windows Azure – microsoft.com. Abgerufen am 17. Mai 2012.
  23. http://msdn.microsoft.com/de-de/library/gg433121.aspx'Erste Schritte beim Entwickeln eines Serverabbilds für eine VM-Rolle – microsoft.com. Abgerufen am 22. Mai 2012.
  24. http://technet.microsoft.com/de-de/library/gg671908'Erste Schritte beim Hochladen einer VHD für eine VM-Rolle in Windows Azure – microsoft.com. Abgerufen am 22. Mai 2012.
  25. http://msdn.microsoft.com/en-us/gg502178'Virtual Machine Role – microsoft.com. Abgerufen am 20. Mai 2012.
  26. http://msdn.microsoft.com/en-us/gg457887' Worker Role Communication – microsoft.com. Abgerufen am 22. Mai 2012.