Categories
Management @de

Die Architektur skalierbarer Applikationen in der Cloud

Das Applikationen für die Cloud neu entwickelt werden müssen ist kein Geheimnis. Dennoch zeigen Ausfälle bei populären Anbietern, dass so manche Architekturen nicht das wirkliche Potential von Cloud Infrastrukturen ausnutzen. Cloud Management Plattform Anbieter Rightscale hat hierzu eine Blogserie veröffentlicht, die zeigt, worauf man achten sollte, wenn eine Anwendung in der Cloud betrieben wird.

Applikationen müssen für die Cloud entwickelt werden

Man muss verstehen, dass Cloud Computing viel mehr bedeutet, als nur ein paar Server zu nutzen und miteinander zu verbinden. Es geht um die gesamte Architektur des eigenen Systems bzw. der eigenen Anwendung, die auf der virtuellen Infrastruktur (IaaS) aufgebaut wird. Wie ich schon in einem Artikel für die Computerwoche geschrieben habe:

Viele Unternehmen entwickeln ihre Cloud-Applikation “daheim” in den eigenen vier Wänden. Erst nach der Fertigstellung soll der Rollout auf eine Cloud-Infrastruktur oder Cloud-Plattform erfolgen. Das ist ein Fehler.

Inbesondere IaaS-Umgebungen (Infrastructur as a Service) wie die Amazon Web Services oder Microsoft Windows Azure vermitteln den Eindruck, nur eine Vielzahl von virtuellen Maschine bereitzustellen. Den Rest übernehme die “Cloud automatisch”. Das ist fatalerweise auch der Tenor, der von vielen Medien verbreitet wird und damit ein völlig falscher Eindruck von einer Cloud entsteht.

Eine Cloud-Anwendung ist nur so viel wert wie die Architektur, auf der sie basiert. Eine Anwendung muss direkt für die Cloudentwickelt werden – Skalierbarkeit und Hochverfügbarkeit sind von Beginn an mit zu bedenken. Eine Anwendung sollte eigenständig weitere virtuelle Maschinen hochfahren können, wenn mehr Leistung benötigt wird (Skalierbarkeit) bzw. die nicht mehr benötigten virtuellen Maschinen auch selbstständig wieder herunterfahren. Genauso verhält es sich, wenn eine virtuelle Maschine in einen fehlerhaften Zustand gerät. Auch hier muss die Anwendung selbst dafür sorgen, dass entsprechend eine virtuelle Maschine als Ersatz hochgefahren wird und die defekte Maschine aus dem System verschwindet (Hochverfügbarkeit).

Die Anwendung muss daher in der Lage sein, auf jeder beliebigen virtuellen Maschine (VM) einer Cloud-Infrastruktur zu funktionieren. Das liegt unter anderem daran, dass jederzeit eine VM ausfallen kann und eine andere neu hochgefahren werden muss. Und auch die Daten, auf die eine Anwendung operiert, befinden sich zwangsläufig nicht mehr an einem einzigen Ort, sondern sind über die Cloud verteilt gespeichert.

Mehr…

Rightscale: Architektur skalierbarer Applikationen in der Cloud

Rightscales Services Architect Brian Adler hat eine Blogserie (vier Beiträge) veröffentlicht, in der er recht detailliert beschreibt, wie die Architektur einer Applikation in der Cloud aussehen sollte.

  1. Architecting Scalable Applications in the Cloud
  2. Architecting Scalable Applications in the Cloud: The Application Tier
  3. Architecting Scalable Applications in the Cloud: The Caching Tier
  4. Architecting Scalable Applications in the Cloud: The Database Tier
Categories
Analysen

Der Weg in die Cloud ist schwerer als man denkt!

Sollen Anwendungen in die Cloud verlagert werden, heißt es, diese auch für die Cloud zu entwickeln und sich nicht starr an die bekannten Pattern zu halten. Denn die Cloud verzeiht keine Ineffizienz. Möchte man den Vorteil der Cloud wie Infrastructure-as-a-Service (IaaS) oder Platform-as-a-Service (PaaS) für sich nutzen, bedeutet dies mehr Arbeit, als die meisten IT-Abteilungen vermutlich glauben.

