Computer Games as a Service

Computer Games as a Service (CGaaS) specified a term in the field of Cloud Computing and stands for a service model in which Computer games are provided via the Internet and are streamed to the Home-PC.



Computer Games as a Service

Computer Games as a Service (CGaaS) bezeichnet einen Begriff aus dem Bereich des Cloud Computing und steht für ein Servicemodell, bei dem Computerspiele über das Internet bereitgestellt und auf den heimischen PC gestreamt werden.



Die Google App Engine

Die Google App Engine [1] ist das Platform as a Service Angebot von Google und
bietet Softwareentwicklern die Entwicklung und das Hosting ihrer Anwendungen auf der
Infrastruktur von Google an. Der Service ist bis zu einem bestimmten Grad kostenlos.
Folgende Richtlinien müssen eingehalten werden, um den Dienst kostenlos nutzen zu
dürfen:

  • Seitenaufruf einer Anwendung: max. 1.300.00 mal pro Tag und max. 7.400 mal pro
    Minute
  • Pro Anwender dürfen max. 10 Applikationen erstellt werden.
  • Max. Versand von E-Mails über die entsprechende API: 2.000 pro Tag
  • Ein-/ und ausgehender Datentransfer max. 1 GB am Tag und max. 56 MB pro Minute
  • Pro Tag darf eine Applikation max. 6,5 CPU-Stunden nutzen

Die Entwicklungsumgebung

Die Google App Engine wurde bereitgestellt um Anwendungen auch während hoher Last oder während der Verarbeitung von vielen Daten zuverlässig ausführen zu lassen. Dazu unterstütz die Google App Engine folgende Funktionen:

  • Dynamische Webdienste inkl. der gänigigen Web-Technologien
  • Persistenter Speicher inkl. der Möglichkeit für Abfragen, Sortierungen und Transaktionen
  • Automatische Skalierung und Loadbalancing
  • APIs für die Authorisierung der Benutzer und die Nutzung der Google E-Mail Accounts
  • Eine Entwicklungsumgebung für lokale System für die Simulation der Google App Engine
  • Warteschlangen für die Steuerung von Aufgaben die eine hohe Performance benötigten
  • Aufgabenverwaltung für die Steuerung von Events zu bestimmten Zeitpunkten
  • Die Anwendungen werden in einer Sandbox ausgeführt. Dadurch hat die Anwendung niemals direkten Zugriff auf das darunterliegende Betriebssystem.
  • Für die Entwicklung stehen mit der Java JRE 6, sowie Python 2.5.2. zwei Laufzeitumgebungen zu Verfügung.
  • Für das Speichern der Anwendungen wird von der App Engine eine verteilte Datenhaltung verwendet, wobei der verteilte Speicher mit der Menge der Daten wächst.

App Engine Services

Die Google App Engine bietet folgende APIs zur Arbeit und der Verwaltung der Applikationen:

  • URL Fetch: Mit dem URL-Fetch Service können Anwendungen auf andere Ressourcen wie Web Services oder Daten über das Internet zugreifen. Dabei wird dieselbe Google Infrastuktur verwendet, wie sie auch von bekannten Google Produkten genutzt wird.
  • Mail: Mittels der App Engine Mail API sind Anwendungen in der Lage direkt E-Mails zu versenden.
  • Memcache: Mittels Memcache kann auf Daten zugegriffen werden, die nicht im persistenten Speicher abgelegt werden. Durch einen schnellen in-Memory Key-Value Cache ist eine Anwendung in der Lage mehreren Instanzen parallel nur temporär vorhandene Daten performant bereitzustellen.
  • Image Manipulation: Mittels der Image Manipulation API sind Anwendungen in der Lage Bilder zu verändern. Bei Bildern im JPEG oder PNG Format können folgende Manipulation durchgeführt werden:
    • Anpassen der Größe
    • Zuschneiden/ Beschneiden
    • Drehen
    • Spiegeln

Geplante Tasks und Warteschlangen

Anwendungen können so gesteuert werden, dass sie hoch performante Aufgaben dann erledigen, wenn die Belastung durch Anfragen nicht so hoch ist, z.B. zu einer vorher definierten Uhrzeit oder Tag. Des Weiteren besteht die Möglichkeit eine Anwendung in eine Warteschleife zu legen oder sie im Hintergrund auszuführen.

Quellen:

[1] Google App Engine



Was ist AWS Import/Export?

Der Import/Export [1] Dienst der Amazon Web Services dient dazu, große Datenmengen auf einem schnelleren Weg in die Amazon Cloud zu transferieren bzw. diese hinaus zu bekommen, indem die Daten auf einem Datenträger auf postalischen Weg an Amazon verschickt werden. Dazu überträgt Amazon die Daten direkt vom gelieferten Datenträger über ihr internes Netzwerk in die Cloud. In einigen Fällen ist es kostengünstiger die Daten auf diesem Weg in die Amazon Cloud zu übertragen, als den Weg über das Internet zu wählen und dabei ggf. die Geschwindigkeit der Internetverbindung zu erhöhen.

Vorgehensweise

  • Vorbereiten eines Datenträgers mit den zu transferierenden Daten.
  • Eine Manifest Datei, die alle Informationen (Amazon S3 buckt, AWS Access Key ID, Rücksendeadresse) an Amazon verschicken.
  • Anschließend sendet Amazon eine E-Mail mit einem eindeutigen Kennzeichen und der AWS Versandadresse an die der Datenträger versendet werden muss.
  • Jetzt muss der Datenträger noch für die Identifizierung und Authorisierung vorbereitet werden, indem die Manifest-Datei und die Job-Id mit einer Digitalen Signatur verschlüsselt und auf den Datenträger hinterlegt werden.
  • Der Datenträger mird mit sämtlichen Zubehör an Amazon verschickt.


[2]

Wofür kann AWS Import/Export verwendet werden?

  • Datenmigration: Große Menge an Daten die erstmals in die Amazon Cloud transferiert werden sollen. AWS Import/Export ist in der Regel schneller als der Datentransfer über das Internet.
  • Externe Datensicherung: Vollständige oder Inkrementelle Backups können durch Amazon S3 zuverlässig und redundant gesichert werden.
  • Direkter Datenaustausch: Erhält man von seinen Geschäftspartnern die Daten regelmäßig auf Datenträgern, können diese auf direkten Weg zu Amazon versendet werden. Von dort werden die Daten dann in das eigene Amazon S3 bucket importiert.
  • Systemwiederherstellung: Für den Fall eines Systemausfalls und der notwendigen Wiederherstellung können die Daten mittels AWS Import/Export von Amazon S3 heruntergeladen, auf einem Datenträger gespeichert und anschließend in das eigene (lokale) System wieder importiert werden.

Quellen:

[1] AWS - Import/Export
[2] Graphik: AWS - Import/Export



Decaf – Mobiles Infrastrukturmanagement für Amazon EC2

Jeder Administrator oder Entwickler kennt das Problem. Man(n) sitzt gemütlich mit der Frau/ Freundin im Restaurant und schwelgt mit seinen Gedanken gerade in Wolke Sieben. "Funktionieren meine Instanzen noch? Wie ist die aktuelle Performance". ;)

Genau dafür hat das Unternehmen 9apps mit seiner Anwendung Decaf erstmalig eine mobile Infrastrukturmanagementsoftware für Amazon EC2 Instanzen auf Basis von Android entwickelt. Die Funktionen und Einsatzmöglichkeiten der Software möchte ich hier nun kurz vorstellen.

Was ist Decaf?

  • Decaf ist eine auf Basis von Android funktionierende mobile Infrastrukturmanagementsoftware zur Verwaltung von Amazon EC2 Instanzen.

Welche Funktionen bietet Decaf?

  • Monitoring der Server inkl. Benachrichtigungen bei evtl. Ausfällen.
  • Kontinuierliche graphische Darstellung der aktuellen Zustände der Instanzen als Widget. Das beinhaltet die CPU-Auslastung, Netzwerk Aktivitäten und die Lese- und Schreibzugriffe der Festplatten.
  • Alle Managementfunktionen von Amazon EC2 stehen zur Verfügung, darunter z.B. Stoppen, Neustart und Monitoring der Instanzen oder das Hinzufügen von weiteren Volumes.
  • Zugriff auf alle Informationen von Amazon EC2, wie z.B. einer Gesamt Zusammenfassung bis zu Details der einzelnen Instanzen.

Zukünftige Funktionen?

  • Verwaltung von mehreren Amazon EC2 Accounts.
  • Entwicklung einer speziellen Schnittstelle für Kunden, die eine vielzahl an Instanzen zu verwalten haben.

Das Dashboard

Mit dem Dashboard kann auf alle Daten des jeweiligen Accounts zugegriffen werden. Dazu gehören u.a. Informationen wie Details über alle Instanzen, Amazon Machine Images (AMIs), Snapshots, Elastic IPs, sowie Security Groups und die Key Pairs.

Das Widget

Das Widget stellt alle Informationen in Echtzeit dar und aktualisiert sich selbständig, wodurch es unverzüglich informiert wenn etwas unerwartetes passiert. Die Diagramme des Widgets geben Auskunft über die Entwicklung und Änderungen der durchschnittlichen CPU-Leistung, der gesamten Lese- und Schreib-Aktivitäten der Festplatten, sowie des ein- und ausgehenden Netzwerktraffics innerhalb der letzten 24 Stunden.

Ansicht einer Instanz

Der Verwaltungsbereich bietet die Möglichkeit zum Starten, Beenden und Neustarten einer Instanz. Alle von EC2 bekannten Informationen können hierüber abgefragt und überwacht werden.

Ansicht mehrerer Instanzen

Mittels der Ansicht aller Instanzen erhält man einen Gesamtüberblick über den Zustand sämtlicher Instanzen eines Accounts. Anhand der grünen, roten und grauen Kaffeebohne wird der Status dargestellt.

  • Grün = alles ist in Ordnung
  • Rot = es besteht ein Problem
  • Grau = die Instanz ist nicht verfügbar

Durch das Tippen auf eine Instanz erhält man detailliertere Informationen - siehe "Ansicht einer Instanz".

Wunschliste

Folgende Wünsche zur Funktionserweiterung wurden an 9apps bisher von den Benutzern herangetragen, die sukzessive eingebaut werden:

  • Monitoring von Ports (ssh, http, mysql, smtp, etc.)
  • Verwaltung mehrerer Accounts
  • Verwaltung von Images und Snapshots
  • Integration von CloudWatch inkl. Autoscaling und Loadbalancing
  • Konfiguration der Diagramme bzgl. der Größenangaben (Widget und CloudWatch)
  • Einstellungen von Schwellwerten und Integration einer Alarmfunktion auf Basis der CloudWatch Daten
  • Integration von CloudFront
  • Integration mit 'ConnectBot'
  • Anbindung weiterer Anbieter (möglicherweise über Plugins)
  • Ein Release für das iPhone ist ebenfalls geplant.

Weitere Informationen



"Leitfaden Cloud Computing" des BITKOM

Der Bundesverband Informationswirtschaft, Telekommunikation und neue Medien e.V. (BITKOM) hat einen Leitfanden zum Cloud Computing herausgegeben, der sich speziell an Unternehmen richtet um sie zu motivieren sich mit Cloud Computing auseinander zu setzen und somit Potenziale für Ihr Business zu erkennen.

Der Fokus liegt dabei auf den geschäftlichen Herausforderungen, den Geschäftsmodellen und der Integrierbarkeit von Cloud-Lösungen in die Geschäftsprozesse. Im Vordergrund stehen dabei die strategischen und wirtschaftlichen Aspekte.

Der vorliegende Leitfaden umfasst 7 Kapitel. Entscheider finden im Kapitel 1 die wesentlichen Aussagen über die Relevanz von Cloud Computing für ihr Business. Das Kapitel 2 zeigt auf, welchen Einfluss Cloud Computing auf Wertschöpfungsketten ausübt. Im Kapitel 3 werden wesentliche Faktoren erörtert, die die Diffusionsgeschwindigkeit von Cloud Computing determinieren. Das Kapitel 4 ist juristischen Fragestellungen vorbehalten. Einsatzszenarien und –beispiele für Cloud Computing werden im Kapitel 5 erläutert, während das Kapitel 6 den Zusammenhang zwischen Cloud Computing und anderen Technologieentwicklungen beleuchtet. Den Leitfaden rundet eine Checkliste im Kapitel 7 ab.

