XING: https://www.xing.com/profile/Holger_SirtlLinkedIn: http://de.linkedin.com/in/hsirtl
In Gesprächen über Azure werde ich häufig gefragt, für wen Azure wirklich relevant ist und wer sich damit jetzt beschäftigen sollte. Letztlich kommen hier zur Beantwortung Argumente zum Tragen die für Cloud Computing im Allgemeinen gelten, aber auch Argumente für Microsofts Plattform Azure im speziellen.
In Cloud Computing werden IT Funktionen über standardisierte Schnittstellen auf einer massiv skalierbaren Umgebung unter Einhaltung festgelegter Service Level bereitgestellt. Der Nutzer derartiger IT Funktionen muss sich nicht mit Fragen des Softwarebetriebs auseinander setzen. Es liegt in der Verantwortung des Plattformanbieters, auch bei steigender Last für die Einhaltung der Service Level zu sorgen. Für Softwareanbieter bietet dieses Konzept den Vorteil, einer großen Zahl von Anwendern relativ flexibel und schnell IT Funktionen anbieten zu können. Für die Skalierung sorgt der Plattformanbieter.
Möglichkeiten für Anwenderunternehmen
Für Unternehmen bietet der Einsatz von Azure Cloud Services eine Reihe von Vorteilen:
Die Entscheidung, IT Funktionen lokal zu betreiben oder als Service zu nutzen, bezieht sich hierbei sowohl auf ganze Anwendungen (z.B. lokaler SharePoint vs. Hosted SharePoint von einem Hoster vs. SharePoint Online von Microsoft) wie auch auf Anwendungsteile (siehe hierzu auch "Möglichkeiten für Softwareentwickler"), die im Unternehmen entwickelt werden.
Möglichkeiten für Softwareentwickler
Die Nutzung bzw. Das Angebot von IT Funktionalitäten über eine Cloud Plattform bietet für Softwareentwickler also eine Reihe von Vorteilen. Diese können über verschiedene Szenarien erzielt werden (siehe Abbildung 1):
Abbildung 1: Möglichkeiten für Softwareanbieter
Erweiterung bestehender Anwendungen um Cloud Services
Um von den Möglichkeiten einer Cloud Plattform zu profitieren,müssenAnwendungennicht komplett neu geschrieben werden. Bereits der punktuelle Einsatz von Cloud Services an bestimmten Stellen einer Softwareanwendung, kann Vorteile bieten. So kann es sinnvoll sein, einzelne Oberflächenelemente durch Webdienste bereitstellen zu lassen, oder (z.B. aus Gründen der Skalierbarkeit) für einzelne Komponenten einer Anwendung auf die Nutzung von Diensten der Cloud Plattform zu setzen. Beispiel: Nutzung von SQL Services für die Datenspeicherung einer Anwendung, die ansonsten auf den Geräten der Awender läuft.
Betrieb ganzer Anwendungen auf Azure
Neben dem Betrieb einzelner Anwendungsteile auf Azure, besteht aber natürlich auch die Möglichkeit die Anwendung vollständig auf Azure zu betreiben. Zur Entwicklung derartiger Anwendungen stehen für Visual Studio im Rahmen des Software Development Kits (SDK) für Azure Projektvorlagen zur Verfügung. Ergebnis sind dann hoch skalierbare und hoch verfügbare Web Services oder Webanwendungen, auf die Nutzer über Standardschnittstellen (HTTP via Browser bzw. SOAP, REST, XML aus eigenen Anwendungen) zugreifen können, ohne dass Installationen auf den Endgeräten der Nutzer erforderlich sind.
Zusammenstellung neuer Anwendungen aus vorhandenen Services
Nicht immer müssen Anwendungen komplett neu erstellt werden. Mitunter besteht auch die Möglichkeit, Anwendungsfunktionalität über die Zusammenführung bestehender Services bereitzustellen. Diese bestehenden Services können Teile der Azure Plattform sein, aber auch Services von weiteren Entwicklern, die über Standardschnittstellen zugreifbar sind.
Durchgängigkeit der Plattform im Falle von Azure
Die Azure Plattform bietet im Vergleich mit anderen Cloud Plattformen den Vorteil, dass sie im Grunde auf die gleiche Technologiebasis setzt, die auch zur Entwicklung lokal betriebener (Client- oder Server-)Anwendungen zur Verfügung steht. Entwickler können mit Visual Studio die gleiche Programmierumgebung verwenden. Dies erleichtert die Wahlfreiheit hinsichtlich dessen, welche Komponenten für den lokalen Betrieb beim Anwender und welche Komponenten als Cloud Service umgesetzt werden, immens.
Software-plus-Services mit Azure
Mit der Azure Plattform erweitert Microsoft den Handlungsspielraum für IT-Entscheider (IT-Leiter, Softwarearchitekten, Entwickler) deutlich. Sie erhalten als zusätzliche Option, IT-Funktionen aus der Cloud zu beziehen bzw. dort bereitzustellen. Für den Zugriff stehen hierbei Standardtechnologien (HTTP, SOAP, REST, XML) zur Verfügung. Hierüberkann auf eigene Anwendungen, Azure Services aber auch auf Anwendungen und Web Services von Partnern, die alle auf Azure betrieben werden, zugegriffen werden. Für das Angebot von Cloud Services steht mit Visual Studio und den Azure SDKs eine leistungsfähige Entwicklungsumgebung (die eine lokale Testumgebung umfasst), und auf Azure eine hoch skalierbare, hoch verfügbare Ausführungsumgebung zur Verfügung.
Abbildung 2: Software-plus-Services mit Azure
Damit wird der Aufbau komplexer Software-plus-Services Lösungen möglich. Abbildung 2 skizziert den Aufbau. Anwender greifen über verschiedene Endgeräte auf die Lösungen zu. Diese Endgeräte sind entscheidend für die User Experience. Sie sind mit den Benutzeroberflächen, die sie bereitstellen, die Zugangspunkte zu den IT-Lösungen. Auf den Endgeräten können verschiedene Arten von Software betrieben werden (von reinen Browser-Anwendungen, über Office-Erweiterungen bis hin zu eigenen Anwendungen). Eine leistungsfähige Technologieplattform zeichnet sich dadurch aus, dass sie ein möglichst breites Spektrum an Endgeräten und Anwendungstechnologien unterstützt.
Die lokal auf Endgeräten betriebene Software kann nun über Standardtechnologien auf Services, die auf Azure betrieben werden, zugreifen. Services können eigene Anwendungen, Azure Services oder Anwendungen und Web Services von Partnern sein, die sich auch gegenseitig aufrufen können, um ihre Funktionalität bereitzustellen.
Fazit
Für Unternehmen und Softwareentwickler bietet sich mit Azure nun ein erweitertes Spektrum an Möglichkeiten zur Nutzung und Bereitstellung von IT-Funktionen:
Die Micosoft Plattform zeichnet sich durch eine Durchgägigkeit (vom Client beim Anwender, über Services im unternehmenseigenen Rechenzentrum bis hin zur Azure Plattform in Microsofts Rechenzentren) aus, die diese Wahlfreiheit, wo IT-Funktionen angeboten bzw. genutzt werden, erst ermöglicht. Diese Wahlfreiheit besteht sowohl für ganze Anwendungen als auch für einzelne Anwendungsteile.
Aufgrund der Fülle an Veröffentlichungen zu Microsofts Cloud Computing Strategie auf der diesjährigen PDC in Los Angeles gibt es leider nun durchaus Verwirrung bezüglich der verschiedenen Technologien, die bekannt gegeben wurden, und wie diese Technologien miteinander in Beziehung stehen. So werde ich erstaunlich oft gefragt, wie sich Windows Azure und Live Mesh zueinander verhalten. Ist das das gleiche? Ist das eine im anderen vollständig enthalten? Ist das eine Grundlage für das Andere? Ich will versuchen, hier ein wenig Licht ins Dunkel zu bringen.
Zunächst Windows Azure...
Wie bereits in meinem letzten Blog beschrieben (dort findet sich auch ein Überblicksbild), ist Windows Azure Basis für die Azure Services Plattform. Microsoft positioniert Windows Azure als das "Betriebssystem für die Cloud". Wenngleich diese Forumulierung vielleicht etwas hoch gegriffen klingt, so ist sie doch berechtigt. Windows Azure bietet vergleichbare Funktionalitäten, die typischerweise auch Desktop- oder Server-Betriebssystemen zugeschrieben werden (nur eben auf einer Menge vernetzter Server, was Voraussetzung für die massive Skalierbarkeit ist):
Darüber hinaus aber auch Funktionalitäten für das in Cloud Umgebungen vorliegende Utility Computing:
Die Funktionalitäten sind in folgender Abbildung sichtbar.
Abbildung 1: Funktionsbausteine von Windows Azure
Diese Funktionalitäten lassen sich zu den drei Hauptbestandteilen
zusammenfassen. Jeder Service, der ausgeführt wird, hat entweder die Rolle "Web Role" oder "Worker Role". Ein Service der ersten Kategorie "Web Role" ist ein Dienst, der von außen über Web-Protokolle angesprochen werden kann, also sozusagen ein ASP.NET-Dienst in der Cloud. Ein Service der zweiten Kategorie "Worker Role" ist ein Dienst, der - in .NET implementiert - in der Cloud ausgeführt wird, von außen nicht direkt angesprochen werden kann. Er erhält seine Arbeitsaufträge beispielsweise über Windows Azure Queues. Über Queues sind Web Role-Services von Worker Role-Services entkoppelt. Erstere nehmen Aufträge von außen über Web-Schnittstellen entgegen und stellen Arbeitsaufträge für letztere in Queues ein.
Windows Azure stellt somit recht generische Konzepte zur Entwicklung Services-basierter Cloud Applications zur Verfügung.
...nun zu Live Services...
In der Azure Services Plattform stellen die Live Services einen Services-Block dar, der direkt auf Windows Azure aufsetzt. Sieher hierzu die folgende Abbildung:
Abbildung 2: Live Services in der Azure Services Plattform
Live Services stellen - verglichen mit denen von Windows Azure - Services auf einer höheren Abstraktionsebene bereit. Diese Dienste dienen der Identifikation, Authentifizierung, Zusammenarbeit und Informationsverarbeitung von Anwendern zur Verfügung:
Über den Basis-Diensten der Live Services liegt die Gruppe der sogenannten Mesh Services. Diese bieten erweiterte Funktionalitäten für Dienste, die Anwender, deren genutzte Anwendungen und Endgeräte unterstützen.
Live Services setzen also auf Windows Azure auf und erweitern dessen Funktionalitäten um höherwertige anwenderbezogene Funktionalitäten bereitzustellen. Mesh Services sind eine Untergruppe der Live Services, die Dienste zur Unterstützung von Live Mesh bereitstellen.
...und schließlich Live Mesh
Live Mesh ist eine Software-plus-Services Lösung, die aus Client- und Services-Komponenten besteht, und es Anwendern erlaubt, Anwendungen und Daten auf all ihren Endgeräten, die sie in ihr persönliches "Mesh" aufgenommen haben, hinweg zu nutzen und zu synchronisieren.
Abbildung 3: Live Mesh
Um ein Gerät (PC, SmartPhone, Mac) in das persönliche Mesh aufzunehmen, muss auf dem betreffenden Gerät eine Mesh Client-Software installiert werden. Diese integriert sich in die Oberfläche des Geräts und nimmt Verbindung zum Mesh-Service auf, um sich über Änderungen im Mesh zu informieren (und ggf. auf das Gerät zu holen) oder dem Mesh lokale Änderungen mitzuteilen (damit sich andere Geräte diese Änderungen holen können). Nach Synchronisation kann der Anwender auch "offline" mit seinen Mesh-Daten und -Anwendungen arbeiten. Änderungen werden synchronisiert, sobald der Anwender wieder "online" ist. Dies geschieht, dank des Mesh-Clients, automatisch, also ohne Zutun des Anwenders.
Ganz entscheidend: Eine Neuerung, und man kann diese nicht deutlich genug hervor heben, die im Rahmen der PDC veröffentlicht wurde, ist, dass es tatsächlich möglich ist, Web-Anwendungen, die im Mesh installiert sind, auch offline zu betrieben. Ja, richtig gelesen: Web-Anwendungen können offline betrieben werden. Dies gilt nicht nur für einfache HTML-Seiten, sondern sogar für Silverlight-Anwendungen. Wow: Silverlight auch offline!!!
Alternativer Zugang zum Mesh ist der sogenannte Live Desktop. Dies ist eine Web-Anwendung, die permanent mit dem Mesh verbunden ist (hier ist also keine Synchronisation erforderlich, der Live Desktop hat Zugriff auf den Online-Content des Anwenders).
Wie verhalten sich Windows Azure, Live Mesh und die Mesh Services nun zueinander?
Um es also auf den Punkt (bzw. vier Punkte ;-) zu bringen:
Wann eignet sich für Anwendungsentwicklung Windows Azure? Wann Live Mesh?
Für eigene Anwendungsentwicklung kann also sowohl Windows Azure als auch Live Mesh verwendet werden.
Wann eignet sich Windows Azure?
Wann eignet sich Live Mesh?
Weitere Informationen
Mit der Masse an Ankündigungen, die Microsoft während der PDC vergangene Woche gebracht hat (Windows Azure, Windows 7, Office Web Applications, SecondLight etc.) kann es schwer werden, den Überblick über all die neuen Bezeichnungen zu behalten. Insbesondere, wenn bisher nur alternative bzw. Code-Bezeichnungen für einzelne Konstrukte im Umlauf waren.
Die wichtigste Abbildung, die auf der PDC gezeigt wurde, und die viele Begriffe schon in einen Kontext setzt, ist die folgende:
Ein paar Begriffe möchte ich dazu nochmals zusammenfassend (in alphabetischer Reihenfolge) auflisten und definieren:
AzureKurzbezeichnung für die Azure Services Plattform (s.u.).
Azure ServicesEine Reihe von Diensten, die auf Windows Azure (s.u.) aufsetzen und höher abstrahierte Anwendungsdienste anbieten. Damit entsprechen die Azure Services für die Cloud der Anwendungsplattform (Application Platform) im vor-Ort- bzw. Hosting-Betrieb. Dies habe ich bereits in einem früheren Blog zur Microsoft Plattform näher ausgeführt.URL: http://www.azure.com/services/
Azure Services PlatformKurzbezeichnung: Azure. Oberbegriff für alle Basis- und Anwendungsdienste, die Microsoft in eigenen Rechenzentren Entwicklern zur Verfügung stellt. Basis der Plattform ist Windows Azure (s.u.), darauf aufsetzend die Azure Services (s.o.).URL: http://www.azure.com/services/
Computation ServicesEin Hosting Dienst zur Ausführung von Managed Code (sprich: .NET Anwendungen und Services), der in Microsoft Rechenzentren betrieben wird. Für die Zukunft ist auch der Betrieb eigener virtuellen Maschinen (VMs) geplant. Die Computation Services erlauben die Ausführung von ASP.NET Webanwendungen oder .NET Code und stellen hierzu Internet Information Services 7.0 und Microsoft .NET Framework 3.5 SP1. Die Anwendungen können zugriffsgeschützt werden. Zur Verwaltung der ausgeführten Anwendungen steht ein Webportal zur Verfügung.
Live MeshEine Software + Services Lösung, die aus einem auf Live und Mesh Services basierendem Dienst und Client-Anwendungen besteht. Live Mesh stellt Funktionen zum Ablegen und Synchronisieren von Daten bereit. Neben einer Web-Oberfläche, dem "Live Desktop" gibt es Client-Anwendungen, die für Windows XP, Windows Vista, Windows Mobile und Macs bereitstehen, die sich nahtlos in die Oberfläche des jeweiligen Rechners integrieren. Der Live Mesh Dienst synchronisiert alle Daten, die in speziell gekennzeichneten Ordnern abgelegt werden, automatisch mit allen anderen Geräten, die an den Dienst angeschlossen sind, d.h. im persönlichen "Mesh" des Anwenders hängen. Neben der Datenaustauschfunktion gibt es auch eine "Remote Desktop"-Funktion, mit der sich Geräte über das Mesh fernsteuern lassen.URL: http://mesh.live.com
Live ServicesServices, die Funktionen für Identity, Verzeichnisdienste, Anwendungsspeicher, Kommunikation und Anwesenheit, Suche und ortsbezogene Dienste bereitstellen. Weitere Dienste, die Mesh Services erweitern diese Funktionen um benutzer-, geräte- und anwendungsbezogene Dienste und Funktionen zur Datensynchronisation.URL: http://dev.live.com/
Mesh ServicesLive Services, die bestimmte Funktionalitäten für Live Mesh Anwendungen bereitstellen. Dazu gehören: User Services, Devices Services, Applications Services, Synchronisationsservices. Diese Services verwenden wiederum die anderen Live Services, um die Funktionalität für Live Mesh zu erbringen.
.NET Services (bisher: BizTalk Services)Dienste zur Steuerung von Services, d.h. Ablaufsteuerung (Workflow), Nachrichtenübermittlung (Service Bus) und Zugriffssteuerung (Access Control). Damit bieten .NET Services Funktionalitäten eines Internet Service Bus.URL: http://www.microsoft.com/azure/netservices.mspx
Software-plus-Services (S+S)Microsofts Strategie, die hinter allem steckt: S+S geht davon aus, das Unternehmen und Privatkunden in Zukunft einen Mix aus Cloud Services und lokal betriebenen Client- und Serveranwendungen nutzen, auf die über verschiedene Endgeräte (PC, Browser, Smartphone) zugegriffen wird. Mit Windows Azure wird Microsofts Plattform komplettiert, d.h. neben den klassischen Client- und Server-Betriebssystemen und -Anwendungen steht nun auch eine entsprechende Cloud Plattform mit Betriebssystem, Services und Anwendungen bereit.
SQL Services (bisher: SQL Server Data Services)Oberbegriff für alle Azure Services im Zusammenhang mit SQL, d.h. Datenspeicherung. Zum aktuellen Zeitpunkt ist der einzige Service "SQL Data Services". Im Laufe der Zeit sollen aber weitere Services hinzukommen und SQL Services ähnlich mächtig machen wie ein lokal betriebener SQL Server (Ziel ist die "Server-Service Symmetrie").URL: http://www.microsoft.com/azure/sql.mspx
SQL Data ServicesEiner der (bzw. bislang der einzige) SQL Service. SQL Data Services erlauben die Speicherung von Daten in einer hierarchischen Datenbank. Zu diesem Dienst habe ich bereits eine kleine Blog-Reihe verfasst.URL: http://www.microsoft.com/azure/data.mspx
Windows AzureMicrosofts Betriebssystem für Cloud Services Szenarien. Die Bezeichnung "Betriebssystem" ist dabei kein Marketing-Gag, sondern in der Tat bietet Windows Azure Dienste an, die typischerweise auch von einem klassischen Betriebssystem erwartet werden: Hosting von Anwendungslogik in Form von Services, Management von Services, Rechenleistung, Speicherverwaltung etc. Dabei können Programmierer Anwendungen in ihrer gewohnten Umgebung, Visual Studio, entwickeln, deployen, testen etc.URL: http://www.azure.com/
Ich gestehe, ich war wahrscheinlich zu voreilig, einen Blogeintrag zur Windows Plattform noch vor der PDC zu schreiben. Hätte ich mehr Details zu den Veröffentlichungen zu Windows Azure (und insbesondere dem Namen "Azure") gehabt, hätte ich wohl gewartet ;-)
Schon die Bezeichnung Windows Azure macht es deutlich: dies ist ein Betriebssystem - und zwar Microsofts Cloud Betriebssystem (wie bereits in einem früheren Blog geschrieben). Damit nimmt Windows Azure einen Platz in der Betriebssystemschicht, der Windows Plattform ein. Windows Azure ist im Falle der Microsoft Plattform das Betriebssystem, welches in den Deploymentoptionen "Cloud Hosted" und "Microsoft Hosted" den Anwendungsdiensten zugrunde liegt. Folgende Abbildung enthält nun auch die Azure Plattform.
Abbildung: Die Microsoft Plattform(en)
In dieser Abbildung habe ich einige Begriffe aus der Microsoft Terminologie verwendet, die letztlich nur konkrete Bezeichnungen für allgemeine Konzepte sind. Hier eine Gegenüberstellung:
Die Größe der einzelnen Plattformen sagt dabei nichts über die jeweilige Bedeutung im Gesamtbild aus.
Application Platform
Die Application Platform stellt Anwendungsdienste bereit, die wiederum in eigenen Anwendungen verwendet werden können. In den einzelnen Unterplattformen der Application Platform kommen Serverprodukte von Microsoft zum Einsatz, die "out of the box"verwendet werden, aber auch Grundlage für eigene Anwendungsentwicklung sein können.
.NET Platform
Windows Platform
Zu Windows Client und Server muss ich, denke ich, nicht viel schreiben. an dieser Stelle möchte ich aber nochmals hervorheben, dass die Bezeichnung "Windows" für Windows Azure nicht zufällig gewählt wurde. Windows Azure ist tatsächlich Microsofts Cloud Betriebssystem. Es stellt Dienste bereit, die man von Betriebssystemen erwarten kann: einfache Datenspeicherung, Steuerung von Anwendungen etc.
Infrastructure Platform
An dieser Stelle zum wiederholten Mal die Beschreibung, welche Deploymentoptionen von der Microsoft Plattform abgedeckt werden: