Neben Platform-as-a-Services wie Cloud Foundry, Force.com, Google App Engine oder Red Hat OpenShift sollte man einen Service nicht vergessen: Windows Azure. Microsoft verfügt historisch bedingt über eine weltweit riesige Entwicklergemeinde, die nicht unterschätzt werden sollte. Die Microsoft Windows Azure Plattform wurde 2008 angekündigt und 2010 veröffentlicht. Seitdem hat Microsoft sein PaaS Angebot stetig um neue Funktionen erweitert.
Die Windows Azure Referenzarchitektur
Die Windows Azure Plattform wurde speziell für Entwickler konzipiert, um Anwendungen auf Basis von Microsoft Technologien wie bspw. .NET zu entwickeln. Dennoch können auch Java, PHP oder Node.js Entwickler die Umgebung für ihre Zwecke nutzen. Dazu bietet Microsoft ausreichend Tools und Plugins für Eclipse und anderer bekannter Entwicklungsumgebungen, um dieses zu ermöglichen.
Zunächst werden die einzelnen Komponenten der Windows Azure Platform betrachtet. Im Anschluss folgen dann ein paar Szenarien, wofür Azure genutzt werden kann.
Windows Azure
Bei Windows Azure handelt es sich um Herz und Seele der gesamten Azure Plattform. Es ist das Betriebssystem, dass auf jedem Server innerhalb der weltweit verteilten Rechenzentren der Azure Cloud läuft. Anders als die anderen Windows Versionen kann Windows Azure nicht käuflich erworben werden und ist speziell auf die Bedürfnisse der Cloud Infrastrukturen von Microsoft abgestimmt. Windows Azure abstrahiert dabei die darunterliegende Hardware und suggeriert somit, dass es sich dabei um lediglich eine Instanz des Betriebssystems handelt. Da das Betriebssystem über mehrere physikalische Server hinweg operiert, sorgt eine spezielle Schicht für die Koordination und Ausführung der jeweiligen Prozesse. Diese Schicht wird auch Fabric bezeichnet. Zwischen der Fabric und dem Windows Azure Betriebssystem befinden sich die virtuellen Maschinen (VM), auf denen der eigentliche Quellcode und die Anwendungen ausgeführt werden. Entwickler sehen jedoch nur zwei Services dieses Stacks, Windows Azure Compute und Windows Azure Storage.
Windows Azure Compute
Windows Azure Compute wird bspw. genutzt, wenn eine Anwendung auf Windows Azure ausgerollt werden soll. Dazu werden Anwendungen in drei möglichen Rollen ausgeführt, Web Role, Worker Role oder VM Role. Die Web Role wird genutzt um typische ASP.NET Web Anwendungen oder jede andere Art von CGI Web Anwendungen zu betreiben. Die Worker Role wird benötigt um langlaufende Prozesse, die über keine Benutzeroberfläche verfügen, auszuführen. Eine Web Role könnte in diesem Zusammenhang z.B. ein IIS Container und eine Worker Role ein Windows Service sein. Beide können auf mehreren Wegen miteinander kommunizieren, wobei der Quellcode innerhalb der Worker Role jedoch unabhängig von der Web Role läuft. Über die Worker Role können dann sowohl .NET Anwendungen als auch native COM Anwendungen auf Windows Azure portiert werden. Über die Worker Role unterstützt Windows Azure zudem Microsoft fremde Umgebungen wie PHP, Java und Node.js. Die VM Role ermöglicht es schlussendlich, Anwendungen innerhalb eines angepassten Windows Server 2008 Image auszuführen. Damit sind Unternehmen in der Lage Anwendungen auf Windows Azure zu portieren, die z.B. Abhängigkeiten zu Komponenten von Drittanbietern haben.
Windows Azure Storage
Um eine Anwendung ausführen zu lassen wird auf jedenfall Speicherplatz für die Konfiguration und weiterer Daten benötigt. Windows Azure Storage bietet hier drei unterschiedliche Möglichkeiten: Blobs, Tables und Queues.
Blobs sind dafür geeignet, um große binäre Objekte wie Bilder und Videos, Dokumente usw. zu speichern. Tables bietet einen skalierbaren Key/ Value basierten Speicher. Queues werden genutzt, um Nachrichten zuverlässig zwischen einzelnen Anwendungen zu übertragen. Daher sind Queues die beste Lösung, um eine Web Role und Worker Role miteinander kommunizieren zu lassen. Der Zugriff auf die Daten in Windows Azure Storage erfolgt per HTTP und REST.
Windows Azure Service Bus
Der Windows Azure Service Bus sorgt für eine nahtlose Integration von Services die sich innerhalb eines Unternehmens hinter einer Firewall und einem Service in der Cloud befinden. Damit wird quasi eine sicherer Brücke zwischen den klassischen on-Premise Anwendungen im Unternehmen und den Cloud Services hergestellt. Dazu werden die Services die sich hinter der Firewall oder dem NAT befinden bei dem Service Bus registriert, wodurch ein Cloud Service diese anschließend aufrufen kann. Der Service Bus abstrahiert den physikalischen Ort des Service, indem er eine URI bereitstellt, die jeder für den Aufruf nutzen kann.
Access Control Service
Bei dem Access Control Service handelt es sich um einen Mechanismus, der für die Absicherung der Cloud Services und Anwendungen genutzt wird. Dazu können auf eine sehr deklarative Art und Weise Regeln definiert werden, mit denen bestimmt wird, wie ein Cloud Service aufgerufen werden darf. Dabei werden eine Vielfalt von unterschiedlichen Identity-Management Infrastrukturen unterstützt. Der Access Control Service ermöglicht es bspw. Unternehmen ihre on-Premise Sicherheitsmechanismen der Active Directory mit den Cloud basierten Authentifizierung zu integrieren.
Windows Azure Caching
Windows Azure Caching stellt Anwendungen, die auf Windows Azure gehosted werden, einen In-Memory Caching Service zur Verfügung. Dieser vermeidet die Schreib/- und Lesezugriffe auf die Festplatte und ermöglicht den Anwendungen einen schnellen Zugriff auf die Daten aus einem High-Speed Cache. Der Cache kann mehrere Arten von Daten speichern, darunter XML, Binärdaten oder serialisierte CLR Objekte. Web Anwendungen die häufig nur lesende Zugriffe benötigen, können den Cache nutzen, um die Geschwindigkeit zu erhöhen.
SQL Azure
SQL Azure ist der Microsoft SQL Server in der Cloud. Anders als Azure Storage, das für das Speichern von unstrukturierten Daten genutzt wird, handelt es sich bei SQL Azure um eine vollständige Relationale Datenbank Engine. Sie basiert auf der selben Datenbank Engine wie der MS SQL Server und kann per T-SQL abgefragt werden. Auf Grund der Nähe zu MS SQL können on-Premise Anwendungen ohne weiteres auf SQL Azure zurückgreifen. Entwickler können mit ADO.NET oder ODBC API auf SQL Azure zugreifen. PHP Entwickler nutzen dazu die PHP API. Mit Microsoft SQL Azure Data Sync können Daten zwischen dem on-Premise SQL Server und SQL Azure synchronisiert werden. Dabei handelt es sich um eine sehr mächtige Funktion, um Datenknoten innerhalb der Cloud aufzubauen, die ständig mit den lokalen on-Premise Datenbanken synchronisiert werden. SQL Azure kann zudem exakt so behandelt werden wie ein gewöhnlicher Datenbank Server im eigenen Rechenzentrum. Da Microsoft hier allerdings für die Installation, Wartung und Verfügbarkeit des Datenbank Service zuständig ist, können sich Unternehmen darauf konzentrieren, den Service einfach nur zu nutzen.
Nun folgen ein paar Szenarien, die Ideal für die Nutzung der Microsoft Windows Azure Plattform sind.
Skalierbare Web Anwendungen
Da die Windows Azure Plattform auf den bekannten .NET und ASP.NET Plattformen basiert, ist es für Entwickler dieser Technologien einfach zu wechseln und Web Anwendungen kostengünstig auf Windows Azure zu betreiben. Damit erhalten Sie die Möglichkeit die Skalierbarkeit ihrer Web Anwendungen deutlich zu erhöhen ohne sich Gedanken über die dafür
notwendige Infrastruktur zu machen. Selbst PHP, Java oder Node.js Entwickler können von Azure profitieren.
Rechenintensive Anwendungen
Die Windows Azure Plattform kann für sehr prozess- und rechenintensive Anwendungen genutzt werden die gelegentlich eine große Menge an Rechenressourcen benötigen. Durch die Nutzung der Worker Role können Entwickler ihren Quellcode über mehrere Instanzen parallel ausführen lassen. Die entweder durch die Web Role oder der on-Premise Anwendung generierten Daten können anschließend der Worker Role via Azure Storage zugeteilt werden.
Zentraler Zugriff auf Daten
Wenn Daten für eine Vielzahl von Anwendungen, den Zugriff durch mehrere Browser, Computer und mobile Endgeräte zugänglich gemacht werden sollen, macht es Sinn, diese an einem zentralen Ort zu speichern. Windows Azure Storage ist hier eine gute Lösung, um Daten zentral zu speichern und zu pflegen sowie Desktop Anwendungen, Silverlight, Flash und AJAX basierten Web Anwendungen oder mobilen Applikationen bereitzustellen.
Hybride Anwendungen – verteilt in der Cloud und on-Premise
Es kann Bedingungen für die Erweiterung eines Teils einer Anwendung für die Cloud oder den Aufbau einer Cloud-Oberfläche für eine bestehende Anwendung geben. Durch die Nutzung des Service Bus und Access Control können on-Premise Anwendungen nathlos und sicher um bzw. in die Cloud erweitert werden. Dazu kann der Service Bus sowie eine weitere Technologie – Azure Direct Connect – dabei helfen, ein hybrides Cloud Szenario aufzubauen.
Cloud basierte Datenknoten
Mit Hilfe von SQL Azure können Unternehmen Datenknoten aufbauen, die den Zugriff durch externe Partner oder mobile Mitarbeiter ermöglichen. So könnte bspw. ein Unternehmen einen Teil seiner Daten in der Cloud bereitstellen, die ständig mit der lokalen Datenbank synchronisiert werden. Die Datenbank in der Cloud wird dann für B2B Partner für Abfragen und Bestellungen geöffnet. Hier helfen SQL Azure und SQL Azure Data Sync bei der Umsetzung so eines Szenarios.