Der Leitfanden kann auf der Internetseite des BITKOM kostenlos heruntergeladen werden. - DOWNLOAD

An dieser Stelle auch vielen Dank an Herrn Andreas Wilker, der in der Cloud-Community.org | DE auf diesen Leitfaden aufmerksam gemacht hat.



Was ist "CloudWatch"?

Amazon CloudWatch stellt eine Echtzeit Überwachungsfunktion für EC2-Instanzen bereit. Dabei wird der gesamte Ressourcenverbrauch wie die CPU-Auslastung, die Schreib/Lesezugriffe der Festplatten sowie die Netzlast/ Traffic visualisiert. Die Werte werden jede Minute aktualisiert und zwei Wochen gespeichert. Für die Nutzung von CloudWatch muss der Dienst nur einer EC2-Instanz zugewiesen werden. Die Datenauswertung erfolgt anschließend über die AWS Management Console, die Webservice APIs oder über die Kommandozeile.


[2]

Quellen:

[1] AWS - CloudWatch
[2] Graphik: Cloud Watch



Was ist "Elastic Load Balancing"?

Bei Elastic Load Balancing [1] handelt es sich um einen Loadbalancer von Amazon für sein EC2. Dabei wird der eingehende Traffic auf mehrere dahinter liegende EC2-Instanzen verteilt um damit Überlastungen zu vermeiden und einen unterbrechungsfreien Dienst zu garantieren. Fällt eine Instanz temporär aus, wird der Traffic durch den Loadbalancer automatisch auf die restlichen funktionsfähigen Instanzen umgeleitet, bis die ausgefallene Instanz wiederhergestellt ist. Das Elastic Load Balancing funktioniert für einzelne oder aber auch über mehrere Verfügbarkeitszonen hinweg. Entwickler haben darüber hinaus die Möglichkeit über sogenannte Health Checks z.B. mittels Pings oder URL-Fetches die Verfügbarkeit der Instanzen zu prüfen.


[2]

Um garantiert nie weniger als z.B. zwei funktionsfähige EC2 Instanzen hinter dem Elastic Load Balancer arbeiten zu lassen, kann das Elastic Load Balancing mit dem Autoscaling kombiniert werden. Dazu wird das Autoscaling so konfiguriert, dass nie weniger als zwei funktionsfähige EC2 Instanzen vorhanden sein dürfen. Der Ausfall einer Instanz wird dann durch das Autoscaling erkannt, was dazu führt, dass automatisch die erforderliche Menge von EC2-Instanzen zu der Autoscaling Gruppe hinzugefügt werden.

Quellen:

[1] AWS - Elastic Load Balancing
[2] Graphik: Elastic Load Balancing



Was bedeutet "Autoscaling?

Autoscaling [1] sorgt dafür, dass die Anzahl der Server innerhalb einer Server-Farm automatisch skaliert. Bei steigender Serverlast wird die Arbeit dann von einer größeren Anzahl an Servern übernommen. Sinkt die Serverlast werden die nicht mehr benötigten Server automatisch heruntergefahren.


[2]

Autoscaling ist typisch für das Cloud Computing und ist dann vorteilhaft, wenn die Auslastung der Server großen Schwankungen zugrunde liegt. Ein typischer Fall sind Webseiten, die nur zeitlich oder saisonal stark betroffen sind. Viele Webseiten "schlafen" am Tag und müssen in der Nacht Spitzenlasten verarbeiten. Ein anderes Beispiel sind Webshops, die über das Jahr hinweg eine konstante Besucherzahl haben, aber zu Feiertagen, wie z.B. Weihnachten zunehmend "überlaufen" werden. Das Gleiche gilt für Online Reisebüros, die im Sommer und im Winter ihre Spitzenzeiten haben, im Früjahr und Herbst aber eher weniger ausgelastet sind. Das Autoscaling sorgt in diesen Fällen dafür, dass während der Spitzenzeiten automatisch die Performance der Webseiten mitwächst und in den Zeiten, wo weniger Last zu verarbeiten ist, die überschüssigen Server "abgestossen" werden. Es handelt sich also um eine dynamische Skalierung der zum jeweiligen Zeitpunkt benötigten Performance.

Die technischen als auch wirtschaftlichen Vorteile liegen somit auf der Hand. Da im Cloud Computing die Server pro Stunde "gemietet" und abgerechnet werden, können durch die Verringerung der eingesetzten Server während geringer Lastzeiten ebenfalls die Kosten reduziert werden. Auf Grund der Nutzung einer höheren Anzahl an Servern zu Spitzenzeiten, werden Performanceprobleme vermieden.

Ein Video der Elusive KG veranschaulicht wie autoscaling funktioniert.

http://www.youtube.com/watch?v=a8zyu9Lg0L0

Quellen:

[1] AWS - Autoscaling
[2] Graphik: Autoscaling



Clone Cloud

Trotz ihrer relativ leistungsschwachen Hardware werden an Mobiltelefonen/ Smartphones mittlerweile dieselben Ansprüche gestellt wie an gewöhnliche Desktops PCs. Eine mögliche Lösung kommt aus Intels Forschungsabteilung von den Wissenschaftlern Byung-Gon Chun und Petros Maniatis. Bei der sogenannten Clone Cloud [1] wird eine exakte Kopie des Smartphones in der Cloud abgebildet. Alle für das Smartphone zu rechenintensiven Aufgaben werden dann von diesem Clone in der Cloud übernommen.

Clone Cloud Architecture
Clone Cloud Architecture [2]

Für die Kommunikation mit dem Clone innerhalb der Cloud Computing Umgebung wird eine schnelle mobile Internetverbindung (UMTS/ 3G) benötigt. Ein erster Prototyp wurde von Chun und Maniatis bereits auf das Android G1 portiert und übertrug ohne Probleme die rechenintensiven Aufgaben zu dem Clone in die Cloud.

