mini|Cloud-Computing-Architektur
Als Platform as a Service (PaaS) bezeichnet man eine Dienstleistung, die in der Cloud eine Computer-Plattform für Entwickler von Webanwendungen zur Verfügung stellt. Dabei kann es sich sowohl um schnell einsetzbare Laufzeitumgebungen (typischerweise für Webanwendungen), aber auch um Entwicklungsumgebungen handeln, die mit geringem administrativem Aufwand und ohne Anschaffung der darunterliegenden Hardware und Software genutzt werden können. Sie unterstützen den gesamten Software-Lebenszyklus vom Design über die Entwicklung, den Test, die Auslieferung bis hin zum Betrieb der Webanwendungen über das Internet.G. Raines, L. Pizette: Platform as a Service: A 2010 Marketplace Analysis. 2010-10, mitre.org (PDF) abgerufen am 2. Juni 2012Y. V. Natis, T. Jones, B. J. Lheureux, K. Iijima, E. Knipp, D. M. Smith. Predicts 2011: Platform as a Service: The Architectural Center of the Cloud. Gartner, 24. November 2010M. Fouquet, H. Niedermayer, G. Carle: Cloud Computing for the Masses. 1. Dezember 2009 Platform as a Service ist ein Teil von Everything as a Service.
Einige Angebote umfassen auch Dienste zur kollaborativen Arbeit und Versionierung, zum Monitoring und für die Sicherheit oder Middleware-Dienste zum Speichern von Daten oder für die Kommunikation zwischen Anwendungen. PaaS-Angebote bauen auf einer skalierbaren Infrastruktur (IaaS) von Speicher und Rechenleistung auf und können somit ebenfalls skalieren. Aufbauend auf einer PaaS-Umgebung können Software as a Service (SaaS)-Angebote entstehen. Somit ist PaaS die mittlere Schicht im Cloud Stack.
Bedeutung Zwischen Oktober 2009 und Oktober 2010 haben mehr als 100 PaaS-Anbieter den Markt betreten. Sie treten an, um ihren Kunden möglichst viele administrative Aufgaben abzunehmen, Skalierbarkeit und Hochverfügbarkeit zu ermöglichen,B. Lobaugh. Deploying a Java application to Windows Azure with Command-line Ant. Microsoft, 17. Februar 2011, abgerufen am 2. Juni 2011 Fixkosten und Gesamtkosten zu senken, die Anwender flexibler zu machen und um eine schnelle Anwendungsentwicklung und einen baldigen Markteintritt zu ermöglichen.K. Friedmann: cio.de, 3. August 2010; abgerufen am 2. Juni 2011 Damit wird es den Kunden ermöglicht, sich mehr auf die eigentliche Entwicklung von Geschäftsanwendungen zu konzentrieren, anstatt sich um Frameworks, Middleware oder den Betrieb von skalierbaren, zuverlässigen und kosteneffizienten Rechenzentren zu kümmern.
Momentan werden PaaS-Angebote nur von „leading-edge users“ genutzt, die „mainstream users“ stehen ihnen noch skeptisch gegenüber. Gartner sieht die mehr visionären Independent Software Vendors (ISVs) als Schlüssel für die Akzeptanz des PaaS-Modells, da diese ihre Anwendungen über die Cloud anbieten werden. Erst durch diese SaaS-Angebote wird die Cloud auch für andere IT-Projekte attraktiv.
Im Jahr 2009 hatte das Thema Cloud Computing insgesamt einen Höhepunkt auf der Gartner Hypekurve.Cloud Hype at Height: Gartner. In: Cloud Computing Journal, 17. August 2009, abgerufen am 6. Mai 2011 Es gab viele Enttäuschungen über die Leistungsfähigkeit des Cloud Computings, aber auch positive Auswirkungen. In Japan haben bereits große Unternehmen damit begonnen, PaaS-Angebote wie Force.com zu nutzen, um einer großen Zahl von Nutzern Kundenanwendungen ortstransparent zur Verfügung stellen zu können. Dabei hat sich herausgestellt, dass sich PaaS-Angebote momentan nur für in sich abgeschlossene Anwendungen eignen, die keine komplexe Datenverarbeitung und kein komplexes Anwendungsdesign erfordern. Die Daten, die diese Anwendungen benötigen, werden meist noch über einen ETL-Prozess aus den eigenen Rechenzentren der Unternehmen bezogen, da sie noch nicht in der Cloud verfügbar sind.
Abgrenzung zu IaaS und SaaS Eine Abgrenzung von PaaS- zu IaaS-Angeboten ist schwierig, da viele PaaS-Anbieter darunter liegende IaaS-Angebote nutzen und bündeln.AWS Elastic Beanstalk (beta). aws.amazon.com Amazon, 2010; abgerufen am 2. Juni 2011 Allerdings lassen die meisten PaaS-Angebote keinen direkten Zugriff auf das Betriebssystem zu, die PaaS-Dienste sind nur über APIs ansprechbar. Die Konfiguration von PaaS-Diensten kann sowohl über eine Weboberfläche als auch selbst wieder über eine API erfolgen. Der Nutzer einer PaaS-Umgebung muss sich nicht um das Betriebssystem, die Middleware und Laufzeitumgebung für seine Anwendung kümmern, wie es bei IaaS-Angeboten der Fall ist.W. Tonninger: Die Cloud-Gretchen-Frage: IaaS oder PaaS? 25. Februar 2011, businessreadyblog.wordpress.com abgerufen am 2. Juni 2011
Um PaaS- von SaaS-Angeboten abgrenzen zu können, zieht man am besten die Zielgruppe heran. SaaS-Anwendungen sind in der Regel explizit für Endanwender gedacht, besitzen eine graphische Bedienoberfläche und können auf IaaS- oder PaaS-Angeboten aufbauen. Dahingegen sind PaaS-Angebote für Entwickler gedacht und bieten ihnen eine Entwicklungsumgebung sowie einen Container für ihre Anwendungen und weitere Middleware-Dienste an. Entwickler können somit ihre gesamten Anwendungen in eine PaaS-Umgebung verteilen. Der Zugriff auf diese Middleware-Dienste geschieht über APIs.
Es existieren allerdings auch SaaS-Angebote wie Google Drive,Willkommen bei Google Drive. Google, 2011, drive.google.com abgerufen am 26. April 2012 die Entwicklern Schnittstellen zur Verfügung stellen. Sie sind allerdings zumeist dafür gedacht, die SaaS-Anwendung zu erweitern oder mit ihr zu kommunizieren (siehe Add-on-PaaS). Es existieren auch SaaS-Anwendungen ohne graphische Bedienoberfläche, sie sind aber nicht weit verbreitet.
Typen Application PaaS (aPaaS) / Stand Alone Umgebungen Unter aPaaS versteht man eine Cloud-Umgebung zum Erstellen und Betreiben von Geschäftsanwendungen, die durch eine graphische Benutzungsschnittstelle oder durch eine Programmierschnittstelle (API) Anwendern zur Verfügung gestellt wird. Ein Beispiel wäre eine Webanwendung zum Verwalten von Terminen, welche in der Google App Engine laufen könnte.
Integration and Governance PaaS (iPaaS) Im Gegensatz dazu steht iPaaS als Cloud-Umgebung zum Vermitteln zwischen heterogenen, Cloud-basierten Anwendungen durch Interoperabilität, Integration und Governance. Ein Beispiel wäre ein Adapter, der verschiedene Cloud-Dienste wie auch On-Premises-Dienste verbindet und dies wiederum als Cloud-Dienst anbietet, ohne dabei zwangsläufig eine graphische Bedienoberfläche zur Verfügung zu stellen. iPaas soll dabei die bisherige Integrations-Middleware ablösen und gemäß dem Cloud-Paradigma hochskalierbar sein. Anbieter solcher Lösungen sind bspw. Zapier, Integromat (Celonis), Lobster_data, MuleSoft, Jitterbit, Outsystems, Scheer PAS, Workato uvm.iPaaS: Integration for the Cloud Era. MuleSoft, 2011, mulesoft.com abgerufen am 3. Juni 2011
Add-on-Entwicklungsumgebungen Add-on-Entwicklungsumgebungen erlauben es, bestehende Software-as-a-Service-Anwendungen anzupassen. Das Vorgehen ist ähnlich wie beispielsweise die Anpassung von Microsoft Word oder Lotus Notes durch Makrosprachen oder von außen durch APIs, die von der SaaS-Anwendung zur Verfügung gestellt werden. PaaS-Entwickler benötigen hierzu meist Zugriff auf die SaaS-Anwendung selbst, entweder über ein Abo oder eine kostenlose Entwicklerlizenz.
Reine Anwendungsbereitstellung Einige PaaS-Angebote unterstützen nicht die Entwicklung, das Debuggen oder Testen von Anwendungen, sondern bieten nur den Betrieb von Anwendungen in einer skalierbaren Umgebung und darüber hinaus etwa Sicherheitsdienste an.
Offenes PaaS Bei offenen PaaS-Angeboten werden dem Entwickler weder Programmiersprache noch Datenbanksystem, Betriebssystem oder Server vorgegeben.Open Platform as a Service
Aufbau, Eigenschaften und Besonderheiten Laufzeit- und Entwicklungsumgebung Mit der Unterteilung von PaaS in Entwicklungs- und Ausführungsumgebung soll dem Entwickler ermöglicht werden, sich auf eine Entwicklungsumgebung wie zum Beispiel DjangoDjango – The Web framework for perfectionists with deadlines. 2011, djangoproject.com abgerufen am 3. Juni 2011 festzulegen, aber bei der Wahl der Ausführungsumgebung flexibel zu sein und hier auch zwischen Anbietern wechseln zu können.A. Lenk, M. Klems, J. Nimis, S. Tai, T. Sandholm: What’s Inside the Cloud? An Architectural Map of the Cloud Landscape. ICSE’09 Workshop, 23. März 2009
Um eine hohe Ausfallsicherheit zu erreichen, müssen von jeder Anwendung mindestens zwei Instanzen laufen, damit im Falle eines Fehlers bei einer Instanz die andere übernehmen kann.microsoft.com Da Anwendungen in PaaS-Umgebungen in der Regel sowohl Rechen- wie auch Daten- und andere Middleware-Dienste benötigen, ist zu beachten, dass beim Ausfall von einem der genutzten Dienste auch die Verfügbarkeit des Gesamtsystems leiden kann. Die Anbieter versprechen in ihren SLAs in der Regel nur eine Verfügbarkeit von 99,5, 99,9 oder 99,95 Prozent für jeden einzelnen Dienst, nicht aber für alle Dienste zusammen. Bei anbieterseitigen Verletzungen der SLAs werden meist nur Gutschriften zwischen 10 und 25 Prozent auf die Monatsrechnung erstattet.aws.amazon.comaws.amazon.com
Programmiermodell Das Programmiermodell in der Cloud ist vergleichbar mit Enterprise-Anwendungen (Cluster aus Application Servern mit Load Balancer), da beide skalierbar und ausfallsicher sein müssen. Um also skalierbare Anwendungen in der Cloud betreiben zu können, müsse diese auf Asynchronität und Zustandslosigkeit setzen. Ansonsten erreicht man lediglich ein Hosting in einer Cloud-Umgebung, das ohne gute Skalierbarkeit und Ausfallsicherheit auskommen muss.
Das Windows-Azure-Programmiermodell verlangt zum Beispiel drei Voraussetzungen, die erfüllt sein müssen, um die Skalier- und Ausfallsicherheit zu gewährleisten. Erstens muss eine Anwendung in eine oder mehrere logische Rollen unterteilt werden, zweitens müssen mehrere Instanzen einer Rolle gleichzeitig laufen und drittens muss die Anwendung sich auch noch korrekt verhalten, wenn eine Instanz einer Rolle abstürzt. Zusätzlich darf die Anwendung keinen Zustand speichern, da der Load Balancer im Gegensatz zu beispielsweise Amazons Elastic Beanstalk keine Sticky Sessions/Cookies verwendet.
Veränderungen am Betriebssystem müssen, sofern sie überhaupt möglich sind, bei jedem Start einer Instanz vorgenommen werden, und Daten, wenn sie lokal gespeichert werden können, sind in der Regel nicht für alle Instanzen verfügbar und können beim Neustart einer Instanz verloren gehen. Um die Kommunikation zwischen Instanzen zu ermöglichen, muss in der Regel auf ein Message Queuing System gesetzt werden, das zum Teil sogar eine At-least-once-Semantik verfolgen muss, somit muss die Verarbeitung der Messages idempotent sein.
Beim Aufbau einer PaaS-Umgebung können also in der Regel bestehende Enterprise-Programmiermodelle wie JEE oder das .Net-Framework verwendet werden, jedoch muss sich der Entwickler eventuell auf Änderungen einstellen, wenn er bisher noch keine skalierbaren Anwendungen entwickelt hat.
Entwicklungsprozess Der Entwicklungsprozess unterscheidet sich nicht groß von der Anwendungsentwicklung für Application Server, wie zum Beispiel JEE. Anwendungen werden lokal spezifiziert, entworfen, entwickelt, getestet, paketiert und schließlich in die Cloud-Plattform übertragen. Viele Anbieter wie Google App Engine, Microsoft Azure oder Amazons Elastic Beanstalk erlauben es, mehrere Versionen der gleichen Anwendung parallel laufen zu lassen, um so zum Beispiel Live-, Stage- und Testumgebungen anzubieten und damit auch ein Rollback zu einer früheren Version zu ermöglichen. Die großen Anbieter bringen auch direkte Unterstützung für IDEs mit, um die Anwendungen direkt aus der IDE in die Cloud-Umgebung zu übertragen.
Ein PaaS-Anbieter muss also dafür sorgen, dass alle Versionen einer Anwendung gespeichert werden, und kann zusätzlich IDE-Komfortfunktionen anbieten, um die Anwendungen aus der IDE heraus zu verteilen.