Platform as a Service Google App Engine und Microsoft Windows Azure Felix Richter Matrikel-Nr. 92818 Studiengang: WID, FS 8 10.07.2010 Betreuer: Dipl.-Inf. Andreas Göbel Blockseminar „Software as a Service, Cloud Computing und aktuelle Entwicklungen“ Lehrstuhl für Datenbanken und Informationssysteme, Institut für Informatik, FSU Jena Inhalt 1 Einführung ....................................................................................................................................... 1 2 Platform as a Service ....................................................................................................................... 1 3 4 5 6 2.1 Begriffsklärung & Abgrenzung ............................................................................................... 1 2.2 Einordnung im Unternehmenskontext ..................................................................................... 2 Google App Engine ......................................................................................................................... 3 3.1 Überblick ................................................................................................................................. 3 3.2 Komponenten .......................................................................................................................... 3 3.3 App Engine Datastore ............................................................................................................. 3 3.4 Anfragesprachen: GQL & JDOQL .......................................................................................... 4 3.5 Services ................................................................................................................................... 4 Microsoft Azure .............................................................................................................................. 5 4.1 Produktübersicht ...................................................................................................................... 5 4.2 Windows Azure ....................................................................................................................... 6 4.3 AppFabric ................................................................................................................................ 7 4.4 SQL Azure ............................................................................................................................... 7 4.4.1 SQL Azure Database ....................................................................................................... 7 4.4.2 Architektur....................................................................................................................... 8 4.4.3 Vergleich mit dem SQL Server ....................................................................................... 8 Vergleich Google App Engine & Microsoft Azure ......................................................................... 9 5.1 Geschäftsmodell ...................................................................................................................... 9 5.2 Umgebung ............................................................................................................................. 10 5.3 Leistung ................................................................................................................................. 10 5.4 Datenhaltung ......................................................................................................................... 10 Fazit ............................................................................................................................................... 11 6.1 Auswirkungen von PaaS........................................................................................................ 11 6.2 Produktwahl........................................................................................................................... 12 6.3 Ausblick................................................................................................................................. 12 Literaturverzeichnis ................................................................................................................................. ii i 1 Einführung Software as a Service (SaaS) ist momentan eines der wichtigsten Themen im IT-Umfeld und wird oft als die Zukunftstechnologie des 21. Jahrhunderts gesehen. Das Anbieten von Software und Informationen als Versorgungsgut soll den klassischen Softwareentwicklungsansatz ablösen, bei dem Anwendungen lokal beim Kunden installiert und betrieben werden. Die vielen Vorteile von SaaS treten immer mehr hervor und werden durch die ständig steigende Verbreitung von Breitband-Internetanschlüssen nutzbar gemacht. Nutzer, aber auch Anbieter von SaaS profitieren in vielerlei Hinsicht von diesem neuen Softwareentwicklungsparadigma. Allerdings ist gerade das Betreiben von SaaS an das anbieterseitige Vorhalten von Reservekapazitäten für Spitzenlasten gebunden, so dass für das Unternehmen erhebliche Investitionskosten entstehen. Dieser Umstand wird durch die Nutzung von IaaS- und PaaSAngeboten umgangen bzw. auf eine weitere Ebene zu einem vorgelagerten Unternehmen verschoben. So wird die Anwendung und die Entwicklung dieser von den genutzten Rechen- und Speicherkapazitäten entkoppelt, was verschiedene Vorteile mit sich bringt. Nach einer Einführung in das Konzept von PaaS und einer kurzen Einordnung, werden im Folgenden die zwei Größten der zahlreichen Anbieter in diesem Feld mit ihren Produkten vorgestellt: Google App Engine und Microsoft Azure. Ein direkter Vergleich soll zeigen, in welchen Bereichen die Stärken und Schwächen der beiden Angebote liegen und für welche Anwendungsfälle sie in Frage kommen. Abschließend werden neben einer Zusammenfassung die Auswirkungen des PaaS und des „Everything-as-a-Service“-Ansatzes betrachtet, sowie die Entscheidungsfindung bei der Auswahl eines Anbieters analysiert. 2 Platform as a Service 2.1 Begriffsklärung & Abgrenzung Mit dem Begriff „Platform as a Service“ wird das Anbieten einer Entwicklungsplattform auf Basis von Cloud-Technologien bezeichnet. Typischerweise bestehen Produkte dieser Klasse aus einer Laufzeit- und einer Entwicklungsumgebung. Dadurch wird dem Kunden – also dem entwickelnden Unternehmen oder dem freien Entwickler – eine voll funktionsfähige Online-Plattform angeboten, auf der der gesamte Softwareentwicklungsprozess ablaufen kann. 1 In der „Everything-as-a-Service“-Hierarchie befindet sich PaaS zwischen SaaS und IaaS. Gegenüber SaaS unterscheidet sich diese Kategorie inbesondere durch die unterschiedliche Zielgruppe: „die Cloud Services in der PaaS-Schicht richten sich meist […] an Entwickler“ [Bau10] um SaaS-Produkte herzustellen und zu betreiben. Es werden nicht die Endnutzer angesprochen, somit ist PaaS ein typischer B2B-Markt – mit Ausnahme privater Entwickler. Im Vergleich zu IaaS ist herauszustellen, dass Systemressourcen wie CPU-Zeit oder physischer Speicherplatz nicht durch den Nutzer verwaltet werden, sondern vom Anbieter selbst. Des Weiteren wird bei PaaS-Produkten die Umgebung weitestgehend vorgegeben, während im IaaSBereich schon auf Betriebssystem- und systemnaher Anwendungsebene relativ viel Einfluss möglich ist. Im Folgenden werden zusätzlich diese Bezeichnungen verwendet: „PaaS-Anbieter“ oder nur „Anbieter“ ist das Unternehmen, das die Ressourcen und damit die Anwendungsumgebung zur Verfügung stellt. Als „Nachfrager“ wird der Nutzer der angebotenen Produkte bezeichnet, wobei hier von einem Software entwickelnden Unternehmen ausgegangen wird. „SaaS-Anbieter“ ist ein Nachfrager-Unternehmen, das die entwickelte Software Dritten am Markt anbietet. 2.2 Einordnung im Unternehmenskontext PaaS kann für ein Nachfrager-Unternehmen grundsätzlich für zwei Zwecke eingesetzt werden. Es kann auf dieser Basis Software für den Eigenbedarf oder aber für die Erstellung von eigenen Produkten entwickelt werden. Im ersten Fall werden typischerweise lokale Installationen von Verwaltungs- oder Kommunikationssoftware ersetzt oder ergänzt durch Cloud-basierte Anwendungen. Dies können komplexe ERP-Systeme, aber auch relativ einfache Software wie Instant-Messenging-Dienste sein. Wichtig ist, dass die Anwendungen nicht in einer Private Cloud, sondern in der Public Cloud des Anbieters laufen und damit die Vor- und Nachteile typischer SaaS-Angebote teilen. Als zweiten Anwendungsfall kommen SaaS-Anbieter in Betracht. Diese greifen auf die Ressourcen des PaaS-Anbieters zurück statt selbst Kapazitäten zur Verfügung zu stellen. Somit beschränkt sich das Unternehmen auf die Erstellung und Verwaltung der eigenen Anwendung und überlässt die vorgelagerten Administrationstätigkeiten dem PaaS-Anbieter. Dies beeinflusst neben der Kostenund Personalstruktur auch den Softwareentwicklungsprozess, der nun schlanker gestaltet und durch kürzere Entwicklungszyklen verbessert werden kann. 2 3 Google App Engine 3.1 Überblick Google, als Betreiber von umfangreichen SaaS-Lösungen wie den Google Apps, hat in seinen zahlreichen Rechenzentren eine sehr gut ausgebaute, performante Infrastruktur für die Bereitstellung von Daten und Rechenkapazität aufgebaut. Diese Ressourcen stellt Google seit 2008 Entwicklern zur Verfügung, die auf der App-Engine-Plattform selbst Applikationen erstellen und betreiben können. Google selbst beschreibt Applikationen auf der App Engine als „easy to build, easy to maintain, and easy to scale […]“ [Goo10] . 3.2 Komponenten Google App Engine besteht grundsätzlich aus vier Komponenten. Eine Java und Python unterstützende Entwicklungs- und Laufzeitumgebung, den auf BigTable basierenden Datastore, AppScale als Eucalyptus-basiertes lokal installierbares Programming Environment, sowie eine Reihe von Services zur Erweiterung der Applikationen. Im Folgenden werden der Datastore und die Services näher betrachtet. 3.3 App Engine Datastore Der Datastore basiert auf Googles eigens entwickelter Datenbank BigTable. Damit steht eine hoch performante und flexible Möglichkeit der Datenhaltung zur Verfügung. Implementierungsdetails sollen in dieser Arbeit nicht thematisiert werden. Wichtig für Entwickler sind in diesem Zusammenhang die logischen Aspekte von BigTable. Eine zentrale Funktionalität sind Entity Groups, die eine Art Wald darstellen. Mit Vater- und KindDefinitionen (PARENT und ANCESTOR) können Beziehungen zwischen Entitäten abgebildet werden. Dies bringt einige Besonderheiten mit, beispielsweise wird beim Speichern einer Entität die gesamte damit verbundene Entity Group automatisch gespeichert. Außerdem können nur Entitäten einer Entity Group innerhalb einer Transaktion bearbeitet werden [Goo10] . Der Datastore nutzt Indextabellen als eine Art Anfragencache. Diese sind keine üblichen Indexe, wie sie aus relationalen DBMSen bekannt sind, sondern einfache Tabellen, die Anfrageergebnisse speichern. Sie enthalten die geforderten Projektionsspalten, sowie in WHERE-Bedingungen auftretende Spalten. 3 Auch Transaktionen werden vom Datastore unterstützt, wobei innerhalb der Transaktion vollständige Serialisierbarkeit gewährleistet wird. Google verwendet einen Commit mit zwei Meilensteinen: Im ersten Schritt werden Entitäten geprüft und festgeschrieben, im zweiten Schritt dann die oben erwähnten Indexe [Max08] [Goo10] . Im Datastore wird dabei Optimistic Concurrency Control genutzt, also vollständig auf Sperren verzichtet und am Transaktionsende geprüft, ob Konflikte aufgetreten sind. 3.4 Anfragesprachen: GQL & JDOQL In der Anwendung wird der Datastore mit deskriptiven Anfragesprachen angesteuert. Bei Nutzung der Java-Umgebung steht JDOQL zur Verfügung. Wird Python verwendet, kann auf Googles GQL zurückgegriffen werden. JDOQL ist eine in Java eingebundene Sprache, die fundamentale Konstrukte wie Filter, Sortierung und Cursor unterstützt. Aufgrund der Struktur von BigTable können allerdings keine verteilten Anfragen, Joins und Aggregatfunktionen verwendet werden. Die Befehle können in SQL-ähnlicher Form im so genannten „String Style“ oder über vorhandene Java-Funktionen des Persistence Managers im „Method Style“ kodiert werden. Wird vom Entwickler GQL gewählt, steht ihm ebenfalls eine SQL-ähnliche Sprache zur Verfügung. Es wird die typische „SELECT-FROM-WHERE“-Form verwendet, so dass bei erfahrenen SQL-Entwicklern kein großer Einarbeitungsaufwand zu erwarten ist. Wie auch bei JDOQL werden keine Joins bzw. verteilte Anfragen unterstützt. Zur Abbildung der Entity Groups (vgl. Abschnitt 3.3) sind PARENT- und ANCESTOR-Klauseln zum Verweis auf Gruppenelemente vorhanden. Insbesondere sind auch rekursive und geschachtelte Verweise auf ANCESTORS möglich, um komplexere Anfragen abzubilden. 3.5 Services Google stellt innerhalb seiner App Engine-Plattform einige Services bereit, um dem Entwickler die Arbeit zu vereinfachen und Schnittstellen bereitzustellen. Es ist so möglich, auf Googles eigene Anwendungen, aber auch auf weitere Ressourcen innerhalb und außerhalb der Plattform zuzugreifen. Über Google Accounts und die Mail-Integration können Entwickler auf die zentralen Identifizierungs- und eMail-Dienste von Google zugreifen und diese in ihre eigenen Anwendungen integrieren. Gerade bei Applikationen, die eine komplexe Nutzerverwaltung erfordern, besteht deshalb großes Potential zur Vereinfachung. 4 Um innerhalb einer Anwendung Daten einfacher und schneller zu verwalten, stehen die Dienste Memcache und Blobstore zur Verfügung. Letzterer ist zu diesem Zeitpunkt noch als experimentelles Feature angegeben, die Dateigröße für BLOBs ist mit maximal 1 Megabyte noch sehr gering gewählt. Der Memcache stellt einen temporären Speicher dar, der zur sehr schnellen Verarbeitung von großen Datenmengen genutzt werden kann. Gerade datenintensive Anwendungen im Web 2.0-Umfeld können davon profitieren. Da die App Engine-Plattform nur Webapplikationen unterstützt und damit keine permanent laufenden Prozesse vorhanden sind, muss zur Ausführung von Tasks ohne Nutzeranfrage auf Cron Jobs zurückgegriffen werden. Zusätzlich stellt Google für die Python-Umgebung Task Queues bereit, die eine ähnliche Funktionalität bieten. Durchzuführende Aufgaben werden dabei als Web Hooks dargestellt. Auch die Task Queues sind momentan noch als experimentelles Feature gelistet. Ein weiterer wichtiger Service ist URL Fetch, das zur Verbindung mit entfernten Webservices genutzt werden kann. Dabei können im Java- oder Python-Code mit einfachen fetch-Befehlen HTTP-Requests an reguläre URLs Daten von Webseiten oder Service-Endpunkten abgefragt werden. Dabei können übliche Methoden wie POST und GET verwendet werden. 4 Microsoft Azure 4.1 Produktübersicht Microsoft ist mit seiner Azure-Plattform erst spät in das PaaS-Geschäft eingestiegen, bietet aber bereits jetzt ein umfangreiches Produkt an. Grundsätzlich handelt es sich bei Azure um ein klassisches PaaS-Angebot, das in einer Public Cloud gehostet wird. Im Vergleich zu anderen Angeboten sticht jedoch die Einbindung von lokalen bzw. weiteren Anwendungen und Services hervor. Dadurch können Entwickler sehr gut an vorhandene Systeme angepasste Software erstellen. Im Gegensatz zu Googles App Engine werden nicht nur reine Webapplikationen als Endprodukt gesehen, sondern komplexe Systeme aus lokalen und cloudbasierten Anwendungen sowie verteilten Daten ermöglicht. Microsoft nimmt dafür eine Teilung der Plattform in drei zentrale Bereiche vor: die Ausführungslogik, die Datenhaltung und eine Kommunikationskomponente. Sie können als unabhängige Bestandteile eines flexiblen Gesamtsystems angesehen werden, sind also einzeln oder kombiniert einsetzbar. 5 Die Trennung in drei Bereiche spiegelt sich auch in den Komponenten des Produkts wider. Wie auch bei Googles App Engine gibt es eine Entwicklungs- und Laufzeitumgebung (Windows Azure) und eine Datenbankanbindung (SQL Azure). Hinzu kommt mit AppFabric eine Komponente, die es ermöglicht Verbindungen zwischen verschiedenen Applikationen über Webservices herzustellen. 4.2 Windows Azure Als Entwicklungs- und Laufzeitumgebung stellt Microsoft mit Windows Azure eine sehr flexible Plattform bereit. Basierend auf Windows Server-Technologie steht dem Entwickler eine vertraute Umgebung zur Verfügung, Programmiersprachen die unterstützt insbesondere den werden. Somit Vorteil können hat, dass alle Webanwendungen Windowsmit PHP, WCF/Silverlight und ASP.NET entwickelt werden, sowie reguläre Anwendungssoftware mit C++, Java, .NET etc. Applikationen können dabei als Web Role oder Worker Role ausgeführt werden. Eine Web Role bezeichnet eine typische Webapplikation, die nur auf User-Requests reagieren kann und keine permanente Ausführung beinhaltet. Für Anwendungen, die genau diese Funktionalität benötigen, können mit den Worker Roles Hintergrundprozesse gestartet werden, um beispielsweise komplexere Berechnungen als Ergänzung zur Webanwendung zu ermöglichen. Neben SQL Azure stehen in Windows Azure noch weitere Storage Services zur Verfügung, um etwa während der Laufzeit Daten zwischen Applikationen auszutauschen oder als Speicherort für Daten, die kein relationales System erfordern. Zu diesem Zeitpunkt stehen drei Services zur Verfügung: BLOBs, Tables und Queues. Im BLOB-Speicher können bis zu 50gb große Dateien abgelegt werden. Tabellen bestehen aus einfachen Entitäten mit zugeordneten Attributen. Es steht keine Datenbankfunktionalität im engeren Sinne bereit, sondern es handelt sich um reine Tabellen ohne weitere Verknüpfungen. Queues sind einfache Listen bzw. Warteschlangen, die typischerweise für den Datenaustausch zwischen Web und Worker Roles oder als Speicher für abzuarbeitende Daten genutzt werden [Cha08] . Zur Konfiguration und Überwachung von Windows Azure und den Storage Services können webbasierte Anwendungen von Microsoft genutzt werden. Sie sind jeweils an Hosting- und Storage-Accounts gebunden. 6 4.3 AppFabric Um verteilte Anwendungen im Web zu verbinden, werden typischerweise Webservice-Endpunkte verwendet. Diese zu managen und über NATs oder Firewalls hinweg zu verknüpfen ist oft eine nicht unwesentliche Hürde. Genau an diesem Punkt setzt Microsoft mit der AppFabric an. Dieser Service dient als Plattform zur Verwaltung von Webservices unterschiedlicher Herkunft. So können lokale und cloudbasierte Anwendungen miteinander oder jeweils untereinander verbunden werden. Erster Hauptbestandteil der AppFabric ist der Service Bus, der das Management von Verbindungen übernimmt. Durch eine zentrale Anmeldung der Services können diese leicht untereinander gefunden werden und eine Verbindung aufbauen. Daneben steht mit der Access Control ein Service zur Verwaltung von User-Identitäten zur Verfügung. Auf Basis von REST- und SOA-Nachrichten können so Anmeldeinformationen in verteilten Applikationen genutzt werden. 4.4 SQL Azure Unter SQL Azure versteht Microsoft ein Bündel von Datenbank-Services, das nicht nur ein relationales DBMS bereit hält, sondern zusätzlich Data Warehousing, Synchronisierung und Reporting ermöglichen soll. Abgesehen von SQL Azure Database als RDBMS sind alle weiteren Komponenten jedoch noch in der Entwicklungsphase. 4.4.1 SQL Azure Database Als relationales DBMS setzt Microsoft auf die Technologie des SQL Servers. Darauf aufbauend und mit einigen Einschränkungen können Entwickler mit der SQL Azure Database also auf bewährte Technik zurückgreifen. Im Gegensatz zur Verwendung eines SQL Servers wird bei SQL Azure Database von der physischen Datenhaltung und der physischen Administration abstrahiert. Das bedeutet, dass sich Microsoft in diesem Bereich um die Konfiguration und Optimierung kümmert, jedoch dadurch ein DBA auch keinen Einfluss auf die Darstellung der Datenbank auf Dateiebene hat. „SQL Azure bietet die üblichen Funktionalitäten eines RDBMS wie Tabellen, Views, Joins, Stored Procedures etc.“ [Dat10] . Als Sprache wird wie beim SQL Server TransactSQL verwendet. Microsoft gibt an, dass bereits für den SQL Server implementierte Anwendungen auch auf der SQL Azure Database funktionieren. Dies ist allerdings kritisch zu betrachten, da aufgrund einiger Einschränkungen im TransactSQL mit viel Anpassungsarbeit zu rechnen ist oder eine Migration unmöglich sein kann. 7 4.4.2 Architektur Jeder Nutzer von Microsoft Azure erhält einen Storage-Account, der wiederum mehrere SQL Azure-Accounts enthalten kann. Diesen ist jeweils genau ein SQL Azure Server zugeordnet, der selbst „eine logische Gruppierung einer oder mehrerer Datenbanken“ [Dat10] ist. SQL Azure Server sind genau einem Microsoft-Rechenzentrum zugeordnet und können physisch auf mehreren Rechnern laufen – sie sind also virtualisiert. Die geografische Position der Server bzw. des genutzten Rechenzentrums kann jeweils einzeln durch den Nutzer festgelegt werden, was insbesondere bei weltweit verteilten Applikationen Sinn macht. Die Replikation der Server und Datenbanken erfolgt automatisch durch Microsoft. Um zu skalieren, muss durch den Nutzer manuell oder in einer Anwendung eine neue Datenbank angelegt und partitioniert werden oder entsprechend entfernt werden. Bei einer Maximalgröße von 10 Gigabyte pro Datenbank ist dies bei datenintensiven Anwendungen nicht unproblematisch. Microsoft hat allerdings angekündigt, künftig auch bis zu 50 Gigabyte-Datenbanken anzubieten [Zan10] . Der Zugriff zur Datenbank erfolgt wie beim SQL Server über Tabular Data Stream-Endpunkte. Somit können bestehende Schnittstellen wie ODBC oder ADO.NET verwendet werden. Die Verbindung ist zwangsweise SSL-verschlüsselt. 4.4.3 Vergleich mit dem SQL Server Da die SQL Azure Database auf dem SQL Server aufbaut, sind große Teile der Funktionalität identisch. Jedoch sind aufgrund des Anwendungsgebiets und der speziellen Architektur einige Features entfernt und andere hinzugefügt worden. Insbesondere durch Automatisierung von Adminstrationsaufgaben wird dem DBA einiges an Arbeit abgenommen. Unter anderem werden das Loadbalancing und die Replikation vollkommen automatisch verwaltet. Dabei wird durch Microsoft ein transparenter Fail-Over bei Ausfall eines Servers gewährleistet. Horizontal skalieren bzw. partitionieren muss der Nutzer hingegen über das Webinterface bzw. über eigene Anwendungen selbst. Funktionen, die im Vergleich zum SQL Server nicht implementiert wurden bzw. nicht zugänglich sind, sind unter anderem jegliche Dateisystem-bezogenen Elemente wie die Verwaltung von Filegroups oder physische DDL-Elemente. Hier gehen jedoch auch einige Tuning-Möglichkeiten verloren, die beim SQL Server noch möglich sind. Weiterhin fehlen Analyse- und ReportingServices, die durch eigenständige Komponenten im SQL Azure-Paket ersetzt werden. 8 Betrachtet man die gemeinsame Anfrage TransactSQL, so muss bei der SQL Azure Database auf verteilte Transaktionen, Geo-Datenverarbeitung, ein CLR und globale temporäre Tabellen verzichtet werden. Außerdem wurden aus einigen Befehlen mit Bezug auf das Dateisystem Parameter entfernt. Die Ausführung dieser Befehle ist weiterhin möglich, jedoch wird bei Nutzung der betroffenen Parameter eine Warnung ausgegeben. Zusammenfassend kann man die SQL Azure Database als auf Webanwendungen zugeschnittenen SQL Server bezeichnen, der im Cloud-Betrieb deutliche Vereinfachungen mit sich bringt. Da einige Funktionen noch nicht implementiert wurden, muss vor der Entwicklung auf diesem System geklärt werden, ob alle Anforderungen erfüllt werden können. Jedoch werden „in zukünftigen Versionen […] Bereiche, die zum Funktionsumfang eines SQL Server gehören, ergänzt […]“ [Dat10] . Es wurde inzwischen angekündigt, dass auch Geo-Daten unterstützt werden sollen [Zan10] . 5 Vergleich Google App Engine & Microsoft Azure Nachdem nun beide Produkte ausführlich betrachtet wurden, soll ein direkter Vergleich zeigen, in welchen Bereichen Stärken und Schwächen der Angebote liegen. 5.1 Geschäftsmodell Google bietet seine App Engine als Basisvariante kostenfrei an, wobei auch mit den damit verbundenen Einschränkungen bezüglich der nutzbaren Kapazitäten bereits komplexere Anwendungen entwickelt und betrieben werden können. Abgesehen von einem kostenlosen Einführungsangebot wird es von Microsofts Azure keine frei verfügbare Version geben. Gerade private Entwickler werden sich daher eher für Googles Lösung entscheiden, zumindest bei der Kostenbetrachtung. Azure bietet mit seiner sehr flexiblen und mit vielen Komponenten bestückten Umgebung sehr viel Potential für unterschiedlichste Anwendungsfälle, so dass eine breite Masse an entwickelnden Unternehmen angesprochen werden kann. Insbesondere wegen der Einbindung lokaler Ressourcen und der getrennten Nutzbarkeit von Anwendungen und Daten können verschiedenste Szenarien abgedeckt werden. Googles App Engine hingegen ist eher auf datenintensive und hoch performante Web 2.0-Anwendungen ausgelegt und bietet hierfür sehr gute technische Voraussetzungen. 9 5.2 Umgebung Mit der ausschließlichen Unterstützung von Python und Java schränkt Google das Portfolio an Programmiersprachen in der App Engine stark ein. Es zeigt sich wieder die relativ starke Ausrichtung auf reine Webanwendungen. Microsoft punktet durch die Verfügbarkeit einer ganzen Palette von Sprachen von .NET über ASP.NET bis C#. Eng verbunden mit dem Sprachangebot ist auch der Verwendungszweck der Plattform im Sinne des Anwendungstyps. Unter Azure können ohne weiteres Hintergrundprozesse verwendet werden und echte Anwendungsprogramme laufen. So ist es möglich, Daten auch ohne User-Interaktion zu verarbeiten bzw. aufzubereiten. In der App Engine müssen dafür Cron Jobs genutzt werden, was eher als Workaround gesehen werden sollte und die Funktionalität der Worker Roles in Azure nicht abbilden kann. Durch die Einbindung von bestehenden Services und Apps ist es bei Googles App Engine möglich, für viele Webanwendungen wichtige Funktionen wie eMail-Verwaltung oder globale Nutzeridentitäten direkt auf Plattformebene zu nutzen. Microsoft hat bereits angekündigt, Sharepoint- und SQL Server stärker anzubinden, jedoch ist dann mit zusätzlichen Kosten zu rechnen. 5.3 Leistung Im Bereich Anwendungsperformance bietet Googles App Engine mit Memcache einen hochperformanten temporären Datenspeicher, der die Verarbeitung großer Datenmengen in Webanwendungen ermöglicht. Unter Azure steht momentan nur der ASP.NET Cache zur Verfügung. Die Skalierbarkeit bezüglich der Rechenkapazität läuft auf der App Engine vollautomatisch, muss unter Azure manuell bzw. über eigene Anwendungslogik realisiert werden. Neue Web- bzw. Worker Roles müssen angelegt und gestartet oder entsprechend heruntergefahren werden. 5.4 Datenhaltung Die Performance bei der Datenhaltung unterscheidet sich unter Azure je nach verwendetem Storage Service. Beim relationalen DBMS SQL Azure Database dürfte sie vergleichbar mit einem SQL Server sein. Google nutzt seine eigene BigTable-Technologie und kann dadurch sehr hohe Performance erreichen und ist insbesondere durch die automatische Partitionierung schnell skalierbar. 10 In Sachen Flexibilität hat wiederum Microsoft das bessere Angebot. Durch das Bereitstellen mehrerer Storage Services, die unterschiedlichste Aufgaben erfüllen können, ist dem Entwickler eine Reihe von möglichen Anwendungsfeldern eröffnet. Google bietet bisher offiziell nur den Datastore an. 6 Fazit 6.1 Auswirkungen von PaaS Mit dem PaaS-Ansatz sind für verschiedene Interessengruppen Konsequenzen verbunden. Direkt betroffen sind SaaS-Entwickler und SaaS-entwickelnde Unternehmen, aber auch Endkunden profitieren indirekt von PaaS. Unternehmen, die SaaS-Produkte entwickeln und betreiben, können durch die Nutzung von PaaSAngeboten in hohem Maße Fixkosten einsparen. Insbesondere Investitionen in eigene Serverlandschaften und damit große Mengen an Hard- und Software werden deutlich verringert. Im Extremfall kann vollständig auf Serveranschaffungen verzichtet werden. Zu bemerken ist dabei, dass nicht nur die Laufzeit- sondern teilweise auch die Entwicklungsumgebung in einer Public Cloud laufen. Damit entfallen dementsprechend auch Kosten für im Unternehmen genutzte Entwicklungsmaschinen, sowie deren Administration. Letzteres trifft gleichermaßen auf Produktionsserver zu – gerade hier können zusätzlich auch variable Kosten verringert werden. Ein weiterer Punkt ist das nicht mehr nötige Vorhalten von Rechenkapazität durch den SaaSAnbieter. Durch die Auslagerung in die Cloud und das damit verbundene Ressourcenpooling wird das Auftreten von Spitzenlasten auf PaaS-Anbieterseite abgepuffert, so dass im betrachteten Gesamtsystem eine bessere Ressourcennutzung zu erwarten ist. Für das Nachfrager-Unternehmen ist also durch die Verbrauchsabhängigkeit bezüglich des Ressourcenangebots ein erheblicher Vorteil zu sehen. Für Entwickler selbst kommen bei PaaS durch die Abstraktion von der physischen Ebene mehrere Vorteile zum Tragen. Da Entwicklungs- und Laufzeitumgebung typischerweise identisch sind, entfällt das Betreiben einer oder mehrerer dedizierter Testmaschinen sowie die Beachtung von verschiedenen Laufzeitumgebungen, wie es in der klassischen Anwendungsprogrammierung in hohem Maß nötig ist. Der Entwickler hat die „Sicherheit, dass die Umgebungen identisch sind und die eben getestete Version sich auch im Livesystem exakt identisch verhält, weil das Live-System absolut identisch ist“ [Clo10] . 11 Ein weiterer Vorteil, der durch den SaaS-Ansatz allgemein entsteht, ist die Ausführung über den Browser. So ist es leicht möglich, Betriebssystem-unabhängige Software zu entwickeln und so selbst mobile Geräte wie Smartphones als Client nutzbar zu machen, ohne dafür gesonderte Softwareprodukte zu entwickeln. 6.2 Produktwahl Die Entscheidung für ein spezielles PaaS-Angebot hängt vor allem von den Anforderungen an die Entwicklungsumgebung ab. Insbesondere die verfügbaren Programmiersprachen und Datenhaltungsmöglichkeiten können dabei entscheidend sein. Während einige Produkte eine sehr eingeschränkte Auswahl in beiden Punkten haben, weisen andere wesentlich mehr Flexibilität auf. Auch das Anwendungsgebiet spielt bei der Auswahl eines Anbieters eine wichtige Rolle. Während es beim Betrieb einer sehr großen Web 2.0-Plattform größtenteils auf die extrem schnelle Bereitstellung verteilter Daten ankommt, können bei der Nutzung von ERP-Software als SaaS flexible Schnittstellen und umfangreiche Services sowie hohe Konsistenzanforderungen Schlüsselfaktoren sein. Auch die anfallenden Kosten können sich in ihrer Struktur drastisch unterscheiden. So hängt es vom Nutzungsverhalten und dem Anwendungstyp ab, ob eher Datenbankanfragen oder Rechenzeit den Großteil der Last ausmachen. Dies ist durch den Entscheider abzuschätzen und anhand der Preisgestaltung der Anbieter zu bewerten. 6.3 Ausblick Im Zuge der fortschreitenden Service-Orientierung wird die Anzahl und Vielfalt von SaaSLösungen weiter zunehmen. Mit PaaS-Angeboten wird es Unternehmen ermöglicht, ohne größere Investitionen selbst SaaS zu entwickeln und zu betreiben. Dies wird die Verbreitung von SaaS sicherlich noch verstärken. Ein Trend, der sich abzeichnet, ist die immer größere Automatisierung von Verwaltungs- und Administrationsaufgaben. So können sich Entwickler auf das Wesentliche konzentrieren: ihre Applikation. 12 Literaturverzeichnis [Zan10] Adam, Zane. 2010. Delivering new features for SQL Azure today. [Online] 25. 06 2010. [Zitat vom: 08. 07 2010.] http://blogs.msdn.com/b/zaneadam/archive/2010/06/26/delivering-newfeatures-for-sql-azure-today.aspx. [Bau10] Baun, Christian, et al. 2010. Cloud Computing - Web-basierte dynamische IT-Services. s.l. : Springer, 2010. [Cha08] Chappell, David. 2008. Introducing the Azure Services Platform. 2008. [Clo10] CloudControl. 2010. Kein Lean Startup ohne Platform as a Service. [Online] 26. 04 2010. [Zitat vom: 21. 06 2010.] http://cloudcontrol.de/lean-startup-platform-as-a-service/. [Goo10] Google. Google Code. [Online] [Zitat vom: 10. 06 2010.] http://code.google.com/intl/deDE/appengine/docs/. [Max08] Ross, Max. 2008. Transaction Isolation in App Engine. [Online] 13. 5 2008. [Zitat vom: 10. 6 2010.] http://code.google.com/intl/de-DE/appengine/articles/transaction_isolation.html. [Dat10] Sirtl, Holger. 2010. Daten frei für SQL Azure. database pro. 2010, 1. ii