Das Prinzip ist mit dem von Web basierten Anwendungen zu Vergleichen, die ebenfalls auf entfernten Servern und nicht auf dem Client lokal ausgeführt werden. Der Unterschied besteht darin, dass bei der Clone Cloud eine exakte 1:1 Kopie von der gesamten Telefonsoftware erstellt und auf einem entferntem Server abgelegt wird. Muss das Telefon nun komplexe und rechenintensive Aufgaben durchführen, werden Teilaufgaben (im Hintergrund) in die Cloud übertragen. Zu Beginn wird zusätzlich berechnet wie lange der Transfer mittels der aktuell verfügbaren Mobilfunkverbindung dauert und wie viel Akkuleistung dafür benötigt wird.

Clone Cloud Model
Clone Cloud Model [2]

Chun und Maniatis sehen als einen Vorteil der Clone Cloud die höheren Akkulaufzeiten, da die CPU des Mobiltelefons nicht mehr so stark beansprucht wird. Neben der besseren Effizienz soll Clone Cloud ebenfalls die Leistungsfähigkeit der Mobiltelefone steigern. Erste Tests mit einer speziell für Clone Cloud entwickelten Gesichtserkennungssoftware zeigten, dass die Analyse eines Photos auf einem Standard Android Mobiltelefon ca. 100 Sekunden Prozessorzeit benötigten. Wurde die Analyse hingegen mit dem Clone des Mobiltelefons auf einem Desktop PC ausgeführt, war der Vorgang nach 1 Sekunde beendet. Da Clone Cloud in einer Cloud Computing Umgebung betrieben wird, nutzt es dessen Ideen und Eigenschaften und kann somit zur Laufzeit den benötigten Speicher und die Rechenleistung beliebig skalieren.

Ein weiterer Anwendungsvorschlag kommt von dem NEC Wissenschaftler Ya-Yunn Su. Durch den Wandel der Mobiltelefone zu kleinen Allzweck-Computern erben diese auch die Sicherheitsprobleme, wie Viren und Würmer, von den Desktop PCs. Das Scannen des gesamten Dateisystems benötigt viel Rechenleistung, zu viel für Mobiltelefone. Dieser Vorgang kann mittels der Clone Cloud im Hintergrund bzw. auf dem Clone (auf dem entfernten Server) durchgeführt werden, sogar dann wenn das Telefon ausgeschaltet ist.

Quellen:

[1] CloneCloud Website
[2] CloneCloud Paper



Cloud Computing: "The Data Liberation Front" von Google

Mit der sogenannten The Data Liberation Front hat Google eine Webseite vorgestellt, auf der Benutzer von Google Cloud Services sämtliche Informationen beziehen können, wie sie ihre Daten mit den Produkten von Google austauschen können. Genauer geht es darum, wie die Daten in die Cloud hineingelangen und wie diese wieder vollständig herausgezogen werden können, um sie z.B. auf den eigenen Servern oder bei einem anderen Anbieter hosten zu lassen.

The Data Liberation Front

Der Antrieb des Teams der "Data Liberation Front" besteht nach eigener Aussage darin, dass jeder Benutzer in der Lage sein muss, die Daten die er in einem Produkt von Google erzeugt bzw. importiert hat, wieder exportieren zu können. Das Team arbeitet daher eng mit den Entwicklerteams aller Google Produkte zusammen, um sie bei diesem Thema zu unterstützen.

Sie richten sich dabei nach dem viel versprechenden Leitbild:

"Users should be able to control the data they store in any of Google's products. Our team's goal is to make it easier for them to move data in and out."

Das Projekt wurde im Jahr 2007 als ein internes Entwicklungsteam gegründet. Der Name "Data Liberation Front" wurde als eine Homage an die "The Judean People's Front" aus dem Film Monty Python's Life of Brian gewählt, da diese Gruppe die meiste Zeit damit verbrachte miteinander zu streiten.

Das Team sieht sich innerhalb von Google nicht so stark verwurzelt und ist daher der Meinung, dass Google dadurch die Arbeit erleichtert wird, seinen Kunden die Möglichkeit zu geben, Google wieder zu verlassen.

Weiterhin besteht die Meinung, dass für den Export der Daten keine zusätzlichen Gebühren erhoben werden dürfen. Darüber hinaus wäre es genau so schlimm, wenn der Datenexport viele Stunden benötigen würde. Das wäre gleichbedeutend mit einem Teil-Export bzw. einem Nicht-Export der Daten.

In der FAQ werden viele weitergehende Fragen beantwortet. Eine interessante und für mich wichtige Aussage betrifft die Verwendung von Standards.

"We're working to use existing open standards formats wherever possible, and to document how we use those formats in a clear simple manner."

Weitere Informationen stellt das Team auf seinem Data Liberation Front Blog bereit.

Da ich vor kurzem genau über dieses Thema geschrieben habe, begrüße ich Googles Schritt. Es wäre daher zu wünschen, dass die restlichen Cloud Anbieter den selben Weg gehen!



Eucalyptus – Eine Open Source Infrastruktur für die eigene Cloud

Beim Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus)[1][2] handelt es sich um eine Open Source Software Infrastruktur zum Aufbau von skalierbaren Utility Computing bzw. Cloud Computing Umgebungen für spezielle Clustersysteme oder einfachen miteinander verbundenen Arbeitsplatzrechnern.

Eucalyptus wurde als ein Forschungsprojekt am Computer Science department an der University of California Santa Barbara entwickelt und wird mittlerweile von der Eucalyptus Systems Inc. vermarktet. Die Software wird aber weiterhin als Open Source Projekt gepflegt und weiterentwickelt. Die Eucalyptus Systems Inc. bietet darüber hinaus lediglich weitere Dienstleitungen und Produkte sowie einen professionellen Support rund um Eucalyptus an.

Folgende Funktionen stellt Eucalyptus bereit:

- Kompatibilität mit den Schnittstellen zu Amazon EC2 und S3 (SOAP und REST).
- Unterstützung aller Virtual Machines die auf einem Xen Hypervisor oder einer KVM ausgeführt werden.
- Administrationstools für die System- und Benutzerverwaltung
- Die Möglichkeit mehrere Cluster für eine Cloud zu konfigurieren, wobei jeder einzelne Cluster über eine private interne IP-Adresse verfügt.