Unternehmens-IT ist sehr komplex

Trotz der großen Euphorie um die Cloud, sollte man nicht vergessen wie komplex die Unternehmens-IT im Laufe der Zeit geworden ist. Dabei ist die Komplexität jedoch nicht das Ergebnis der IT oder der Technologien selbst. Es ist die Summe aller Einflüsse aus dem Unternehmen und was von der IT erwartet wird. Alle Technologien müssen aufeinander optimal abgestimmt werden, die internen Prozesse unterstützen und zugleich noch schnellstmöglich und mit minimalem Budget realisiert werden.

In der Regel bedeutet dies, kommerzielle Softwarelösungen einzukaufen. Diese an die Bedürfnisse des Unternehmens anzupassen und anschließend so zu integrieren, dass manuell so wenig wie möglich angepasst werden muss und gleichzeitig das Maximum an Informationen aus dem Unternehmen gezogen werden kann. Mehrere proprietäre Softwarelösungen plus deren Integration führen zu einer komplexen IT-Umgebung. So kann eine IT-Infrastruktur schnell aus z.T. mehreren hunderten von Anwendungen bestehen. Diese wurden unabhängig voneinander und mit unterschiedlichen Design-Standards entwickelt und tragen die Handschrift verschiedener Architekten.

Die Migration in die Cloud ist eine Herausforderung

Die bestehenden Anwendungen in die Cloud zu migrieren ist eine nicht zu unterschätzende Aufgabe. Im Gegenteil, es ist sehr wahrscheinlich, dass die meisten on-Premise Applikationen aus dem Portfolio trotz eines neuen Entwurfs nicht ihren Weg in die Cloud finden. Die IT-Abteilungen werden es nicht schaffen, die bestehenden proprietären Lösungen “einfach so” in die Cloud zu verschieben, das funktioniert nicht. Jede einzelne Lösung für sich ist ein Individuum und hat spezielle Konfigurationen und Eigenschaften, die eine Cloud so nicht unterstützen kann.

Fassen wir mal ein paar Punkte zusammen:

  • Anpassung vornehmen, damit die Anforderungen erfüllt werden. – Nicht einfach!
  • Integration mit weiterhin bestehenden lokalen Anwendungen (hybrid). – Nicht einfach!
  • Dokumentation der Konfigurationen für eine erneute Migration. – Nicht einfach!
  • Sicherstellen der korrekten Lizenzierung. – Nicht einfach!
  • . . . – Nicht einfach!

Soll ein selbst entwickeltes System in die Cloud verlagert werden, wird es nicht einfacher. Es ist vergleichbar mit dem re-Design einer COBOL Batch-Anwendung für Mainframes in eine objektorientierte Variante. Denn so wie man von der COBOL Applikation in die objektorientierte Applikation die Objekte im Hinterkopf behalten musste, so muss man heute die Eigenschaften und Möglichkeiten der Cloud berücksichtigen.

Ist eine Anwendung erfolgreich in die Cloud migriert worden, bedeutet das jedoch nicht, dass es mit der Zweiten einfacher wird. Im Gegenteil, es kann sogar schwieriger werden. Denn jede Anwendung hat ihre individuellen Eigenschaften und basiert i.d.R. auf anderen technischen Standards und einem eigenen Design.

Zeit und Geduld

Verfolgt man das Ziel, das gesamte Portfolio in die Cloud zu verlagern, muss man sich auf einen langen und hügeligen Weg vorbereiten. Das saubere re-Design einer Anwendung oder gar der gesamten IT-Umgebung für die Cloud benötigt Zeit und vor allem Geduld. Denn wenn es so einfach wäre, gebe es schon mehrere Referenzprojekte.


Bildquelle: http://ccis.ucsd.edu