Google App Engine
Google hat bereits 2008 damit begonnen, eine PaaS anzubieten und war damit ein Pionier im Java-PaaS-Markt. Neben Java unterstützt die Google App Engine (GAE) auch Python-Anwendungen. Es gibt ein GAE-Angebot für den Betrieb von Anwendungen, die im Internet jedem zur Verfügung stehen sollen. Die Kosten hängen davon ab, wie viel Bandbreite, Storage, CPU-Zeit usw. genutzt wird. Zum Testen gibt es ein freies Kontingent. Es ist auch möglich, ein Budget für eine Anwendung festzulegen, um so die Kontrolle über die Kosten zu haben. Für Anwendungen, die nur innerhalb einer Firma verwendet werden sollen, gibt es Google App Engine for Business. Dabei erfolgt die Abrechnung pro Anwendung und Benutzer und es gibt andere SLAs.
Google App Engine treibt den PaaS-Ansatz recht weit: Benutzer haben keinen Zugriff auf das zugrundeliegende Betriebssystem. Anwendungen können auf einem oder vielen Servern laufen, ohne dass der Entwickler es bemerkt. Lastverteilung und Skalierung der Anwendung sind transparent. Um dies zu ermöglichen, hat GAE ein sehr eingeschränktes Programmiermodell. Die auf GAE nutzbaren Java-Klassen sind in einer White List beschrieben. So ist es beispielsweise nicht möglich, neue Threads zu starten; der Zugriff auf das File-System ist nicht erlaubt und ein Request darf nicht mehr als 30 Sekunden Bearbeitungszeit erfordern. Durch diese Einschränkungen ist die Nutzung einiger Java-Frameworks gar nicht möglich oder nur sehr aufwändig zu realisieren. Google bietet eine Liste von Frameworks an, die unter GAE laufen.
Als Datenbank steht eine NoSQL-Datenbank zur Verfügung. Eine relationale Datenbank ist angekündigt, soll dann aber nur im Rahmen von Google App Engine for Business zur Verfügung stehen. Daher muss die Persistenz-Architektur einer Anwendung, die auf GAE laufen soll, entsprechend angepasst werden. Eine Portierung auf eine andere Infrastruktur wird dadurch natürlich erschwert.
GAE bietet zahlreiche zusätzliche Services wie einen Cache, XMPP-basiertes Instant Messaging, Bildverarbeitung oder die Speicherung von Blobs. Außerdem kann von GAE aus natürlich auf andere Google Services zugegriffen werden, die über Web Services-APIs angesprochen werden können. Es gibt auch eine Integration in die Google-User-Verwaltung. Für Entwickler stehen darüber hinaus Plugins für Eclipse zur Verfügung, so dass ein Deployment von dieser Entwicklungsumgebung direkt auf GAE möglich ist. Mit Hilfe des GAE SDKs (Software Development Kit) können Anwendungen auch testweise lokal installiert werden und GAE kann mit dem SDK auch von der Kommandozeile aus gesteuert werden. Ein einfaches Monitoring ist ebenfalls für Anwendungen verfügbar.
Google App Engine auf einen Blick
Vorteile:
-
Automatische Skalierung der Anwendung
-
Lange am Markt, bewährt
Nachteile:
-
Wesentliche Einschränkungen gegenüber dem üblichen Java-Programmiermodell
-
Zur Zeit keine relationale Datenbank verfügbar
-
Durch die Einschränkungen ergeben sich Abhängigkeiten in der Anwendung (Lock In)
-
Keine Eingriffsmöglichkeiten oder Tuningmöglichkeiten auf Ebene des Web Servers oder Betriebssystems