Architektur

Eucalyptus besteht aus fünf zusammenarbeitenden Hauptkomponenten um den angeforderten Cloud Service bereit zu stellen. Die Kommunikation zwischen den Komponenten erfolgt über gesicherte SOAP Nachrichten mittels WS-Security.

Cloud Controller (CLC)
Der Cloud Controller dient innerhalb einer Eucalyptus Cloud als Hauptkomponente für die Verwaltung des gesamten Systems und stellt den Administratoren und Benutzern einen zentralen Zugriffspunkt bereit. Die Kommunikation aller Clients mit dem Eucalyptus System erfolgt ausschließlich nur über den Cloud Controller anhand der auf SOAP oder REST basierenden API. Der Cloud Controller ist dafür zuständig, alle Anfragen zu der richtigen Komponente weiterzuleiten, diese zu sammeln und die Antwort der Komponente anschließend wieder zu dem Client zurück zu senden. Der Cloud Controller ist somit die öffentliche Schnittstelle einer Eucalyptus Cloud.

Cluster Controller (CC)
Der Cluster Controller ist innerhalb des Eucalyptus Systems für die Verwaltung des virtuellen Netzwerks zuständig. Der Cloud Controller erhält alle Anfragen auf Basis seiner SOAP oder REST Schnittstellen. Der Cloud Controller erhält alle Informationen über die vorhandenen Node Controllers des Eucalyptus Systems und ist für die Kontrolle des Lebenszyklus jedes einzelnen verantwortlich. Er leitet alle Anfragen an die Node Controller mit verfügbaren Ressourcen weiter um damit virtuelle Instanzen zu starten.

Node Controller (NC)
Ein Node Controller steuert das Betriebssystem und den zugehörigen Hypervisor eines Rechners (Node) im Eucalyptus System. Auf jeder physikalischen Maschine die eine durch den Cluster Controller instantiierte virtuelle Instanz auf Grund einer Anfrage beherbergt, muss eine Instanz eines Node Controller vorhanden sein.

Walrus (W)
Walrus ist für die Zugriffsverwaltung auf den Speicherdienst innerhalb eines Eucalyptus Systems zuständig. Walrus erhält die Anfragen über seine SOAP oder REST Schnittstelle.

Storage Controller (SC)
Der Storage Controller verwaltet den Speicherdienst innerhalb eines Eucalyptus Systems und verfügt über eine Schnittstelle zu Amazon's S3 Dienst. Der Storage Controller arbeit in Verbindung mit Walrus und wird für die Speicherung und den Zugriff auf die Images der Virtual Machines, die Kernel Images, die RAM Disk Images und die Daten der Benutzer verwendet. Die Images der Virtual Machines können rein privat oder öffentlich zugänglich gemacht werden und können dabei komprimiert und verschlüsselt gespeichert werden. Die Images werden lediglich entschlüsselt, wenn ein Node eine neue virtuelle Instanz starten muss und dazu einen Zugriff auf das Image benötigt.

Ein Eucalyptus System vereint und verwaltet Ressourcen von Single-Cluster als auch Multi-Cluster Systemen. Dabei besteht ein Cluster aus einer Gruppe von Rechnern, die alle mit dem selben LAN verbunden sind. Zu jedem Cluster kann wiederum einer aber auch mehrere Node Controller gehören, die für die Verwaltung der Instantiierung und Beendigung der virtuellen Instanzen verantwortlich sind.

Wie in Abbildung 1 illustriert, besteht ein Single-Cluster aus mindestens zwei Maschinen. Auf dem einen werden der Cluster Controller, der Storage Controller und der Cloud Controller ausgeführt, auf dem anderen der Node Controller. Diese Art der Konfiguration ist vor allem für Experimente und schnelle Konfigurationen geeignet. Die dargestellte Konfiguration könnte ebenfalls auf einer einzigen Maschine implementiert werden. Allerdings ist dafür eine äußerst leistungsstarke Hardware notwendig!


Abbildung 1: Topologie einer Single-Cluster Eucalyptus Installation [2]

Wie in Abbildung 2 dargestellt, kann bei einem Multi-Cluster jede Komponente (CC, SC, NC, und CLC) auf einer separaten Maschine ausgeführt werden. Dies sollte die bevorzugte Art und Weise sein das Eucalyptus System zu konfigurieren, wenn damit ernsthaft gearbeitet werden soll. Mit einem Multi-Cluster kann zudem die Performance erhöht werden, indem einem Controller die passende Maschine zugewiesen wird. Zum Beispiel sollte der Cloud Controller auf einer Maschine mit einer schnellen CPU ausgeführt werden. Im Allgemeinen bringt die Entscheidung für einen Multi-Cluster eine höhere Verfügbarkeit, sowie eine bessere Lastverteilung und eine optimierte Verteilung der Ressourcen über alle Cluster. Das Clusterkonzept ist vergleichbar mit dem Konzept der Verfügbarkeitszonen der Amazon EC2. Dabei werden die Ressourcen über mehrere Verfügbarkeitszonen hinweg verteilt, damit ein Fehler in einer Zone nicht die Anwendung beeinträchtigt.


Abbildung 2: Topologie einer Multi-Cluster Eucalyptus Installation [2]

Folgende Hardwarevoraussetzungen müssen erfüllt sein, um darauf einen CC, CLC, Walrus oder SC auszuführen. [2]

Folgende Hardwarevoraussetzungen müssen erfüllt sein, um darauf einen NC auszuführen. [2]

Eucalyptus und die Ubuntu Enterprise Cloud

Bei der Ubuntu Enterprise Cloud (UEC) handelt es sich um eine Open Source Initiative von Ubuntu, um auf eine einfachere Art und Weise skalierbare Cloud Infrastrukturen auf Basis von Eucalyptus bereitzustellen und diese zu konfigurieren.

Mit der Ubuntu Enterprise Cloud können Public Clouds erstellt werden, welche Amazon's EC2 infrastructure nutzen. Es können damit aber genau so gut Private Clouds entwickelt werden, die auf der eigenen Infrastruktur im eigenen Rechenzentrum hinter der eigenen Firewall gehostet werden.

