Performance-Tipps

Anwendungen in die Cloud migrieren

25.12.2012
René Büst ist Technology Analyst & Advisor mit dem Fokus auf Cloud Computing und IT-Infrastrukturen. Er ist Mitglied des weltweiten Gigaom Research Analyst Network und gehört weltweit zu den Top 50 Bloggern in diesem Bereich. Seit Ende der 90er Jahre konzentriert er sich auf den strategischen Einsatz der Informationstechnologie in Unternehmen.
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.

Merke: Eine Cloud-Anwendung ist nur soviel wert wie die Architektur, auf der sie basiert.
Merke: Eine Cloud-Anwendung ist nur soviel wert wie die Architektur, auf der sie basiert.
Foto: tele52, Shutterstock.com

Denn: Eine Cloud-Anwendung ist nur so viel wert wie die Architektur, auf der sie basiert. Eine Anwendung muss direkt für die Cloud entwickelt 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.

Wie man an diesen wenigen Beispielen gut erkennt, lassen sich die so genannte Legacy-Anwendungen nicht ohne weiteres 1:1 in die Cloud migrieren und damit skalierbar und hochverfügbar machen. Stattdessen müssen Anwendungen für die Cloud frühestmöglich an die Eigenschaften einer (proprietären) Cloud-Computing-Infrastruktur angepasst und teilweise exakt auf deren Spezifikation abgestimmt werden. Kurzum müssen Cloud-Anwendung von Beginn an in und für die Cloud entwickelt werden. Dazu gehört es, die Anforderungen der zukünftigen Cloud-Infrastruktur bzw. Plattform zu analysieren und individuell zu berücksichtigen.

Achten Sie auf die Leistungsmetriken

Ein Trend in vielen Unternehmen sind die "Federated Clouds". In diesem Fall liegen einige Anwendungen in einer Public Cloud, manche in einer Private Cloud und der Zugriff auf die restlichen Legacy-Anwendungen findet via VPN statt. Ein Performance-Management-System überwacht alle Informationen, die währenddessen übertragen werden und fährt Auswertungen über sämtliche Aktivitäten der Anwendungen. Die Systeme achten besonders auf die Performance und halten fest, wie leistungsstark die Cloud-Umgebung ist, auf der die jeweilige Anwendung betrieben wird. Eine geringe Bandbreite, Latenzen, zu wenig Speicherplatz, langsame Festplatten, geringer Arbeitsspeicher und geringe CPU-Zyklen sorgen für schlechte Leistungsmetriken einer Anwendung. Weitere Indikatoren sind nicht ausreichende Ressourcen und eine schlechte Anwendungsarchitektur, die zu einer unerwünschten Performance einer Anwendung führen, wenn deren Prozesse nicht korrekt über die Cloud-Ressourcen verteilt sind.

Performance-Probleme können die Servicebereitstellung erheblich beeinflussen und dürfen daher unter keinen Umständen unterschätzt werden. Ein Anwender unterscheidet nicht zwischen einer schlechten Performance und einer Nichtverfügbarkeit. Beide Fälle sorgen dafür, dass er den Service nicht erwartungsgemäß nutzen kann. Eine schlechte Performance ist daher ein No-Go und muss unter allen Umständen vermieden werden.

Worauf Sie achten sollten, wenn Sie Ihre Anwendung performant in die Cloud migrieren wollen, beschreiben die folgenden fünf Tipps.

1. Die Cloud Umgebung ist entscheidend

Die Performance einer Applikation hängt unmittelbar von der Cloud-Umgebung ab, in der sie bereitgestellt wird. Sie müssen daher vorab sicherstellen, dass die Performance der Anwendung auf die entsprechende Infrastruktur abgestimmt wird und deren Eigenschaften berücksichtigen. Nur dann können Sie die Vorteile der Cloud für sich und die Applikation nutzen. Dazu sollten Sie beachten, dass sich die Leistungsmetriken einer Cloud unterscheiden können.

2. Planung, Partitionierung und Skalierbarkeit

Nur mit ausreichenden Ressourcen lassen sich performante Cloud-Applikation bereitstellen. Deshalb ist die Kapazitätsplanung ein grundlegender Bestandteil einer Cloud-Strategie. Darüber hinaus spielt auch die Skalierbarkeit eine wichtige Rolle. Wurde die Architektur vorab gut durchdacht, stellt die Anwendung von allein sicher, dass Engpässe reduziert werden. Ressourcenintensive Prozesse können voneinander separiert und die Last damit über mehrere virtuelle Maschinen innerhalb der Cloud Infrastruktur verteilt werden. Im Umkehrschluss bedeutet das, die Anwendung für die Eigenschaften der Cloud zu entwickeln.

