• Keine Ergebnisse gefunden

1.1 Begriffliche Grundlagen

1.1.2 Cloud Computing

Der BegriffCloud Computingwird in der Wissenschaft kontrovers diskutiert [VRMCL08], was zu der Notwendigkeit f¨uhrt, hier zun¨achst die f¨ur diese Arbeit relevanten Termini einzuf¨uhren und deren Bedeutung festzulegen. Der Begriff kann folgendermaßen zusammengefasst werden:

”Thus, Cloud Computing is the sum of SaaS and Utility Computing, but does not include Private Clouds.“[AFG+09, S.1]

Diese Definition erscheint zun¨achst unbefriedigend, da sie weitere spezifische Termini enth¨alt, die einer Erkl¨arung bed¨urfen. Der BegriffUtility Computing meint die allgemeine Verf¨ ugbar-keit von Computerressourcen, wie dies etwa f¨ur Strom und Wasser der Fall ist, und deren Abrechnung nach tats¨achlichem Verbrauch [Rap04]. In diesem Zusammenhang wird von pay-per-use und pay-as-you-go gesprochen. Dies entspricht der Nutzung von Ressourcen eines traditionellen Rechenzentrums, nur mit einer sehr kurzen Vertragslaufzeit, beispielsweise mit einer Abrechnung im Stundentakt. Eine solche kurzlebige Art der Bereitstellung und Abrech-nung von Computerressourcen, wie persistenter Speicher oder Compute-Ressourcen, ist mit realer Hardware praktisch kaum zu realisieren. Allein die Konfiguration eines Rechners und die Installation der Software w¨urden wohl schon Stunden in Anspruch nehmen. Stattdessen werden virtualisierte Ressourcen verwendet, die sich schnell und flexibel bereitstellen lassen.

Virtualisierung von Maschinen gilt als Schl¨usseltechnologie f¨urUtility Computing.

Weiterhin wird in [AFG+09] ausgef¨uhrt, dass Clouds eben diese Menge von teils virtuali-sierten Ressourcen sind, die Anbieter im Rahmen des Begriffs Utility Computing bereitstel-len. Stellt ein Anbieter seineCloud ¨offentlich zur Verf¨ugung, wie etwaAmazon Web Services (AWS)5, dann spricht man von einerPublic Cloud. Es gibt jedoch auchClouds, die nur intern,

5