Vorteile von Eucalyptus

Bei Eucalyptus handelt es sich um eine Umgebung für Cloud Services, mit der Public Clouds auf Amazon's EC2 Infrastruktur bzw. Private Clouds im hauseigenen Rechenzentrum erstellt werden können. Die grundlegenden Vorteile sollen hier noch einmal kurz aufgeführt werden:

Open Source und Entwicklung
Eucalyptus wurde geschaffen, um die Kommunikation und Forschung von Cloud Computing Plattformen zu fördern. Der Quellcode ist frei verfügbar, was es ermöglicht die Plattform so zu erweitern, damit sie den eigenen Anforderungen entspricht. Eucalyptus wird zunehmend weiterentwickelt. Darüber hinaus ist die Aufnahme und Integration von Funktionswünschen und Verbesserungsvorschlägen sehr schnell.

Community
Eucalyptus verfügt über eine große Community die gerne bereit ist einander zu helfen. Über die Foren kann schnell Kontakt zu anderen Benutzern aufgenommen und Hilfe bezogen werden.

Public Cloud
Eucalyptus funktioniert einwandfrei auf Amazon's EC2 Framework und kann damit als Public Cloud eingesetzt werden.

Private Cloud
Eucalyptus kann auf der eigenen Infrastruktur im eigenen Rechenzentrum hinter der eigenen Firewall als Private Cloud eingesetzt werden. Dadurch ist die Kontrolle bzgl. der Sicherheit und der gesamten Umgebung in der eigenen Hand.

Portabilität
Auf Grund der Kompatibilität von Eucalyptus mit Amazon's EC2 API sowie der Flexibilität von Eucalyptus, können Anwendungen ohne großen Aufwand von einer Cloud in die andere migriert werden. Darüber hinaus besteht die Möglichkeit des Aufbaus von Hybrid Clouds, indem eine Private Cloud mit einer Public Cloud erweitert bzw. kombiniert wird.

Qualitativ durch Tests
Durch den Einsatz von Eucalyptus in Ubuntu's Enterprise Cloud findet tagtäglich ein weltweiter realer Test auf Basis von mehr als tausend Server-Instanzen statt.

Kommerzieller Support
Neben den Foren der Eucalyptus Community kann natürlich auch auf einen kommerziellen Support zurückgegriffen werden.

Quellen:
[1] Eucalyptus
[2] IBM developerWorks



Nachteile des Cloud Computing

Konstante Internetverbindung
Cloud Computing ist nur möglich, wenn eine Internetverbindung verfügbar ist. Da durch ergibt sich hiermit schon ein Single-Point-of-Failure.

Langsame Verbindungen
Um Cloud Computing akzeptal einsetzen zu können, bedarf es einer schnellen Internetverbindung. Es kann sonst sehr lange dauern, bis die Seiten in einem großen Dokument durchgesehen werden können.

Geschwindigkeitsprobleme
Trotz einer schnellen Internetverbindung können webbasierte Anwendungen langsamer sein als die auf dem lokalen System. Das liegt an der Zeit, die der Transfer benötigt, um die Daten zwischen der Cloud und dem Arbeitsplatzrechner auszutauschen.

Schutz der gespeicherten Daten
Beim Cloud Computing werden alle(!) Daten in der Cloud gespeichert. Dadurch ergeben sich natürlich die Fragen: Wie sicher ist die Cloud? Haben andere, möglicherweise unauthorisierte Benutzer Zugriff auf meine Daten?

Datenverlust durch die Cloud
Im Prinzip sind die Daten durch das Speichern über mehrere Server und Standorte hinweg redundant vor Verlust geschützt. Sollten die Daten nun aber doch aus irgendeinem Grund verloren gehen, existiert kein physikalisches bzw. lokales Backup dieser Daten. Die Daten sind dann einfach weg. Das kann umgangen werden, indem regelmäßig Backups aus der Cloud auf einen lokalen Rechner abgelegt werden, was aber nicht im Sinne des Cloud Computings wäre.

Abhängigkeit
Unternehmen machen sich zunehmend abhängig von ihren Dienstleistern. Wurden Teile der Infrastruktur einmal in die Cloud migriert, ist der Weg zurück nicht mehr so einfach. Die Dienstleister bieten Utilities um die Daten vom Unternehmen in die Cloud zu vereinfachen. Programme um die Daten wieder aus der Cloud heraus zu migrieren existieren aber bisher noch nicht. Genau so wenig existieren Programme um die Daten zwischen unterschiedlichen Anbietern zu übertragen, was daran liegen mag, dass jeder Anbieter mit unterschiedlichen Standards arbeitet. Da bleibt die Frage offen: Einmal Cloud - immer Cloud bzw. immer dieselbe Cloud?



Vorteile des Cloud Computing

Geringere Kosten für Arbeitsplatzrechner
Für die Nutzung von Cloud Computing Applikationen werden keine leistungsfähigen Arbeitsplatzrechner mehr benötigt. Die Anwendungen befinden sich in der Cloud und nicht mehr lokal auf dem Computer und werden über einenWebbrowser bedient. Dadurch ist eine hohe Rechenleistung und Speicherplatz auf dem lokalen System nicht mehr notwendig.

Leistungssteigerung
Das Arbeiten mit lokalen Systemen wird durch die Nutzung von Cloud Computing Anwendungen beschleunigt. Die Software und Daten der Anwender werden nicht mehr lokal gespeichert, wodurch das System entlastet wird.

Geringere Kosten der IT-Infrastruktur
Unternehmen können darauf verzichten in eine Vielzahl eigener leistungsstarker Server zu investieren und stattdessen die Rechenleistung etc. aus der Cloud beziehen. Interessant ist dies vor allem für Unternehmen, die saisonale Hochzeiten ausgleichen müssen und aus diesem Zweck ihre Systeme überdimensionieren müssen.

Geringere Instandhaltungskosten
Durch die Reduzierung der eigenen Serverfarm sinken die Instandhaltungskosten. Die Instandhaltungskosten der Software entfallen praktisch komplett, da dieses durch einen externen Anbieter übernommen wird.

