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



Hybrid Cloud

Die Hybrid Cloud stellt eine Mischung aus der Private und der Public Cloud dar. Dabei verfügen Unternehmen zwar über ihre eigene Private Cloud, verwenden aber zusätzlich Dienste aus der Public Cloud von externen Anbietern. Die Attraktivität besteht vor allem darin, dass der externe Anbieter bei Bedarf schneller und kostengünstiger die benötigte Infrastruktur/ Dienste erhöhen bzw. verkleinern kann. Die Dienste werden so in die Private Cloud integriert, dass der Endanwender nicht merkt, dass er eigentlich woanders arbeitet.

Hybrid Cloud



Public Cloud

In der Public Cloud werden die Dienste (Rechenkapazität/ Speicherplatz etc.) gegen Bezahlung oder kostenlos der Allgemeinheit zur Verfügung gestellt. Die Aufgaben, die ein Unternehmen in der Private Cloud vornimmt, werden in der Public Cloud dann von einem Drittanbieter übernommen. Die Aufgaben und Services von unterschiedlichen Kunden werden dabei auf derselben Infrastruktur (Server, Speicher, etc.)
gemeinsam gehostet und verarbeitet. Ein einzelner Kunde hat keine Kenntnis darüber, wessen Dienste ebenfalls auf derselben Infrastruktur gespeichert und verarbeitet werden.



Private Cloud

Von einer Private Cloud wird gesprochen, wenn Organisationen ihre eigenen Rechenzentren betreiben bzw. eigene Server angemietet haben und ihre Dienste nur für Ihre eigenen (geschäftlichen) Zwecke innerhalb ihrer eigenen privaten Netze verwenden und der Allgemeinheit nicht zur Verfügung stellen. Die Datensicherheit, 'Corporate Governance' und Zuverlässigkeit liegen damit in ihrem eigenen Einflussbereich. Aus diesem Grund werden Private Clouds nur indirekt zum Cloud Computing gezählt.



Cloud Architektur

Das Schlüsselkonzept des Cloud Computing ist ein riesiges Netzwerk bestehend aus vielen Servern, die in einem Grid organisiert sind. Alle Server verarbeiten die Anfragen parallel, indem die Ressourcen aller Beteiligten kombiniert werden um damit die Leistung eines Supercomputers zu erzielen, siehe auch Grid Computing. Die Server werden in diesem Fall von Dienstleistern betrieben und sind über mehrere Rechenzentren verteilt. Der Zugriff auf die Cloud erfolgt dabei über das Internet. Für den Benutzer stellt sich die Cloud nach außen wie eine Anwendung dar. Die gesamte Infrastruktur, die für die Verabeitung benötigt wird, ist dabei unsichtbar.

Cloud Computing - Architektur



Der Begriff der Cloud

Das Wort Cloud ist aus der Illustration der Netzwerktechnik abgeleitet, in der das Internet immer als Wolke (Cloud) dargestellt wird. Das hängt damit zusammen, dass es sich beim Internet um ein globales, dezentralisiertes Netz handelt, welches aus vielen lokalen und nationalen Netzen besteht, die miteinander verbunden sind. Wie Daten innerhalb des Internets ausgetauscht werden, ist von außen nicht direkt sichtbar. Da auf sämtliche Daten und Anwendungen im Sinne des Cloud Computing über das Internet zugegriffen wird, steckt nun alles in der Wolke.



Was ist Cloud Computing?

Geschichte

Die grundlegenden Ideen und Konzepte des Cloud Computing reichen bis in die 1960er zurück. Schon damals hatte Prof. John McCarthy die Idee entwickelt Rechenleistung und Anwendungen als Utility der Öffentlichkeit gegen eine Nutzungsgebühr bereitzustellen. Dass der Durchbruch erst heute bevorsteht, hängt mit den technischen Voraussetzungen zusammen, die zur damaligen Zeit einfach noch nicht gegeben waren.

Kurz zusammengefasst beginnt die Entwicklung zum heutigen Cloud Computing in den 1960er mit dem Utility Computing, dessen Idee darin besteht, IT-Dienste und Rechenleistung nach Verbrauch abzurechnen. Dazu gesellten sich die Application Service Provider (ASP), die als Dienstleister über eine Datenverbindung Anwendungssoftware wie z.B. ein CRM-System (Customer Relationship Management) anbieten, das von einem Kunden gegen eine Nutzungsgebühr gemietet werden kann. Die oben bereits angesprochenen Probleme führten dazu, dass der Hype wieder abnahm und erst um 2000 herum unter dem neuen Namen Software as a Service (SaaS) wieder aufgenommen wurde. In den 1990er kam die Idee des Grid Computings auf, das als ein Ersatz für Supercomputer verstanden werden kann, indem verteilte Rechnerleistung nach Bedarf bezogen wird.

