Montag, 18. Oktober 2010

Java in the Cloud - Erfahrungen beim Deployen einer Applikation mit der Spring "CloudFoundry"

Liebe Leser!

Gestern habe ich erstmals eine Java Applikation in der Cloud gestartet. Das Spring Service CloudFoundry stellt einen vollständigen Spring Stack zur Verfügung:
  • Apache
  • Spring tc Server (das ist der Spring Enterprise Tomcat) oder Tomcat 5.5
  • mySQL.

CloudFoundry verwendet als Träger-Cloud-Service Amazon EC2 und bietet also einen Platform as a Service (PaaS) Aufsatz auf das Amazon Infrastructure as a Service (IaaS) Angebot.

Soweit - so gut. Was waren nun die Fallstricke?
  • Zuerst muss man einen Amazon Web Services Account anlegen.Wenn man danach in CloudFoundry seinen Amazon Access Key validieren will, schlägt das fehl. Warum? 
    • Nun, man muss sich zuvor bei Amazon für EC2 anmelden, dann funktioniert auch die Validierung. Danach kann man sich die notwendigen Key Pairs von CloudFoundry generieren lassen.
  • Beim Deployen einer Applikation wird das Eingabefeld "Web Server - Public IP" angezeigt. Sobald man hier etwas einfüllt, schlägt die Feldvalidierung immer fehl. Was tun? 
    • Nun, das Feld einfach freilassen, dann wird die Applikation deployed und man gelangt über einen angebotenen Link auf die deployte Applikation in der Cloud - Voila!
Weiterführende Probleme, die mir bei meinem ersten Test aufgefallen sind:
  • Applikations-Logfiles
    • Beim Tracen von Problemen ist es essentiell, ein "tail -f" auf die Applikationslogfiles mitlaufen zu lassen. Fraglich ist, wie das über CloudFoundry geht bzw. ob so etwas Feines wie bei Hudson (CI Server) angeboten wird - hier kann man einem Build in Echtzeit im Web beobachten. Alternative: Ich nehme an, man kann auch auf den Amazon Server direkt verbinden und die Logfiles dort auswerten.
  • Daten in der Datenbank
    • Falls die Instanz gestoppt wird - aus welchem Grund auch immer - wie kommt man zu den Daten in der Datenbank? Vermutung: Wie oben direkt auf die Amazon Instanz verbinden und einen Export machen - ist das auch automatisierbar?
  • Deployment einer Version mit minimaler Downtime
    • Das Deployen einer Mini Applikation hat ca. 4 Minuten gedauert. Wenn ich eine neue Version deployen will (und vorausgesetzt, es ist keine Änderung der Datenstruktur mit Datenmigration notwendig), wie halte ich die Downtime so gering als möglich? So wie ich es verstanden habe, kann man nicht einfach den Apache auf einen neu deployten Stack umschalten bzw. habe ich dazu noch keine Informationen gefunden. Wahrscheinlich muss man dazu wieder auf die Amazon Instanz gehen und das Procedere händisch ausführen.
Ad Kosten: Soweit ich gesehen habe, routet CloudFoundry - das übrigens noch im BETA Stadium ist - einfach die Amazon kosten durch und verrechnet keinen Aufschlag. Die Frage ist, ob mit der Verfügbarkeit von VMforce das CloudFoundry Service nicht eingestellt werden wird. VMWare tut sich ja mit Salesforce.com zusammen, um nicht Amazon das Geschäft mit dem IaaS zuschanzen zu müssen.

Euer 
JWR@coopXarch.

Keine Kommentare:

Kommentar veröffentlichen