Geringere Kosten für Software
Anstatt für jeden Arbeitsplatz einzelne Softwarepakete zu kaufen, besteht die Möglichkeit nur diejenigen Mitarbeiter die Software in der Cloud nutzen zu lassen, die diese auch benötigen. Selbst wenn die Kosten einer webbasierten Anwendung im Vergleich zu herkömmlicher Software gleich wären, würde die IT-Abteilung durch fehlende Installation und Wartung der webbasierten Software Kosten einsparen können.

Software Updates on Demand
Webbasierte Anwendungen können zentral und praktisch auf die Minute ausgetauscht werden. Die Software ist zu jeder Zeit auf dem aktuellen Stand, egal wann der Benutzer sich anmeldet.

Höhere Rechenleistung
Durch den Einsatz von Cloud Computing haben Unternehmen zu jeder Zeit den Zugriff auf die gesamten Ressourcen der Cloud und sind nicht mehr auf die Geschwindigkeiten beschränkt, die ihr eigenes Rechenzentrum ihnen bietet. Dadurch haben sie die Möglichkeit ihre Daten wie von einem Supercomputer verarbeiten zu lassen.

Unbegrenzter Speicherplatz
Im Vergleich zu einem Arbeitsplatzrechner oder einem Storage in einem Rechenzentrum ist der Speicherplatz in der Cloud praktisch unbegrenzt. Unternehmen haben dadurch den Vorteil ihren Speicherplatz dynamisch zu beziehen. Der angemietete Speicherplatz in der Cloud wächst also mit den Daten, die dort abgelegt werden.

Höhere Datensicherheit
Daten werden in der Cloud redundant (über mehrere Standorte) gespeichert, ein Datenverlust ist dadurch im Prinzip ausgeschlossen. Sollte ein Arbeitsplatzrechner abstürzen, sind die Daten davon nicht mehr betroffen. Lokale Datensicherungen können dadurch entfallen.

Einfachere Zusammenarbeit
Der klassische Dokumentenaustausch funktioniert so, dass die Daten auf einem Server im Netzwerk abgelegt oder per E-Mail an den Kollegen verschickt werden. Dabei konnte immer nur ein Benutzer zur Zeit an dem Dokument arbeiten. Durch das Ablegen der Daten in der Cloud können nun mehrere Benutzer - auch standortübergreifend - gleichzeitig auf ein Dokument zugreifen und dieses ebenfalls zur selben Zeit bearbeiten. Die Zusammenarbeit innerhalb eines Projekts wird dadurch verbessert.

Mobilität
Werden die Daten in der Cloud gespeichert, kann weltweit von jedem Ort, mit jedem Endgerät auf diese Daten zugegriffen werden - vorausgesetzt eine Internetverbindung ist vorhanden.



Nutzen durch Cloud Computing

Cloud Computing bietet den Anbietern von Cloud Diensten sowie den Anwendern einige Nutzenvorteile. Anbieter von Cloud Services haben Zugriff auf einen unendlich großen Pool von Speicherplatzressourcen und Rechenkapazitäten um ihre Anwendungen ausführen zu lassen. Sie sind nicht mehr durch physikalische Gegebenheiten eingeschränkt, da neue Wege für den Zugriff auf Informationen und die Verarbeitung und Analyse von Daten zur Verfügung stehen. Darüber hinaus bestehen damit Möglichkeiten Anwender und Ressourcen von jedem beliebigen Ort auf der Erde aus miteinander zu verbinden. Ein Anwender ist nicht mehr an einen und denselben Computer gebunden. Webanwendungen und damit auch die Daten sind mit jedem beliebigen Computer erreichbar, unabhängig vom Ort und dem Netzwerk, mit dem er verbunden ist. Daten, die in der Cloud gespeichert werden, sind immer vorhanden, auch wenn der Computer plötzlich ausfällt. Das erhöht die Datensicherheit. Ein weiterer Nutzen für den Anwender ist die Möglichkeit der globalen Zusammenarbeit. Anwender/ Mitarbeiter an verschiedenen Standorten können zur selben Zeit an der selben Datei arbeiten, was die Effezienz der zusammenarbeit deutlich erhöht. Zu guter Letzt senkt Cloud Computing durch effizientes Ressourcensharing die Kosten. Die Cloud Computing Infrastruktur kann überall vorhanden sein, so dass Unternehmen nicht mehr gezwungen sind ihre eigenen Rechenzentren zu betreiben. Darüber hinaus müssen die eigenen IT-Ressourcen nicht mehr überdimensioniert ausgelegt werden um Spitzenzeiten abzufangen. In Zeiten zu denen z.B. ein Webserver mit vielen parallelen Anfragen überhäuft wird, können Rechenleistung und Service aus der Cloud dynamisch bezogen werden, je nachdem, was gerade benötigt wird. Ist die Überlast vorbei, werden die Ressourcen wieder auf ein Mindestmaß heruntergefahren.



Klassifikationen der Rollen in der Cloud

Im Cloud Computing werden vier Arten von Nutzerrollen unterschieden. Zum einen gibt es die SaaS-Benutzer, also diejenigen Unternehmen, Mitarbeiter aber auch Privatanwender, die einen SaaS Dienst verwenden. Des Weiteren wird von den SaaS-Providern gesprochen, die den SaaS-Benutzern ihre Dienste bereitstellen. Den SaaS-Providern wird zugleich die Rolle des Cloud-Benutzers zugesprochen, da von ihnen die Dienste der dritten Nutzerrolle, nämlich den Cloud-Providern, in Anspruch genommen wird. Ein Cloud-Provider steht im eigentlichen Sinne für den Betreiber der Wolke, ihm gehört in der Regel das Rechenzentrum und die gesamte Infrastruktur, die dazugehört. Der SaaS-Provider kann das Rechenzentrum nutzen um mittels der Infrastruktur dem SaaS-Benutzer seine Dienste zur Verfügung zu stellen.

Klassifikationen der Rollen in der Cloud
Klassifikationen der Rollen in der Cloud [1]

