Java-Softwareplattformen aus der Cloud

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

Amazon Beanstalk

Amazon bietet schon seit 2006 verschiedene Cloud Services an. Dazu zählen virtuelle Rechner (Elastic Compute Cloud, EC2), Storage (Simple Storage Service, S3), aber auch komplexere Dienste wie schlüsselfertige MySQL-kompatible Datenbanken (Relational Database Service, RDS).

Mit Beanstalk ("Bohnenranke") hat Amazon ein Angebot bereitgestellt, das die Installation und den Betrieb von Java-Anwendungen auf der Amazon-Plattform deutlich vereinfacht. Die Anwendungen werden dabei auf EC2 installiert. Auf dem virtuellen Rechner läuft ein Linux mit der OpenJDK-Java-Implementierung und dem Java-Web-Server Tomcat. Um mit Lastspitzen umzugehen, wird ein Load Balancer sowie der Amazon Auto Scaling Service verwendet.

Schritt für Schritt: Anlegen einer neuen Anwendung mit Amazon Beanstalk.
Schritt für Schritt: Anlegen einer neuen Anwendung mit Amazon Beanstalk.
Foto: Eberhard Wolff

Er startet bei hoher Last automatisch zusätzliche EC2-Instanzen. Dabei können unterschiedliche Indikatoren für die Last genutzt werden, wie die Latenzzeit eines Request oder die CPU-Last auf den einzelnen Rechnern. Die Skalierung durch das Starten zusätzlicher Rechner ist recht grobgranular: Wenn die Lastgrenze eines Rechners erreicht ist, muss gleich eine ganze neue Instanz gestartet werden, während sich beispielsweise bei Google App Engine mehrere Kunden einen Rechner teilen können.

Die verschiedenen Versionen einer Anwendung werden auf S3 gespeichert, so dass sie später wiederhergestellt werden können. Es gibt außerdem ein Eclipse Plugin, das den Zugriff auf einen Beanstalk-Server so einfach macht wie sonst den Zugriff auf einen lokalen Tomcat. Ein Kommandozeilen-Werkzeug steht ebenfalls zur Verfügung.

Durchblick: Übersicht über die Events einer Anwendung bei Amazon Beanstalk.
Durchblick: Übersicht über die Events einer Anwendung bei Amazon Beanstalk.
Foto: Eberhard Wolff

Das System kann an eigene Anforderungen angepasst werden: Die Parameter für den Tomcat können modifiziert werden, ein Login auf die laufende Maschine ist möglich. Sogar die Images für die Rechner können modifiziert werden, so dass praktisch jede erdenkliche Anpassung möglich ist.

Der Einstieg in die Plattform ist sehr einfach: Beanstalk bietet beim ersten Login die Installation einer Beispielanwendung an und innerhalb weniger Minuten steht ein laufendes System zur Verfügung. Für das Ablegen der Daten steht der Relational Database Service bereit, so dass ein klassisches Enterprise-Java-Programmiermodell verwendet werden kann. Alternativ sind auch NoSQL-Lösungen wie Amazon SimpleDB verfügbar und es gibt zahlreiche andere Dienste, die teilweise auch von anderen Firmen auf der EC2-Infrastruktur angeboten werden.

Alles im Griff: Monitoring einer Anwendung mit Amazon Beanstalk.
Alles im Griff: Monitoring einer Anwendung mit Amazon Beanstalk.
Foto: Eberhard Wolff

Amazon Beanstalk selbst ist kostenlos. Die verwendeten EC2-Instanzen und die anderen Amazon-Dienste wie S3 sind bezahlpflichtig. Allerdings bietet Amazon Neukunden für ein Jahr ein großzügiges Kontingent an kostenloser Nutzung an, so dass die Infrastruktur ausführlich getestet werden kann, bevor sie für produktive Anwendungen genutzt wird.

Amazon Beanstalk ist im Moment im Beta-Stadium. Da allerdings Beanstalk lediglich Dienste aus dem Amazon-Cloud-Angebot kombiniert und einfacher nutzbar macht, ist das Risiko beim Einsatz dieser Beta-Version eher gering. Wegen des Beta-Status steht Beanstalk nicht in allen Amazon-Rechenzentren, sondern nur in der US-East-Region zur Verfügung.

Amazon Beanstalk auf einen Blick

Vorteile:

  • Bewährte Cloud-Infrastruktur als Basis

  • Übliches Enterprise-Java-Programmiermodell (Tomcat Web Server/ relationale Datenbank)

  • Daher geringe Lock-In-Gefahr auf Code-Ebene

  • Zahlreiche weitere Services (RDS, SimpleDB, Payment ...)

Nachteile:

  • Zur Zeit noch in Beta und nur in US-East verfügbar

  • Grobgranulare Skalierung durch zusätzliche Rechner