Cloud Computing - Historische Entwicklung

Der serviceorientierte Ansatz aus dem Bereich des Utility Computing und den Bereichen der ASP/ SaaS + dem technischen Ansatz des Grid Computings ergeben in der Summe das, was wir heute unter Cloud Computing verstehen.

Definition

Cloud Computing symbolisiert den service- und anwendungsorientierten Trend der heutigen Informationstechnologie, bei dem verteilte und hoch skalierbare Infrastrukturen über das Internet von einem oder mehreren Providern adaptiert werden können und Anwendungen und Dienste an jedem Ort und zu jeder Zeit verfügbar sind.

Erwartungen

Unternehmen können durch den Einsatz von Cloud Computing ihre IT-Gesamtausgaben deutlich reduzieren und die Qualität, Sicherheit aber vor allem ihre Arbeitsabläufe messbar steigern. Cloud Computing Anbieter können Skaleneffekte nutzen, indem sie ihre Kosten über eine große Anzahl von Kunden verteilen und haben damit die Möglichkeit die Investitionen in den Betrieb und die Sicherheit (Daten- und Zugangssicherheit) ihrer Rechenzentren im Vergleich zu herkömmlichen Rechenzentrums Betreibern zu erhöhen.



IT-Strategy: Android im Unternehmenseinsatz

Seit seiner Einführung polarisiert das Betriebssystem Android für mobile Endgeräte die IT Branche. Viele halten es für einen Segen, andere Stimmen hingegen kritisieren und warnen vor den Übergriff von Googles Datenkranken im mobilen Bereich. Aber das wird uns in diesem Artikel nicht interessieren. Vielmehr beschäftigen wird uns mit dem Nutzen von Android, speziell im Unternehmenseinsatz.

Was ist Android

Android ist ein von der Open Handset Alliance entwickeltes Betriebssystem bzw. eine Softwareplattform für mobile Endgeräte. Es basiert auf dem freien Betriebssystem Linux sowie Java und steht unter der Apache License. Das Projekt wird insbesondere durch Google vehement unterstützt und vorangetrieben. So ist Google nicht nur für den Großteil der Entwicklung des Betriebssystem sowie der Basisanwendungen verantwortlich, sondern betreibt auch den Android Market, auf dem Android Anwendungen vertrieben und heruntergeladen werden können.

Was spricht für Android

Android basiert auf dem Linux Kernel 2.6 und verwendet speziell für die Plattform angepasste Java und C(++) Bibliotheken. Dazu gehören Basiskomponenten wie Codecs zur Wiedergabe von verschiedenen Medienformaten, OpenGL 3D Bibliotheken sowie eine Browser-Engine. Als Datenbank wird SQLite eingesetzt. Alle Applikationen sind modular aufgebaut und basieren auf einem Gleichberechtigungskonzept. Daher ist man nicht auf einen bestimmten E-Mail Client bzw. eine spezielle Kontaktverwaltung angewiesen.

Derzeit existiert schon eine beträchtliche Anzahl von mobilen Endgeräten (hauptsächlich Smartphones) auf Basis des Android Betriebssystems und immer mehr Hersteller kündigen neue Geräte an. Neben Smartphones gesellen sich mittlerweile aber auch Netbooks und IP-Telefone zu den Angeboten und der Markt wächst weiter.

Auf Grund der freien Verfügbarkeit des Android Codes sowie des einfach gestrickten SDKs (Software Developement Kit) können Anwendungen schnell entwickelt und veröffentlicht werden, wodurch sich das Angebot der verfügbaren Anwendungen täglich vergrößert.

Der Hauptvorteil besteht im Vergleich zu anderen mobilen Betriebssystemen am Markt (z.B. iPhone, Windows Mobil) vor allem in der freien Verfügbarkeit des Betriebssystem Codes. Den Geräteherstellern und Softwareanbietern stehen somit weniger Barrieren im Weg um optimale Lösungen zu entwickeln. Ich sehe aber vor allem für IT-Abteilungen einen enormen Vorteil darin, Android barrierefrei in ihre Applikations- und Infrastrukturstrategie einzubinden und damit einen ganzheitlichen Ansatz zu verfolgen.

Mögliche Probleme

Für die ersten Android Versionen (<= Version 1.4.6) war ein Googlekonto, also eine Google Mail Adresse notwendig, um Android überhaupt nutzen zu können. Nach zahlreichen Kritiken ruderte Google zurück, wonach seit der Version 1.5 nun kein Googlekonto mehr erforderlich ist. Einziger Nachteil ist hierdurch der Verzicht auf den Push-Mail Dienst, der nur mit Google Mail funktioniert.

Kontinuierliche Schritte zur ganzheitlichen mobilen Plattform für Unternehmen

Das erste Android Endgerät (HTC Dream | T-Mobile G1) kam am 22.10.2008 auf den Markt. Zielgruppe waren in erster Linie Privatnutzer, die mit einem Googlekonto ihre E-Mails, Termine, Kontakte etc. synchronisieren wollten. Nach nun etwas über einem Jahr entwickelt sich das System langsam aber sicher zu einer mobilen Plattform für den Unternehmenseinsatz. Das kürzlich veröffentlichte Update auf Android 1.6 bringt nun auch die lang ersehnte Möglichkeit mit, das Endgerät via VPN mit einer Gegenstelle zu verbinden. Verbindungen können hierbei über die Protokolle PPTP und L2TP (IPsec PSK bzw. IPsec CRT) hergestellt werden. Darüber hinaus hat Google angekündigt Android weiter für den Unternehmenseinsatz fit zu machen, hier müssen aber auch die Hersteller der Endgeräte ihren Teil dazu beitragen.

Für den Einsatz im Unternehmen stehen mittlerweile Anwendungen für unterschiedliche Bereiche zur Verfügung. Als mobiler Dateimanager ist der Astro File Manager eine gute Alternative. Wie schon auf den Palm Handhelds hat Dataviz ebenfalls für Android eine Version seiner mobilen Office Suite Documents To Go im Portfolio. Über en kostenlosen Viewer können Word Dokumente, Excel Dateien und Power Point Präsentationen betrachtet werden. Die kostenpflichtige Version gestattet dann auch das Erstellen und Bearbeiten der oben genannten Dateien und zusätzlich das Betrachten von PDF-Dateien. Für Administratoren steht das Programm Server up bereit. Damit können Netzwerke und Webserver mobil überwacht werden und es informiert über unterschiedliche Arten u.a. per SMS oder E-Mail, wenn z.B. ein Server nicht mehr erreichbar ist. Salesforce, Anbieter von Geschäftsanwendungen (u.a. CRM) stellt seine Produkte ebenfalls als mobile Versionen mit dem Namen Salesforce Mobile zur Verfügung. Da diese allerdings über den Webbrowser genutzt werden sind sie daher aber nicht auf Android beschränkt. Für den Abruf von E-Mails bzw. die Synchronisation mit einem Microsoft Exchange Server stehen u.a. Anwendungen wie K-9 Mail, TouchDown oder Aardvark bereit.

Der meiner Ansicht nach größte Vorteil von Android, der auch für den Einsatz im Unternehmen spricht ist die Portabilität. Neben Smartphones funktioniert Android bereits auf den immer beliebter werden Netbooks. Aber ebenso der Einsatz auf modernen Kassensystemen, MDEs (Mobile Datenerfassung) und jeder Art von Embedded Systems ist vorstellbar.

Optimales Szenario

Das bisher noch einfachste und bzgl. Android mit dem wenigsten Aufwand verbundene Szenario ist der vollständige Einsatz der Google Infrastruktur. Das setzt allerdings voraus, dass von dem Unternehmen bereits Google Apps für die E-Mail Kommunikation und die Verwaltung der Kalender und Kontakte eingesetzt wird. Android ist per se vollständig in die Google Infrastruktur integriert. Somit werden alle Änderungen die z.B. im E-Mail Postfach oder im Kalender stattfinden automatisch mit den Google Servern synchronisiert. Daher sind die Daten eines Benutzers -egal an welchem Arbeitsplatz (Desktop/ Mobil) er sitzt - immer auf dem aktuellen Stand. E-Mails werden über den Push-Mail Dienst automatisch auf das mobile Endgerät zugestellt. Dies ist wohlgemerkt das optimale Szenario und kann so nicht ohne einen Mehraufwand umgesetzt werden, wenn z.B. ein Exchange Server eingesetzt wird.

Ideal für eine Cloud Strategie

Android verfolgt u.a. den Ansatz des Cloud Computing. Das heißt die Daten liegen dabei in einer Serverfarm im Internet und synchronisieren sich in diesem Fall mit dem mobilen Endgerät.

