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.
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.
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.”
Weitere Beiträge
von Carsten Fröhlich
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Carsten Fröhlich
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.