3. Eine Private Cloud führt nicht zwangsläufig zum Erfolg

Gerade deutsche Unternehmen entscheiden sich für den Weg in eine Private Cloud im eigenen Rechenzentrum. Damit behalten sie die Kontrolle über die Ressourcen und Daten und sogen sich somit selbst um Themen wie Datensicherheit und Datenschutz. Zu beachten ist jedoch: Eine Private Cloud verbessert zwar die Agilität eines Unternehmens und lässt die Systeme bis zu einem gewissen Grad skalieren, diese Skalierbarkeit lässt sich aber mit einem manuellen Prozess vergleichen. Ressourcenengpässe müssen ab einem gewissen Zeitpunkt nach wie vor durch das eigene Personal aufgefangen werden, indem weitere Hardwarekomponenten in Form von Speicherplatz, Arbeitsspeicher oder Rechenleistung nachgerüstet werden. Hier handelt es sich um eine einfache Rechnung: Für jede virtuelle Ressource die hochgefahren wird, muss im Hintergrund eine physikalische Hardware die entsprechende Leistung bereitstellen.

4. Service Level Agreements

Innerhalb einer Public Cloud bzw. Virtual/Managed Private Cloud lässt sich per Service Level Agreement (SLA) die Performance optimieren. In den SLA können Anwender die zu erwartenden Metriken der Verfügbarkeit und Leistung festhalten, welche die Cloud Umgebung zu jedem Zeitpunkt erfüllen muss. Dazu sollte besonders auf die Performance der Anwendung selbst und die Leistung des Netzwerks geachtet werden. Mit beiden Werten lassen sich die notwendigen Performance-Metriken der Cloud-Umgebung definieren. Um die versprochenen einzelnen Metriken besser messen zu lassen, kann es zudem sehr hilfreich sein, die Performance der Anwendung in kleinere Parameter zu zerlegen.

5. Die Cloud löst nicht alle Probleme

Mit der Migration in eine Cloud-Umgebung werden zwangsläufig nicht alle Performance-Probleme einer Anwendung gelöst. Es besteht sogar die Möglichkeit, dass die Performance in der Cloud sinkt und weitere Probleme mit sich bringt. Daher ist die dauerhafte Überwachung sämtlicher Anwendungsmetriken unabdingbar, um ein Gefühl für die Leistung der Cloud und der jeweiligen Anwendung zu bekommen. Der Cloud-Nutzer kontrolliert damit im Übrigen aktiv das Einhalten der vereinbarten Service Levels und stellt bis zu einem gewissen Grad die Performance und Skalierbarkeit der Anwendung in der Cloud-Umgebung des Anbieters sicher.

Fazit

Unabhängig von der Performance gilt es bei der Entwicklung einer Anwendung für die Cloud eines zu beachten: Design for Failure! Anders als das bisher allgemeine Verständnis es vorgibt, stellen Cloud-Infrastruktur-Anbieter wie die Amazon Web Services oder Microsoft Windows Azure "nur" Ressourcen zur Verfügung, mit denen sich ein virtuelles, skalierbares und hochverfügbares Rechenzentrum aufbauen lässt. Während der Entwicklung einer Cloud-Anwendung ist daher grundsätzlich darauf zu achten, keinen Single Point of Failure zu schaffen. Außerdem sollte immer davon ausgegangen werden, dass zu jedem Zeitpunkt etwas schief gehen kann. Das Ziel muss daher darin bestehen, die Anwendung zu jedem Zeitpunkt funktionsfähig zu halten - selbst dann, wenn die darunter liegende Hardware bzw. Infrastruktur Fehler aufweist.

Alles live auf dem CloudOps Summit 2012 erleben

Zum Schluss noch ein Veranstaltungshinweis: Der CloudOps Summit 2012 am 20.09.12 in Frankfurt konzentriert sich genau auf diesen Themenkomplex. Zwei Keynotes, mehrere Kurzvorträge und drei Workshop-Tracks vermitteln das notwendige Wissen, um den Weg in die Cloud zu starten und dort vor allem erfolgreich zu bestehen. Sprecher und Experten von Cloud-Anbietern und Beratern wie den Amazon Web Services, Microsoft, T-Systems, arago AG, Ernst & Young, Logica Deutschland und SAP zeigen, wie es geht und welche Kenntnisse die Mitarbeiter dafür in der Zukunft benötigen.

Interessiert finden alle weiteren Informationen über den CloudOps Summit 2001 unter http://cloudops.de. Dort ist auch die kostenlose Anmeldung zu der Tagesveranstaltung möglich. (sh)