Entscheidet sich ein Unternehmen z.B. für das oben beschriebene Szenario, bei dem die Daten bei Google gespeichert werden, kann hier auf die Bereitstellung und Wartung der mobilen Infrastruktur im eigenen Rechenzentrum verzichtet werden, was einen klaren Kostenvorteil bedeutet. Ein genereller Nachteil wird an dieser Stelle allerdings vom Cloud Computing geerbt, der Datenschutz. Wird hingegen eine eigene mobile Infrastruktur aufgebaut ergeben sich dadurch aber ebenfalls einige Mehrwerte. Durch das Speichern der Unternehmensdaten auf den Servern und nicht auf dem mobilen Endgerät sind die Daten geschützt. Das Endgerät kann im Falle eines Diebstahls oder anderen Missgeschicken jederzeit zentral gesperrt bzw. generell zentral administriert werden. Telefongespräche können über das Unternehmensnetzwerk stattfinden. Die Gespräche werden vom mobilen Endgerät gestartet und anschließend vom Unternehmensnetzwerk geroutet (z.B. in das Festnetz) und gesteuert. Der Vorteil besteht in der deutlichen Trennung von privaten und geschäftlichen Gesprächen, der Nutzung einer einzigen Rufnummer und den Zugriff auf die zentrale Kontaktdatenbank des Unternehmens. Neben (mobilen) Telefonkonferenzen über das Unternehmensnetzwerk unabhängig von Ort/ Zeit und beliebig vielen Benutzern besteht die Möglichkeit den aktuellen Status jedes Benutzers abzufragen um so zu sehen ob dieser gerade Verfügbar ist. Weiterhin haben u.a. Außendienstmitarbeiter Zugriff auf sämtliche Daten (z.B. CRM oder ERP) von jedem Ort mittels einer (mobilen) Internetverbindung.

Ein interessanter Ansatz kommt aus einem Forschungsprojekt der Berkeley University. Bei der sogenannten Clone Cloud [1] werden besonders ressourcen- und rechenintensive Aufgaben auf Serverfarmen ausgelagert. Dabei kommuniziert das mobile Endgerät mittels einer Breitband Internetverbindung (UMTS/ 3G) mit einer exakten Kopie seiner Software (Betriebssystem + Anwendungen) auf der Serverfarm. Für besonders anspruchsvolle Aufgaben wie z.B. die Bilderkennung, werden einzelne Teilaufgaben in die Cloud ausgelagert um den Verarbeitungsprozess zu beschleunigen.

Reflexion

Es bleibt spannend wie sich Android entwickeln wird. Dennoch ist das Betriebssystem auf dem besten Weg sich im Unternehmensumfeld zu etablieren. Die freie Verfügbarkeit des Betriebssystem Codes stellt dabei den größten Vorteil dar. Unternehmen haben damit die Möglichkeit das mobile Endgerät uneingeschränkt und optimal auf ihre Applikations- und Infrastrukturstrategie anzupassen und nicht umgekehrt, wie es bei anderen Angeboten auf dem Markt der Fall ist. Darüber hinaus sind sie nicht mehr nur auf Smartphones beschränkt, sondern können ebenfalls Netbooks und viele weitere Formen von Embedded Systems verwenden um ihre Mitarbeiter mobil an das Unternehmen anzubinden und ihre Geschäftsprozesse optimal zu unterstützen.

[1] Clone Cloud



SOA: Important facts to create a stable architecture

A SOA is often defined as death. But in most cases, failures are already made in the planning phase, because of a nonexistent process optimization. Often it is said: "Hey, let's make a SOA." A further Problem: The responsibility for a SOA is often fully assigned to the IT department, due to the fact that they will know what is needed. This is fundamentally wrong, because the organisation and process optimization belongs to the general management respectively to a delegate department/ team. The IT department should advise the business actively and has to show how the information technology can help at this point to reach the goal.

Afterwards the IT functionality must be established as a service to support business critical processes and design a stable SOA. Therefor following aspects must consider during the implementation.

  • loose coupling: A less degree of multiple hard- and software components among one another
  • distributable: The system should not be confined locally
  • a clear definition: An explicit requirements definition is indispensable
  • divisibility: The entire system can be divided into subcomponents
  • commutability: The individual subcomponents can be replaced

And at least standards, standards, standards...



Is there any possibility to leave or switch the Cloud? The need for a transparent Cloud!

Think about the following scenario. You have migrated parts of your IT Infrastructure successfully in the Cloud of a provider. You think: "Well, everything is fine. We are saving costs, our infrastructure is now scalable and elastic and our software is always state of the art." But,... what if certain things happen? Maybe you want to leave the Cloud and go back into your own Datacenter or you would like to change the provider?

Or how could you map your business processes into the Cloud distributed over several providers. Maybe one provider works on process A and an other provider works on process B, a third provider works on process C using process A and B. Or you are using several independent services from different providers and integrate them to a connected one. An easier example - the data is stored at provider A and provider B processes the data.

Is this possible? How does it works?

One critical point of Cloud Computing is the lack of standards. Each provider is using different technologies and cooks his own soup inside his infrastructure. For this reason each relationship among a provider and a client is different.

The need for a transparent Cloud is indispensable!

One answer could be libcloud (http://libcloud.org). Libcloud is a standard library for Cloud providers like Amazon, Rackspace, Slicehost and many more including an uniform API. Developed by Cloudkick (https://www.cloudkick.com), libcloud has become an independent project. It is written in Python and free of charge (Apache License 2.0) to interact with different Cloud providers. Libcloud was developed to obtain low barriers between Cloud providers and "... to make it easy for developers to build products that work between any of the services that it supports."[1]

[1] http://libcloud.org