Zu Beginn möchte ich immer ein gemeinsames Verständnis dafür schaffen, was wir unter Cloud Computing verstehen. Der Begriff wird mittlerweile häufig und in verschiedenen Interpretationen verwandt. Folgende sieben Wesensmerkmale der Cloud sind meiner Meinung nach wichtig, wenn wir über Cloud-Dienste sprechen.

clip_image001

  1. Die Cloud steht in praktisch unbeschränkter Menge zur Verfügung.
  2. Ressourcen in der Cloud können bedarfsgerecht genutzt werden. D.h. ich kann Ressourcen flexibel und mit sehr kurzer Ankündigung nutzen und auch wieder freigeben.
  3. Ressourcen in der Cloud sind vertikal oder horizontal skalierbar.
    • Vertikale Skalierung bedeutet, dass Ressourcen durch Änderung ihrer Spezifikationen skaliert werden. Bei virtuellen Maschinen ist dies typischerweise die Anzahl der CPUs, die Größe des RAMs oder die Bandbreite des angeschlossenen Netzwerks.
    • Horizontale Skalierung bedeutet, dass die Anzahl der Ressourcen variiert wird. Um beim Beispiel der virtuellen Maschinen zu bleiben, bedeutet dies hier, mehr oder weniger virtuelle Maschinen für den gleichen Dienst einzusetzen.
  4. Ressourcen in der Cloud werden nutzungsabhängig abgerechnet. Es wird nur die Leistung in Rechnung gestellt, die auch genutzt wurde.
  5. Ressourcen in der Cloud können über standardisierte Schnittstellen kontrolliert und gesteuert werden.
  6. Ressourcen weisen eine garantierte Hochverfügbarkeit auf, die vertraglich vereinbart wurde.
  7. Die verschiedenen Angebote können einzeln oder kombiniert eingesetzt werden und man ist nicht auf ein bestimmtes System eingeschränkt.

Viele dieser Eigenschaften sind wichtig, um als Cloud-Dienst zu bestehen. Dadurch lassen sich viele bereits existierende Dienste auch als Cloud-Dienste identifizieren, aber auch etliche nicht, die allerdings im momentan Cloud-Hype trotzdem den Stempel Cloud erhalten.

Im Folgenden betrachten wir beispielhaft den Weg von der Gründung einer Firma bzw. der Idee für eine Lösung bis hin zu dem Zustand, dass die entworfene Lösung erfolgreich am Markt angekommen ist. Dabei hebe ich neben der Gründung vier weitere Zeitpunkte hervor:

  • Beschaffung der Arbeitsmittel fürs Team
  • Entwicklung der Lösung (die eigentliche Idee)
  • Einbeziehen von älterer Software
  • Skalieren & Verwalten der Lösung

Anhand dieser vier Phasen lassen sich die verschiedenen Konzepte der Cloud gut veranschaulichen.

clip_image002

Beschaffung der Arbeitsmittel fürs Team

Zu Beginn braucht das Team die Arbeitsmittel für die Entwicklung, die Kommunikation und die Kollaboration. Viele dieser Arbeitsmittel lassen sich bereits durch Cloud-Dienste abbilden. Für die Kommunikation kann man hier typischerweise E-Mail-Dienste sehen. Beispiele aus dem Portfolio von Microsoft für private Kunden sind hier Outlook.com und für gewerbliche Kunden Office 365. In Office 365 sind natürlich wesentlich mehr Dienste enthalten als die reine Kommunikation per E-Mail. Durch Lync, Exchange und SharePoint sind hier auch die Team-Kollaboration mit abgedeckt.

clip_image003

Diese Dienste sind als Software-as-a-Service (SaaS) zu klassifizieren, da hier der Nutzer des Dienstes den Dienst konsumieren kann, ohne sich um die tieferliegenden Schichten des Verwaltungsstack zu kümmern. Die Beschaffung und Wartung der notwendigen Server, die Installation, Konfiguration und Pflege der Betriebssysteme und die Installation und Pflege der Softwarelösung übernimmt der Dienstanbieter. (In der Grafik sind die vom Cloud-Anbieter verwalteten Komponenten in grün dargestellt, was bei SaaS dem gesamten Stack entspricht.)

