Der Cloud-Trend (#Devoxx 2010)

Keine Kommentare

In diesem Jahr war „Cloud Computing“ ein wesentliches Thema der Devoxx, nachdem es im letzten Jahr noch ein Randthema war, welches nur Wenige interessierte. Dies liegt an den sich immer schneller ändernden bzw. erhöhenden Anforderungen, was die Bereitstellung von Webservern angeht. Der Vorteil von Cloud Computing liegt natürlich auf der Hand. Der Kunde bucht nicht einen festen Server sondern zahlt für die benötigte CPU Uptime. Dies kann bei wenig genutzten Anwendungen eine erhebliche Kostenersparnis bedeuten. Auch braucht er sich nicht mehr darum zu sorgen, dass die Hardware nach kurzer Zeit erneuert werden muss. Dies erledigt der Anbieter des Cloud Webspaces für ihn. Und sollte die Leistung der Server nicht mehr ausreichen, werden, je nach Vertrag, automatisch ein oder mehrere weitere Server gestartet. Die Anwendung wird somit gespiegelt und per Lastverteilung die anfallenden Anfragen sinnvoll verteilt, um die Last für den einzelnen Server zu reduzieren. Dies alles wird als Service des Cloud-Anbieters angeboten und muss nicht mehr durch den Kunden selbst administriert werden.
Hierbei ergeben sich neue Anforderungen für die Entwickler, welche bei der „herkömmlichen“ Entwicklung von Webanwendungen, also die Entwicklung von Anwendungen für Server im Rechenzentrum, so nicht aufgetreten sind.

Laut George Reese, welcher den sehr interessanten Vortrag „Designing Java Systems to operate at a cloud“ auf der Devoxx gehalten hat, muss ein noch höheres Augenmerk auf die Sicherheit von Daten gelegt werden, da der Entwickler im Einzelfalle nicht wissen kann, wo sich der Server, auf dem die Anwendung liegt, befindet. Evtl. steht er in einem Drittland, welches andere gesetzliche Bestimmungen für den Datenschutz hat als ein Land der EU oder in dem vielleicht sogar die Korruption höher ist, was die Datensicherheit ebenfalls stark einschränkt.

DB for Cloud

Ebenso sollte die Datenbank Reese zufolge nicht auf dem Cloudserver abgelegt werden, da die Daten, die dort gespeichert sind, sonst von nicht autorisierten Personen eingesehen werden könnten (Stichwort Datenschutzbestimmungen, Korruption, s. o.). Dies stellt an den Entwickler die Anforderung, auch den Datentransfer zwischen Datenbank und Anwendung zu verschlüsseln, da sich die Datenbank auf einem anderen Server befindet und der Transfer der Daten über das Internet erfolgen muss. Außerdem hält er es für notwendig, den Datentransfer auch dann zu verschlüsseln, wenn er den Server gar nicht verlässt. Gegebenenfalls müssen auch die Daten selber verschlüsselt werden.

Der Entwickler muss sich auch Gedanken über IDS Systeme (Intrusion Detection System) machen, also Systeme zur Abwehr von Angriffen auf das eigene Netzwerk bzw. die Anwendung. Eine Aufgabe, die bisher den Serveradministratoren zufiel.

Ein weiteres Problem sind laut Reese die EJBs. Diese sind aufgrund ihres Lebenszyklus, welcher in der Anwendung fest angegeben wird, für Cloud computing ungeeignet, da sie im Falle des Hochfahrens einer neuen Serverinstanz nicht dupliziert werden können. Auch SOAP und RMI sind für cloud computing nicht mehr geeignet.

Java Tips, G. Reese

Anwendungen die bisher Multi-Threading fähig waren, müssen nun Multi-Processing fähig entwickelt werden.

Aufgrund der Performance des Datentransfers bzw. der Datenverarbeitung rät Reese auch dazu, in den meisten Fällen bei der Art der Datenspeicherung umzudenken. So sollte der Entwickler verstärkt NoSQL-Datenbanken anstelle von relationalen Datenbanken verwenden, da diese bei häufigen Datenzugriffen bzw. –änderungen performanter agieren können. Allerdings rät er nicht zu einer vollkommenen Abwendung von relationalen Datenbanken. Reese meint, das die relationalen Datenbanken für die Datenintegrität sehr wohl eine Daseinsberechtigung haben. Der Entwickler sollte hier also je nach Anwendungsfall abwägen, welches Modell sich besser eignet.

Die codecentric AG hat mit der INA-Anwendung für die Firma Eismann, über die bereits eine Success-Story veröffentlicht wurde, ihre erste Anwendung in die Cloud gebracht und hier sehr gute Erfahrungen gesammelt. Aus den Vorträgen der Devoxx habe ich einige Anregungen mitnehmen können, um an der bereits erfolgreich in der Cloud laufenden Anwendung noch weiteren Feinschliff anlegen zu können.

Folgendes Fazit habe ich persönlich aus den Vorträgen auf der Devoxx zum Thema Cloud Computing mitgenommen:

Zur Entwicklung von Anwendungen für die Cloud muss der Entwickler in vielen Bereichen umdenken und Neues erlernen, nicht aber in allen Bereichen. Die Entwicklung in der Cloud ist eine notwendige Evolution der Entwicklung von Anwendungen für das Internet um in der immer schneller werdenden Welt des Internets mithalten zu können.

Ich möchte diesen Beitrag mit zwei Zitaten von Reese aus dessen Vortrag beenden, da diese beiden Zitate eine hervorragende Zusammenfassung sind.

„Trust no one, demand transparency, and assume all other components have been compromised … even in a private cloud.”
“Doing development for the cloud in Java doesn’t require you to re-think everything.”

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.