Infrastructure as a Service (IaaS)
Die Infrastrukturebene bildet die Basis und stellt Funktionalität zur Verfügung, auf der die anderen Ebenen aufbauen. Ein bekanntes Angebot im IaaS-Bereich ist z.B. die Amazon Elastic Compute Cloud (EC2). Vergleichbar mit Hardware, die man im Geschäft kauft, kann man sich bei Amazon eine Virtuelle Maschine (VM) buchen, die wie ein neuer Computer daherkommt: Meistens mit Linux betrieben (aber auch hier ist der Anwender frei in der Entscheidung und kann auch andere Betriebssysteme einsetzen), kann man sich auf dieser Maschine einloggen und findet nichts als ein frisch installiertes Betriebssystem. Jede weitere Software muss man selbst installieren, (fast) jede benötigte Anpassung und Konfiguration muss man selbst vornehmen. Manche Cloud-Anbieter stellen bereits vorkonfigurierte VMs zur Verfügung, so dass der Nutzer bereits installierte und konfigurierte Software nutzen kann. Dieses Angebot bietet die größtmögliche Flexibilität (man kann die Software nach den eigenen Wünschen betreiben und anpassen), erfordet jedoch auch die meiste Arbeit. Insbesondere im Hinblick auf IT-Security stellt ein IaaS-Angebot die größten Anforderungen an den Nutzer, beginnend mit dem Einspielen von Sicherheitsupdates bis hin zur sicheren Konfiguration betriebener Services und der Absicherung der VM gegen Angriffe aus dem Internet.
Platform as a Service (PaaS)
Wer sich nicht mit dem Einrichten und Betrieb eigener (virtueller) Server auseinandersetzen möchte, kann zu einem PaaS-Angebot wie der Google App Engine greifen. Eine solche Plattform bietet eine Ausführungsumgebung für eigene Software, ohne sich um die darunterliegenden Details kümmern zu müssen. Jedes dieser Plattform-Angebote stellt jedoch bereits gewisse Anforderungen an die Software, die auf der jeweiligen Plattform ausgeführt werden soll: Diese muss nämlich in einer bestimmten Programmiersprache vorliegen. Das bedeutet häufig, dass man auf Open-Source-Software (OSS) oder Software angewiesen ist, auf deren Quellcode man Zugriff hat. Der Quellcode einer Software muss nämlich angepasst werden, um die Vorteile einer solchen Plattform ideal ausnutzen zu können: Bei (sprunghaft) steigendem Bedarf an Ressourcen – z.B. aufgrund einer Erwähnung des eigenen Services auf einem stark frequentierten News- Portal – muss sehr schnell auf steigende Nutzerzahlen reagiert werden können. In einem solchen Fall kann die Software selbst veranlassen, dass über die Plattform weitere Ressourcen auf Infrastrukturebene angefordert und genutzt werden. Die Software selbst verwendet dafür eine Schnittstelle der Plattform, alles weitere – die Bereitstellung, Einrichtung und Konfiguration der neuen Ressourcen – geschieht völlig transparent für die Software.
Software as a Service (SaaS)
Basierend auf einer solchen Plattform gibt es zahlreiche Anbieter, die schließlich ihre Software direkt als SaaS-Angebot zur Verfügung stellen. Eines der frühesten und größten Angebote ist die Customer Relationship Managment (CRM) Software SalesForce. Der Anwender kann sich über ein Web-Interface des Service-Anbieters einloggen und direkt im Browser die Software nutzen. Er muss sich nicht mit den darunter liegenden Ressourcen beschäftigen und er muss sich um Skalierung bei gesteigerten Anforderungen und Nutzern keinerlei Gedanken machen. Aus Usability-Sicht ist ein SaaS-Angebot in der Regel das am einfachsten nutzbare, jedoch ist die Flexibilität eines SaaS-Angebots beschränkt: Der Nutzer ist auf den vom Anbieter zur Verfügung gestellten Funktionsumfang angewiesen und kann selbst keinerlei Anpassung vornehmen oder gar eine andere Software betreiben.
Seit Jahren tauchen im IT-Bereich weitere Begriffe auf wie „Everything as a Service“ (XaaS), die sich oft jedoch einem der drei oben genannten Servicemodelle zurechnen lassen. In dieser Einführung belassen wir es bei der Definition der oben genannten Modelle und wenden uns den Bereitstellungsmodellen zu, die ich aber nur kurz skizzieren werde.
Deployment-Modelle
Im Abschnitt der Deployment-Modelle beschreibt das NIST vier verschiedene Modelle, wie Cloud-Services bereitgestellt werden können:
1. Private Cloud: Die Ressoucen stehen ausschließlich einem Anwender zur Verfügung.
2. Community Cloud: Die Ressourcen stehen Anwendern zur Verfügung, die an einem gemeinsamen Projekt arbeiten oder ein gleiches Ziel verfolgen.
3. Public Cloud: Die Ressourcen stehen jedem zur Verfügung.
4. Hybrid Cloud: Eine Cloud wird mit mehreren der drei vorangegangenen Bereitstellungsmodelle betrieben, z.B. kann eine private Cloud bei Lastspitzen auf die Ressourcen einer externen Public Cloud zurückgreifen (dieses Verhalten nennt man „Cloud Bursting“).
In vielen großen Firmen kann man private Clouds finden, die Services für die jeweilige Firma erbringen. Dies können Groupware-Services zur Terminplanung und Kommunikation sein, die Bereitstellung von Office-Anwendungen im firmeneigenen Intranet oder die Bereitstellung von Speicherplatz.
Community Clouds kann man im Forschungsbereich finden, wenn verschiedene Projektpartner einen Cloud Service verwenden, der nur diesen Partnern zur Verfügungs steht. Der Cloud Service kann dabei von einem der Projektpartner selbst oder von einem externen Anbieter erbracht werden.
Ein typisches Beispiel einer Public Cloud ist die bereits oben erwähnte Elasic Compute Cloud von Amazon. Jeder kann sich dort registrieren und virtuelle Ressourcen nutzen. Zusätzlich zu diesem Public Cloud-Angebot betreibt Amazon auf seiner Infrastruktur auch Clouds im Kundenauftrag, bei denen es sich dann um Private Clouds oder Community Clouds handelt.
Cloud Computing – Zusammenfassung
Diese Einführung soll einen Überblick über die Definition des Begriffes „Cloud Computing“ geben, der häufig und inflationär verwendet wurde und wird. Dieser Definition selbst wohnt jedoch eine gewisse Komplexität inne, die im ersten Moment überfordernd sein kann, aber auch viele Möglichkeiten bietet. Anwender, die über den Schritt in die Cloud nachdenken, finden in diesem Themenfeld viele Angebote, die evaluiert werden können.