Java-Softwareplattformen aus der Cloud

PaaS-Dienste von Amazon, Google, VMware und Co. im Vergleich

Platform as a Service (PaaS) erlaubt es, Anwendungen ohne eigene IT-Infrastruktur direkt in der Cloud zu betreiben. Wir analysieren, was die Cloud-Dienste Google App Engine, Amazon Beanstalk, Cloud Bees und VMware Cloud Foundry in der Praxis leisten.

In einer IaaS-Cloud (Infrastructure as a Service) wie Amazon EC2 stehen nur "nackte" Rechner und Storage zur Verfügung. Soll eine selbst geschriebene Anwendung darauf zum Laufen gebracht werden, muss eine Infrastruktur wie zum Beispiel ein Application Server installiert werden.

Die Alternative dazu ist die Nutzung einer PaaS (Platform as a Service) im Rahmen des Cloud Computing. Bei einer solchen Plattform ist die Installation zusätzlicher Infrastruktur nicht notwendig. Man kann Anwendungen direkt in der Cloud installieren. Außerdem bietet sie Lösungen für den Betrieb und das Monitoring der Anwendung. Das Skalieren der Anwendung bei Lastspitzen erfolgt automatisch.

PaaS bieten oft proprietäre Services mit fertigen Funktionalitäten an, die bei der Entwicklung von Anwendungen hilfreich sind. Beispielsweise enthält die Amazon-Cloud-Plattform einen Service, über den per Kreditkarte mit einem Kunden abgerechnet werden kann. Durch die Nutzung solcher Services ist man allerdings sehr von der PaaS abhängig, da Anwendungen nicht so einfach auf andere Plattformen migriert werden können, die solche Services nicht anbieten.

Bei der Entwicklung von Enterprise-Anwendungen stellt die Java-Plattform die wichtigste Ablaufumgebung dar. Bisher war das Angebot an PaaS-Plattformen für Java begrenzt, aber in den letzten Monaten sind viele neue Angebote aufgetaucht. Daher lohnt sich ein Blick auf den Markt in diesem Bereich.

Aufmacherbild: rubysoho, Fotolia.de

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.

Details: Übersicht über die Anwendungen in der Google App Engine.
Details: Übersicht über die Anwendungen in der Google App Engine.
Foto: Eberhard Wolff

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.

So geht es: Anlegen einer neuen Anwendung mit Google App Engine.
So geht es: Anlegen einer neuen Anwendung mit Google App Engine.
Foto: Eberhard Wolff

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