Entwicklung der Lösung

Die Entwicklung der Lösung, für die man eine Idee hat, ist die wichtigste Phase auf dem Weg zum Vertrieb. Bei der Neuentwicklung einer Lösung hat man die Chance, bereits wichtige Entscheidungen zu treffen, um vornherein die Architektur der Lösung für die Cloud vorzubereiten.

clip_image004

Eine Lösung direkt als Cloud-Lösung zu entwickeln, gibt die Möglichkeit Plattform-as-a-Service (PaaS) zu nutzen. Für Softwarehersteller bedeutet dies, sich auf die Softwarelösung zu fokussieren und die auszuführende Plattform als gegeben vorauszusetzen. Alle Aufgaben für die Pflege der Betriebssysteme und der notwendigen Hardware entfällt somit für den Softwarehersteller und obliegt der Verantwortung des Cloud-Anbieters. (In der Grafik sind die vom Cloud-Anbieter verwalteten Komponenten in grün dargestellt.)

Wichtige Cloud-Ressourcen sind hier unter anderem Speicherplatz, Datenbanken, Cloud-Dienste und (neu) die Windows Azure Mobile Services.

Einbeziehen von älterer Software

Cloud Computing ist unter anderem auch damit berühmt geworden, dass virtuelle Maschinen nach Bedarf gebucht werden können. Bei dieser generischen Form, Ressourcen in der Cloud zu verwenden, sprechen wir von Infrastructure-as-a-Service (IaaS).

clip_image005

Als Nutzer von IaaS haben wir allerdings nicht nur die größte Freiheit in der Verwendung der Ressourcen, sondern auch die meiste Arbeit. Vom Cloud-Anbieter wird die Beschaffung und Verwaltung der Hardware übernommen. Um die darüber liegenden Schichten muss sich der Nutzer selbst kümmern. (In der Grafik sind die vom Cloud-Anbieter verwalteten Komponenten in grün dargestellt.)

Diese Flexibilität ist dann wichtig, wenn Bestandssoftware in die Cloud gebracht werden soll und nicht angepasst oder modernisiert werden soll oder kann. Auch wenn bestehende PaaS- oder SaaS-Angebote nicht ausreichend sind, bietet IaaS hier die Flexibilität, Serverlösungen nach den eigenen Anforderungen auszurichten.

Wichtige Dienste von Windows Azure sind in diesem Zusammenhang die virtuellen Maschinen und natürlich der Speicherplatz, in dem die virtuellen Festplatten abgelegt sind.

Skalieren & Verwalten der Lösung

Sobald die Lösung erfolgreich läuft, entsteht schnell das Bedürfnis die Lösung effizienter verwalten zu wollen und automatisch zu skalieren. In Windows Azure besteht die Möglichkeit, nahezu alle Ressourcen programmatisch oder per Skript zu verwalten und zu überwachen.

clip_image006

In Windows Azure ist es nicht nur über das Verwaltungsportal möglich Einstellungen von Ressourcen in Windows Azure zu prüfen und zu ändern, sondern auch über PowerShell unter Windows, über Kommandozeilentools unter Windows, Linux und Mac und über REST APIs

clip_image007

Dazu gehören natürlich auch die Instanzengrößen von virtuellen Maschinen oder von Cloud-Diensten, als auch die Anzahl von Instanzen. Somit ist es möglich hier vertikal als auch horizontal automatisiert zu skalieren.

Ein weiteres wichtiges Merkmal für die Flexibilität ist hierbei ein einheitliches Format für die verwendeten virtuellen Festplatten. Der Hyper Visor vom Windows Server als auch von Windows Azure verwenden das gleiche Format VHD, womit es dem Nutzer möglich ist, die virtuellen Festplatten flexibel entweder im eigenen Rechenzentrum oder in der Cloud in Windows Azure zu verwenden, ohne dass hierbei Konvertierungen zwischen verschiedenen Formaten notwendig sind.