Ab heute wird es einen Einblick in die Technik hinter Cloud Computing geben. Beginnen möchte ich mit einer grundlegenden Einführung über das “was ist Cloud Computing” und den drei wesentlichen Schichten des Cloud Computing.
Eine eindeutige Definition des Begriffes Cloud Computing gibt es bis dato nicht. Beispielsweise wird es beschrieben als Ansammlung von Diensten, Anwendungen und Ressourcen, die dem Nutzer flexibel und skalierbar über das Internet angeboten werden. Dabei sei keine langfristige Kapitalbindung oder IT-spezifisches Know-How vorauszusetzen.
Wikipedia schreibt knapp: “Cloud Computing (deutsch etwa Rechnen in der Wolke) ist primär der Ansatz, abstrahierte IT-Infrastrukturen (z. B. Rechenkapazität, Datenspeicher-, fertige Software- und Programmierumgebungen als Service) dynamisch an den Bedarf angepasst über ein Netzwerk zur Verfügung zu stellen.”
Man kann Grundsätzlich zwischen verschiedenen Service Schichten unterscheiden. Diese Schichten sind nach ihrem Abstraktionsgrad gegliedert und für gewöhnlich kann auf die darunter liegende Schicht zugegriffen werden. Auf der grundlegendsten Ebene ist Infrastructure as a Service (IaaS) angesiedelt. Auf dieser Ebene werden die Server bereitgestellt – virtualisiert oder auch physisch. Darauf aufbauende ist die Ebene Platform as a Service (PaaS), hier werden meist Entwicklungsplattformen bereitgestellt, auf welchen Anwendungen entwickelt werden können. Die oberste Ebene ist Software as a Service (SaaS), hier wird Software direkt als käuflichen Dienst meist über den Webbrowser angeboten. Im Folgenden werden die einzelnen Schichten genauer definiert und beleuchtet.

Infrastructure as a Service (IaaS)
Die IaaS-Schicht bietet dem Benutzer Hardwareressourcen aus einer abstrahierten Sicht an. Der Benutzer kann auf Massenspeicher, Netzwerke oder Betriebssysteme zugreifen und diese über eine Benutzerschnittstelle verwalten [2]. Dabei benötigt der Benutzer keinerlei Wissen über die physikalische Implementierung der Ressourcen. Typische Funktionen der Benutzerschnittstelle sind das Anlegen bzw. Beseitigen von Betriebssystem-Abbildern, die Skalierung von beanspruchten Kapazitäten oder die Definition von Netzwerktopologien. Die Ressourcen der IaaS lassen sich wiederum in physikalisch (Physical Resource Set) und virtualisierte (Virtual Resource Set) einteilen. Neben den Virtual Resource Sets (VRS) haben auch die Physical Resource Set (PRS) ihre Berechtigung, z.B. wenn es um bestimmte Hardwareanforderungen geht.
Platform as a Service (PaaS)
Auf der PaaS-Schicht werden Cloud Services in der Regel für Entwickler angeboten. In [3] wird PaaS auch als IaaS mit einem maßgefertigten Software-Stack für eine bestimmte Anwendung bezeichnet. PaaS lässt sich wiederum in Programming Environments (PE) und Execution Environments (EE) einteil [2]. Programming Environment erweitern Programmiersprachen mit Klassenbibliotheken mit einem bestimmten Anwendungsfokus. Execution Environments bieten standardisierte Ausführungsumgebungen an. Ressourcen aus der IaaS Schicht werden über Schnittstellen abstrahiert angeboten. Typische Beispiele für EEs sind die Google App Engine und Microsoft Azure. Oftmals bringen bestimmte Execution Environments ihre eigene Programming Environments mit. Durch die Bereitstellung des PEs und EEs, muss sich der Entwickler nicht um die tatsächliche Umsetzung der darunterliegenden IaaS-Schicht kümmern, sondern kann direkt die Schnittstellen der Platform verwenden. Die Platform muss dabei das Ressourcenmanagement wie Skalierung oder Load-Balancing übernehmen.
Software as a Service (SaaS)
In der SaaS-Schicht werden Cloud Services direkt den Endkunden angeboten. Der Benutzer kann die Software meist über den Browser bedienen und sollte im optimalen Fall lediglich für die Benutzung der Software zahlen. Auf Anbieterseite können PaaS und IaaS für die Bereitstellung von Cloud Services der SaaS genutzt werden. Dadurch, dass die Software nicht beim Benutzer sondern in Rechenzentren vorhanden ist, liegt es beim Anbieter Softwarewartungen wie Aktualisierungen vorzunehmen. In [2] wird bei den Cloud Services auf SaaS zwischen Application Services und Applications unterschieden. Demnach sind Application Services, Dienste wie z.B. Google Maps oder OpenSocial zur Einbindung von sozialen Netzwerken. Applications dagegen sind komplette Anwendungen wie Googel Docs oder das CRM System Salesforce. An Salesforce wird auch ersichtlich wie SaaS und PaaS zusammenspielen können. Salesforce.com bietet eine Platform zur Erweiterung seines Dienstes um individuelle SaaS Implementierungen.