Amazon Web Services bietet einen kompletten Satz von Infrastruktur- und Anwendungsservices, mit denen Sie fast alles von unternehmensweiten Anwendungen und Big Data-Projekten (große Datenmengen) bis hin zu gesellschaftlichen Spielen und mobilen Anwendungen in der Cloud ausf¨uhren k¨onnen.“ (Onlineressource https://aws.amazon.com/de/(abgerufen am 1.11.2013))

etwa in großen Banken, genutzt werden und nur unternehmensintern zur Verf¨ugung stehen.

Dabei sprich man von Private Clouds.

Das US-amerikanische Standardisierungsinstitut NIST (National Institute of Standards and Technology) liefert folgende Definition von Cloud Computing, die ebenfalls oft zitiert wird:

”Cloud computing is a model for enabling ubiquitous, convenient, on-demand net-work access to a shared pool of configurable computing resources (e.g., netnet-works, servers, storage, applications, and services) that can be rapidly provisioned and re-leased with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models.“[MG11, S.2]

Dieses Dokument definiert die Charakteristiken On-demand self-service, Broad network ac-cess, Resource pooling, Rapid elasticity und Measured service. Dabei geht diese Definition uber [AFG¨ +09] hinaus, da sie explizit die Messbarkeit verschiedener Laufzeitparameter der Cloud-Dienste zu Optimierungszwecken fordert. Außerdem definiert [MG11] zus¨atzlich zu den Private und Public Clouds eine Kombination aus beiden, die Hybrid Clouds, und eine Community Cloud, welche eine Mischform aus Public undPrivate Cloud ist. In [MG11] wird jedoch nicht explizit daspay-per-use Prinzip zur Abrechnung gefordert.

In dieser Arbeit wird die Anwendung des Begriffs Cloud Computing auf Public Clouds eingeschr¨ankt. Dies setzt auch das obligatorische Vorhandensein eines pay-per-use Abrech-nungsmodells voraus. Dar¨uber hinaus sind aber auch auf diese eingeschr¨ankte Variante die in [MG11] genannten f¨unf Charakteristiken anwendbar. Im Bereich Cloud Computing stel-len Dienste nicht nur Software-Funktionalit¨at dar, wie etwa Wettervorhersage oder Suche im Branchenbuch, sondern auch virtuelle Hardware oder Ausf¨uhrungsumgebungen f¨ur benutzer-definierten Programmcode. Hierbei spricht man von verschiedenen Schichten, die ihre Dienste aufeinander aufbauen k¨onnen. Eine Visualisierung des Schichtenmodells ist in Abbildung 1.1 zu sehen. In der genannten und weiterer Literatur wird h¨aufig ¨ubereinstimmend zwischen den drei nachfolgend beschrieben Schichten unterschieden, die auch in dieser Arbeit zu Grunde gelegt werden.

• Infrastrukutur als Dienst (Infrastructure as a Service - IaaS) bietet dabei grundlegende Dienste wie virtuelle Maschinen, Netzwerk oder Festplattenspeicher an.

• Darauf aufbauend bieten Dienste der Plattform-Schicht (Platform as a Service - PaaS) die M¨oglichkeit, Programmcode direkt auf vorgefertigten Maschinen oder Servern aus-zuf¨uhren ohne dabei die Maschinen selbst installieren oder warten zu m¨ussen. Hierbei werden dann h¨aufig nur noch Programme einer ausgew¨ahlten Programmiersprache un-terst¨utzt. Im Gegenzug ¨ubernimmt die Plattform-Schicht das Verteilen der Applikation auf Ressourcen der darunter liegenden Schicht und außerdem die Lastbalancierung und das Anpassen der Anzahl von ben¨otigten Ressourcen an die jeweilige Situation (Skalie-rung).

• Schließlich kann auf Basis der darunter liegenden Schichten als oberste Schicht Software als Dienst (Software as a Service - SaaS) angeboten werden. Dabei handelt es sich oft um Software, die via Webinterface im Browser genutzt wird.

Eine demCloud Computing sehr ¨ahnliche Technologie ist dasGrid Computing. Dieser Be-griff stammt aus dem wissenschaftlichen Rechnen und beschreibt Bestrebungen, moderne

1.1 Begriffliche Grundlagen

Applikationen

Dienste für Entwickler

SaaS

PaaS

IaaS

Infrastrukturdienste

Virtuelle Maschinen

Datenspeicher

Verbindungsnetzwerke (auch VPN)

Cloud Service Stack

Abbildung 1.1: Schichteneinteilung von Cloud-Diensten. (vgl. Onlineressource http://

commons.wikimedia.org/wiki/File:Cloud_Services.gif (abgerufen am 1.11.2013))

Hochleistungsrechner derart zu vernetzen, dass Berechnungen auf diesem zusammengeschal-teten Netzwerk (genanntGrid) noch schneller erfolgen k¨onnen. EinComputational Grid ist eine im Vergleich zu einem Hochleistungsrechner lose gekoppelte Hardware- und Software-Infrastruktur, die einen konsistenten Zugriff auf die Kapazit¨aten von geografisch verteilten Hochleistungsrechnern erm¨oglicht [FK04]. Durch Standardisierungsbem¨uhungen haben sich allgemein anerkannte Protokolle f¨ur den Zugriff auf entfernte (Grid-)Ressourcen etabliert, beispielsweise dasWeb Service Ressource Framework (WSRF) [Ban06]. Eine h¨aufig verwen-dete Implementierung dieserGrid-Technologie stellt dasGlobus Toolkit Version 4 dar [Fos05], welches von verschiedenen internationalen Partnern aus dem unternehmerischen und aus dem universit¨aren Bereich stetig weiterentwickelt wird. Grid und Cloud Computing sind sich in einigen Punkten sehr ¨ahnlich. Beide bieten einen standardisierten und zuverl¨assigen Zugang zu Computerressourcen. Auch im BereichGrid Computing wurden Probleme wie Allokation und Management von Ressourcen, Optimierung durch Virtualisierung und ein einheitlicher Zugriff auf alle Teile desGrids bereits thematisiert.

Cloud Computing kann sowohl als Weiterentwicklung des traditionellen Rechenzentrum-konzepts verstanden werden, als auch als Erweiterung derGrid-Technologie [FZRL08]. Ge-gen¨uber einem traditionellen Rechenzentrum wurde vor allem die Flexibilit¨at stark erh¨oht.

Dies trifft nicht nur auf Kundenseite mit dempay-per-use Modell zu. Auch auf Anbieterseite kann der Energieverbrauch durch Ressourcen-Konsolidierung und weniger Idle-Standby der Server optimiert werden. Zus¨atzlich sind nun in einem Rechenzentrum viel mehr Anwendun-gen m¨oglich, was zu einer Vergr¨oßerung von Rechenzentren und somit im Allgemeinen auch zu einer Steigerung der Effizienz f¨uhrt. Grid und Cloud unterscheiden sich vor allem durch die anvisierte Nutzergruppe. W¨ahrendGrid-Umgebungen ¨uberwiegend von Universit¨aten und anderen Forschungseinrichtungen betrieben werden und auch vornehmlich von diesen genutzt werden, stehenClouds insbesondere auch einem privaten und unternehmerischen Publikum

zur Verf¨ugung. Musste man sich fr¨uher f¨ur einen Zugang zu einem Großrechner bewerben und ein interessantes Forschungsvorhaben pr¨asentieren, so reicht heute eine Kreditkarte aus, um sich einen Rechner f¨ur die Dauer eines Experiments zusammenzustellen. Cloud Computing richtet sich demnach insbesondere an den kommerziellen Sektor. Durch die damit verbun-denen marktwirtschaftlichen Anforderungen stellt sich gerade beim Cloud Computing auch besonders die Frage nach einer effizienten Ressourcenausnutzung, um finanziellen Overhead zu vermeiden. Im Vergleich zu nicht virtualisierten Clustern, Grid-Infrastrukturen und Ser-vern, die man bisher nutzte, um entfernte Ressourcen zur Verf¨ugung zu stellen, bietetCloud Computing folgende Vorteile:

• feingranulare Partitionierung der verf¨ugbaren Hardwareressourcen,

• schnelle Konfiguration neuer Dienste durch Virtualisierung,

• einfachere Lastbalancierung durch Verschiebung der Lastbalancierung von der Appli-kationsschicht auf die Infrastrukturschicht,

• bessere Skalierungsm¨oglichkeiten durch schnelles Starten und Beenden von Diensten und dadurch auch effizientere Ausnutzung der verf¨ugbaren Hardware.