Performance-Tipps

Anwendungen in die Cloud migrieren

25.12.2012 von René Büst
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.
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.

Roadmap zum Cloud Computing
Interne Clouds sind für viele Unternehmen der erste Schritt in die künftige Cloud-Nutzung. Wer hier exakt arbeitet, baut seine Private Cloud strategisch richtig auf.
Führung übernehmen: Business und IT synchronisieren
Die richtige Cloud-Strategie zu erarbeiten, erfordert jemanden, der sowohl die Bedürfnisse des Unternehmens als auch die des IT-Geschäfts versteht. Denn um das Business zu unterstützen, muss die IT dessen Bedürfnisse verstehen und Lösungen schaffen, die dem Rechnung tragen. Daher muss die Cloud-Strategie auf den höchsten Führungsebenen einer Organisation verankert sein. Das erfordert es, Unterstützung einzuholen - von Mitarbeitern und Führungskräften.
Services im Voraus definieren
Ein entscheidendes Element für die Ausarbeitung einer Cloud-Strategie ist zu erkennen, welche Services das Business bietet, damit die IT Strategien erarbeiten kann, um diese Probleme zu lösen. Der Schlüssel dazu ist zu verstehen, welche Dienstleistungen angeboten werden. Damit kann die IT entscheiden, für welche Services es sinnvoll ist, einen strategischen Plan und eine Roadmap auszuarbeiten. Aber nicht alles muss in die Cloud: Private Clouds eignen sich am besten für hoch standardisierte geschäftliche Anforderungen, die stark nachgefragt werden und daher hoch skalierbar sein müssen. Und weniger für ein ERP-System, das man nur einmal in 10 Jahren installiert. Es eignet sich für das, was einmal oder mehrmals pro Woche kommt.
Alternativen evaluieren
Unternehmen werden sich nicht durch SaaS oder gar IaaS differenzieren können, denn fast jedes wird diese Dienste irgendwann nutzen. Sie differenzieren sich nur durch neue Anwendungen, die auf ihre Bedürfnisse zugeschnitten sind und sich dynamisch skalieren lassen. Deshalb werden Lösungen, die einen wahren Mehrwert für das Unternehmen schaffen, in vielen Fällen auf der Ebene von Plattform-as-a-Service liegen. Damit lassen sich Anwendungen auf die Bedürfnisse des Unternehmens zuschneiden und gleichzeitig profitieren sie von den Vorteilen einer Cloud-Umgebung.
Messgrößen entwickeln
Eine Cloud soll die betriebliche Praxis so optimieren, dass etwas effizienter getan werden kann als bisher. Diesen Nutzen erfassen zu können, erfordert Messsysteme für eine quantitative Auswertung. Eine natürliche Messgröße sind die Kosten. Darüber hinaus lassen sich auch Qualität, etwa in Form der Kundenzufriedenheit, und Agilität als Messgrößen definieren. Letztere kann etwa umfassen, wie häufig die Services aus der Private Cloud genutzt werden, wie viel schneller sie zur Verfügung stehen als zuvor und wie schnell nun automatisch skaliert werden kann. Die wichtigste Kennzahl dabei ist diejenige, die am meisten kritisch für die Geschäftseinheit ist.
Business Case für Cloud-Nutzung schaffen
Es ist wichtig für die IT, festzustellen, wo das Geschäft die größten Engpässe hat, die ein Cloud-Einsatz beheben könnte. Ist dieser Bereich erkannt, gilt es, klein anzufangen und mit der Cloud-Einführung zu wachsen. In der Regel bedeutet das, Virtualisierungsfunktionen einer Private Cloud zu automatisieren oder Entwicklung und Tests in eine öffentliche Cloud zu verlegen.
Einen Fachkräfteplan entwickeln
Eine Cloud-Bereitstellung wird in vielen Fällen die Rollen der IT-Fachkräfte ändern. Es erfordert Cloud-Architekten und Spezialisten für die Orchestrierung der verschiedenen Clouds sowie Service-Manager, die sicherstellen, dass das System liefert, was gebraucht wird. Der Bedarf an traditionellen IT-Funktionen geht schneller zurück als neue entstehen.
Einen Business Management Plan konzipieren
Die Zukunft der IT ist eine Hybrid-Welt, in der eine Vielzahl von Dienstleistungen zusammengeführt werden: Private Clouds werden mit öffentlichen kombiniert und so hybride Clouds hervorbringen, während die traditionelle Infrastruktur vor Ort weiterhin für bestimmte Anwendungen zum Einsatz kommt. IT sollte der Makler sein, der den Geschäftseinheiten die passenden Dienste und Serviceangebote vermittelt.
Die richtige Technik bereithalten
Bei kritischen Geschäftsprozessen kann die Technologie nicht ausgeklammert werden. Zu den Grundlagen eines Technologieplans gehören daher das Access-Management - das regelt, wer Zugang zu welchen Dienstleistungen erhält - und ein Service-Beauftragter, der die Ressourcen verwaltet, welche die Cloud liefert.
Einen Prozessplan erstellen
Geschäftliche Anforderungen wachsen, und die IT muss in der Lage sein, sich mit ihr zu ändern. Wer Private Clouds aufbaut, sollte nach vorne auf das schauen, was als nächstes kommt. Die Zukunft der Wolke ist ein Hybrid-Modell, das sowohl interne als auch externe Cloud-Ressourcen nutzt.
Start small, think big
Entwickeln Sie Ihre Cloud Schritt für Schritt. Lernen Sie durch Experimentieren, überwachen Sie Nutzung und Feedback und ermitteln Sie den Bedarf innerhalb der Geschäftsbereiche und IT-Architekturen, um ihn gezielt zu bedienen. Sie können nicht alles perfekt von Grund auf gestalten, also fangen Sie klein an und bauen von dort aus auf.

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)