In einigen Fällen kann der Cloud-Provider gleichzeitig die Rolle des SaaS-Providers übernehmen. Das ist genau dann der Fall, wenn der Betreiber des Rechenzentrums auch SaaS Dienste direkt anbietet. Genauso kann aber auch ein SaaS-Benutzer zusätzlich die Rolle eines Cloud-Benutzers einnehmen, nämlich genau dann, wenn dieser z.B. seine gesamten Serverkapazitäten (Speicher, Rechenkapazität, etc.) direkt in das Rechenzentrum eines Cloud-Providers auslagert.

Im Allgemeinen kann man sagen, dass sich die Probleme der jeweiligen Rollen verlagern. Der SaaS-Benutzer verschiebt seine 'Probleme' in Form von Software und Diensten zum SaaS-Provider, der wiederum seine 'Probleme' in Form eines Rechenzentrums an den Cloud-Provider auslagert.

[1] University of California at Berkeley
Electrical Engineering and Computer Sciences
Above the Clouds: A Berkeley View of Cloud Computing



Software as a Service

Software as a Service (SaaS) ist die oberste und letzte Schicht des Cloud Computing Service-Models. Sie stellt dem Anwender vollständige Anwendungen zur Verfügung. Sie kann als eine Art Distributionsmodell verstanden werden, bei dem die Nutzung von Software (Lizenzen) über das Internet von einem Drittanbieter angeboten wird. Der Drittanbieter übernimmt dabei u.a. die Wartung/ Aktualisierung und das Hosting der Software. Für den Anbieter besteht der Vorteil darin, dass nur eine Instanz einer Software auf den Servern bereitgestellt werden muss, welche unzählige Anwender gleichzeitig nutzen können. Wird die Software auf einen aktuellen Stand gebracht, genügt ein Update Vorgang an zentraler Stelle und die Software ist für alle Anwender gleichzeitig aktuallisiert. Der Vorteil für den Anwender besteht darin, dass lediglich - wie schon bei PaaS - nur ein Desktop-PC, ein Web-Browser und eine Internetverbindung ausreicht um z.B. Dienste wie E-Mail, Office Anwendungen oder sogar ERP-Systeme nutzen zu können. Die Anschaffung und Wartung großer Serverlandschaften bzw. Softwarepakete entfällt ebenso wie das 'lästige' Updaten der lokalen Anwendungen. Der Drittanbieter sorgt immer für einen aktuellen Stand der Software und stellt die gesamte Infrastruktur für das Hosting der Software bereit. Dazu gehören auch das Speichern von Dateien (Dokumenten) auf den Servern des Anbieters. Der Anbieter ist demnach für alle notwendigen Bereiche des Betriebs, wie Verfügbarkeit, Backup, Redundanzen und auch die Stromversorgung verantwortlich. Auch hier erfolgt die Abrechnung wieder mit pay per use, mit dem kleinen Unterschied, dass die Kosten pro nutzenden Anwender der Software berechnet werden.

Software as a Service
Software as a Service [1]

[1] Microsoft Press
Cloud Computing mit der Microsoft Plattform
Microsoft Press PreView 1-2009



Platform as a Service

Platform as a Service (PaaS) ist die mittlere Schicht des Cloud Computing Service-Models und geht einen Schritt weiter als IaaS. Sie ist dafür zuständig eine transparente Entwicklungsumgebung bereitzustellen. Dabei stellt der Drittanbieter eine Plattform zur Verfügung auf der (Web)-Anwendungen entwickelt, getestet und gehostet werden können. Die Anwendungen werden anschließend auf der Infrastruktur des Anbieters ausgeführt und nutzen dessen Ressourcen. Der vollständige Lebenszyklus einer Anwendung kann darüber vollständig verwaltet werden. Über APIs können die Dienste auf der Plattform des jeweiligen Anbieters angesprochen werden. Der Vorteil besteht darin, dass vor allem kleine Unternehmen ihre Entwicklungsinfrastruktur auf ein Minimum beschränken können. Sie benötigen lediglich einen Desktop-PC, einen Web-Browser, evtl. eine lokale IDE, eine Internetverbindung und ihr Wissen, um Anwendungen zu entwickeln. Der Rest obligt dem Drittanbieter, der für die Infrastruktur (Betriebssystem, Webserver, Entwicklungsumgebung etc.) verantwortlich ist. Auch hier erfolgt die Abrechnung mit dem Prinzip per pay use.

Platform as a Service
Platform as a Service [1]

[1] Microsoft Press
Cloud Computing mit der Microsoft Plattform
Microsoft Press PreView 1-2009



Infrastructure as a Service

Infrastructure as a Service (IaaS) ist die unterste Schicht des Cloud Computing Service-Models. Sie bildet die Grundlage und stellt die grundlegenden Dienste wie Speicherplatz und Rechenkapazität bereit. In diesem Zusammenhang kann auch von Hardware as a Service (HaaS) gesprochen werden, da die gesamte Infrastuktur - Server, Speicherplatz, aber auch Router und Switches - mittels Virtualisierung bereitgestellt und gemietet (i.d.R pay per use) werden. Die gesamte Infrastruktur ist so skaliert, dass sie in Zeiten von Spitzenlast dynamisch erweitert wird und somit unterschiedlichen Auslastungen angepasst werden kann. Bei IaaS ist der Drittanbieter lediglich für die Bereitstellung und Wartung der Hardware zuständig. Alle anderen benötigten Ressourcen wie z.B. das Betriebssystem, Anwendungen etc. obligen dem Unternehmen.

Infrastructure as a Service
Infrastructure as a Service [1]

[1] Microsoft Press
Cloud Computing mit der Microsoft Plattform
Microsoft Press PreView 1-2009



Dienste in der Cloud

Innerhalb der Cloud existieren drei unterschiedliche Möglichkeiten wie Dienstleistungen bereitgestellt werden können. Da sie aufeinander aufbauen wird in diesem Zusammenhang auch von Schichten (Englisch: layers) gesprochen. Anhand dieses Drei-Schichten Modells ergeben sich neue Möglichkeiten für per pay use Geschäftsmodelle.

Dienste in der Cloud
Dienste in der Cloud [1]

[1] Microsoft Press
Cloud Computing mit der Microsoft Plattform
Microsoft Press PreView 1-2009