Knackpunkt API - Standardisierte IaaS-Cloud-Schnittstellen
Knackpunkt API - Standardisierte IaaS-Cloud-Schnittstellen
Knackpunkt API - Standardisierte IaaS-Cloud-Schnittstellen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
KOMMUNIKATIONSMANAGEMENT<br />
Evren Eren,<br />
Christian Karnath<br />
<strong>Cloud</strong> Computing stellt einen echten<br />
Paradigmenwechsel in der Nutzung<br />
und Bereitstellung von IT-Diensten<br />
dar und ist ein aktuelles<br />
Schwerpunktthema der IT-Branche.<br />
Unternehmen können bei einem<br />
<strong>Cloud</strong>-Anbieter ad-hoc IT-Ressourcen<br />
in Form von Hard- oder Software<br />
anmieten und diese je nach Bedarf<br />
skalieren. Hierdurch werden nicht nur<br />
Kostenpotenziale adressiert, sondern<br />
durch das bedarfsgerechte<br />
Outsourcing der IT in die <strong>Cloud</strong><br />
können sich die Unternehmen wieder<br />
auf ihr Kerngeschäft konzentrieren.<br />
Doch eine einheitliche Steuerung der<br />
<strong>Cloud</strong> ist das wesentliche Problem.<br />
Prof. Dr. Evren Eren ist am Lehrstuhl für IT-<br />
Sicherheit und Rechnernetze an der Fachhochschule<br />
Dortmund, Christian Karnath als Geschäftsführer<br />
bei der Firma 2kit Consulting in<br />
Oberhausen tätig<br />
<strong>Knackpunkt</strong> <strong>API</strong><br />
<strong>Standardisierte</strong> <strong>IaaS</strong>-<strong>Cloud</strong>-<strong>Schnittstellen</strong><br />
Die technischen Basiskonzepte des<br />
<strong>Cloud</strong> Computing sind nicht neu, sondern<br />
<strong>Cloud</strong> Computing verknüpft und<br />
abstrahiert etablierte Konzepte. Hierzu<br />
zählen beispielsweise die Basistechniken<br />
Internet, Hochleistungsserver,<br />
Browser, Web 2.0, mobile Endgeräte,<br />
Virtualisierung und Programmierschnittstellen.<br />
Benutzer einer<br />
<strong>Cloud</strong> müssen sich normalerweise<br />
nicht explizit um diese kümmern, sondern<br />
profitieren von Funktionen wie<br />
zum Beispiel der Skalierung oder Ausfallsicherheit.<br />
Grundlage für die meisten <strong>Cloud</strong>-<br />
Plattformen ist die Virtualisierung von<br />
Hardwareressourcen. Hierdurch kann<br />
ein Betriebssystem (z.B. Windows) in<br />
einem anderen (z.B. Linux) als virtuelle<br />
Maschine laufen. Der Hypervisor<br />
schafft dabei die Umgebung für die<br />
virtuellen Maschinen und leitet Systemaufrufe<br />
an die reale Hardware<br />
weiter. Bekannte Produktlösungen<br />
sind z.B. VMware, KVM und XEN.<br />
Das Bereitstellen von Programmierschnittstellen<br />
(Application Programming<br />
Interface – <strong>API</strong>) für den Zugriff<br />
auf <strong>Cloud</strong>-Dienste ist ebenfalls ein<br />
essenzieller Bestandteil des <strong>Cloud</strong><br />
Computing. Durchgesetzt haben sich<br />
in diesem Umfeld die Implementierungen<br />
SOAP und Representational<br />
State Transfer (REST). SOAP ist ein<br />
Nachrichtenprotokoll und wird üblicherweise<br />
mit HTTP als Transportprotokoll<br />
eingesetzt. REST hingegen beschreibt<br />
einen Architekturstil, der<br />
zwingend auf HTTP aufsetzt und die<br />
HTTP-Verben benutzt, wie z.B. GET<br />
und POST. Des Weiteren ist für SOAP<br />
und WSDL das Austauschformat XML<br />
vorgeschrieben, wohingegen bei REST<br />
neben XML z.B. auch JSON benutzt<br />
werden kann.<br />
<strong>Cloud</strong>-Servicemodelle<br />
Nach der klassischen Definition des<br />
NIST (National Institute of Standards<br />
and Technology) werden drei verschiedene<br />
Servicemodelle unterschieden,<br />
die sich in ihrem Abstraktionsgrad,<br />
d.h. in der angebotenen <strong>Cloud</strong>-<br />
Dienstleistung voneinander unterscheiden<br />
(Bild 1).<br />
Die unterste Abstraktionsebene repräsentiert<br />
die <strong>IaaS</strong>-Ebene (Infrastructure<br />
as a Service), die lediglich Infrastrukturressourcen<br />
zur Verfügung stellt,<br />
dafür aber dem Kunden größtmögliche<br />
Flexibilität bietet. Zu den IT-Infra-<br />
Bild 1: <strong>Cloud</strong>-Servicemodelle (SaaS – Software<br />
as a Service, PaaS – Platform as a Service, <strong>IaaS</strong> –<br />
Infrastructure as a Service)<br />
strukturkomponenten gehören beispielsweise<br />
Rechenleistung, Massenspeicher<br />
und Netzkomponenten bzw.<br />
-funktionen. Typische Aufgaben sind<br />
das Anlegen und Löschen von Betriebssysteminstanzen,<br />
das Auslagern<br />
von Dateien sowie das Definieren von<br />
Netzkomponenten.<br />
Aufbauend auf der <strong>IaaS</strong>-Schicht bietet<br />
die PaaS-Ebene (Platform as a Service)<br />
dem Kunden eine verwaltete Umgebung<br />
an, auf der eigene Anwendungen<br />
entwickelt und bereitgestellt werden<br />
können. Hier liegen die notwendigen<br />
Entwicklungswerkzeuge und<br />
-umgebungen vor.<br />
Die höchste Abstraktionsebene ist die<br />
SaaS-Ebene (Software as a Service),<br />
auf der bereits vollwertige Anwendungen<br />
existieren und direkt verwendet<br />
werden können. Die Idee dahinter<br />
ist, dass Software nicht mehr lokal auf<br />
einem Rechner installiert und konfiguriert,<br />
sondern für eine Vielzahl von Benutzern<br />
über das Internet „on Demand“<br />
bereitgestellt wird.<br />
12 NET 11/12
<strong>IaaS</strong>-<strong>Cloud</strong>-Anbieter und <strong>API</strong>s<br />
Die nebenstehende Tabelle bietet einen<br />
Überblick über die wesentlichen<br />
Anbieter und Produkte <strong>IaaS</strong>-basierter<br />
<strong>Cloud</strong>-Lösungen und deren <strong>API</strong>-Eigenschaften.<br />
Die erste Spalte enthält<br />
die Bezeichnungen der verschiedenen<br />
<strong>Cloud</strong>-Typen, während die zweite<br />
Spalte spezifiziert, ob es sich um einen<br />
<strong>Cloud</strong>-Anbieter oder um ein Produkt<br />
zum Aufbau einer eigenen<br />
<strong>Cloud</strong>-Infrastruktur handelt. In der<br />
dritten Spalte sind die <strong>Schnittstellen</strong>protokolle<br />
wiedergegeben, die die jeweilige<br />
<strong>Cloud</strong> dem Kunden zur Verfügung<br />
stellt, um mit deren <strong>API</strong> kommunizieren<br />
zu können. Die vierte Spalte<br />
beschreibt, welche Austauschformate<br />
die <strong>Cloud</strong> ihren Kunden bietet. In der<br />
letzten Spalte ist aufgezeigt, wie die<br />
<strong>Schnittstellen</strong>implementierungen aussehen.<br />
Viele <strong>Cloud</strong>-Lösungen setzen entweder<br />
eigene Implementierungen für ihre<br />
Schnittstelle ein oder Implementierungen,<br />
die bereits andere Hersteller<br />
spezifiziert haben. Einige <strong>Cloud</strong>-Lösungen<br />
bieten dem Kunden verschiedene<br />
<strong>Schnittstellen</strong>protokolle und<br />
-formate zur Auswahl an, wobei das<br />
<strong>Schnittstellen</strong>protokoll REST und das<br />
Austauschformat XML am häufigsten<br />
anzutreffen sind.<br />
Fehlende Interoperabilität<br />
Sollte sich der Anwender dazu entscheiden,<br />
Produkte verschiedener<br />
<strong>IaaS</strong>-<strong>Cloud</strong>-Anbieter gleichzeitig zu<br />
benutzen oder einen Anbieter zu<br />
wechseln, steht er vor einer großen<br />
Herausforderung. Bedingt durch die<br />
Vielzahl der Anbieter und Produkte ist<br />
die Interoperabilität zwischen den verschiedenen<br />
<strong>IaaS</strong>-<strong>Cloud</strong>s nicht gewährleistet,<br />
weil jeder <strong>Cloud</strong>-Anbieter eigene<br />
<strong>API</strong>s und Management-Tools bereitstellt,<br />
so dass z.B. Rollout-Skripte<br />
angepasst und unterschiedliche Management-Tools<br />
verwendet werden<br />
müssen.<br />
<strong>Cloud</strong>-<strong>API</strong>-Standards<br />
Verschiedene Normierungsorganisationen<br />
versuchen diesem Dilemma<br />
entgegenzuwirken und erarbeiten<br />
NET 11/12<br />
standardisierte <strong>API</strong>s für <strong>Cloud</strong>-Anbieter,<br />
die allerdings seitens der Anbieter<br />
nur in Ansätzen implementiert werden:<br />
Das Unified <strong>Cloud</strong> Interface (UCI)<br />
(http://code.google.com/p/unified<br />
cloud) ist ein offener <strong>Cloud</strong>-Computing-Standard,<br />
der durch das <strong>Cloud</strong><br />
Computing Interoperability Forum<br />
(CCIF, www.cloudforum.org) entwickelt<br />
wird. Aktuell existiert ein Entwurf<br />
der Spezifikation<br />
und Architektur,<br />
wobei seit Februar<br />
2010 keine<br />
neuen Änderungen<br />
veröffentlicht<br />
wurden.<br />
Das <strong>Cloud</strong> InfrastructureManagement<br />
Interface (CI-<br />
MI) wird durch die<br />
Distributed Management<br />
Task Force<br />
(DMTF, www.dmtf.<br />
org/standards/<br />
cloud) entwickelt.<br />
Bei dieser Spezifikation<br />
handelt es sich ebenfalls um einen<br />
Entwurf, der noch in Bearbeitung<br />
ist und keinen offiziellen DMTF-Standard<br />
darstellt. Die letzte Version<br />
(1.0.0e) des Spezifikationsentwurfs<br />
wurde am 20. Juni 2012 veröffentlicht.<br />
Im Gegensatz zu den zuvor genannten<br />
Spezifikationen ist das Open<br />
<strong>Knackpunkt</strong> <strong>API</strong><br />
<strong>Cloud</strong> Computing Interface (OCCI,<br />
http://occi-wg.org) ein bereits veröffentlichter<br />
Standard, der durch das<br />
Open Grid Forum spezifiziert wurde.<br />
<strong>Cloud</strong>-Bezeichnung <strong>Cloud</strong>-Art <strong>API</strong>-Protokoll <strong>API</strong>-Format <strong>API</strong>-Implementierung<br />
Amazon Web Services (AWS) Anbieter REST, SOAP JSON, XML eigene<br />
Citrix <strong>Cloud</strong>Stack Open-Source-Produkt REST, SOAP JSON, XML eigene, AWS EC2<br />
<strong>Cloud</strong>Sigma Anbieter REST JSON eigene<br />
Eucalyptus Open-Source-Produkt REST, SOAP JSON, XML AWS EC2 und S3, OCCI<br />
Fujitsu Global <strong>Cloud</strong> Platform Anbieter XML-RPC XML eigene<br />
GoGrid Anbieter REST JSON, XML eigene<br />
Google Storage Anbieter REST JSON, XML eigene<br />
HP <strong>Cloud</strong> Anbieter REST, SOAP JSON, XML OpenStack, AWS<br />
IBM Smart<strong>Cloud</strong> Anbieter REST JSON, XML eigene<br />
Microsoft Windows Azure Anbieter REST, SOAP JSON, XML eigene<br />
Nimbus Open-Source-Produkt REST, SOAP JSON, XML AWS EC2 und S3<br />
Ninefold Anbieter REST JSON, XML eigene<br />
OpenNebula Open-Source-Produkt REST, SOAP JSON, XML AWS EC2 und S3, OCCI<br />
OpenStack Open-Source-Produkt REST, SOAP JSON, XML eigene, AWS, OCCI<br />
oVirt Project Open-Source-Produkt REST JSON, XML eigene<br />
Rackspace Anbieter REST JSON, XML eigene und OpenStack<br />
Redhat Enterprise Virtualization Open-Source-Produkt REST JSON, XML eigene<br />
RimuHosting Anbieter REST JSON, XML eigene<br />
Terremark v<strong>Cloud</strong> Express Anbieter REST XML eigene<br />
VMware v<strong>Cloud</strong> Suite proprietäres Produkt REST, SOAP JSON, XML eigene<br />
<strong>IaaS</strong>-<strong>Cloud</strong>-Anbieter und -Produkte<br />
Die Entwicklung begann im März<br />
2009 und wurde ursprünglich von<br />
Sun Microsystems, RabbitMQ und der<br />
Universität Complutense Madrid geführt.<br />
Die aktuelle Version (1.1) wurde<br />
am 7. April 2011 veröffentlicht. Heute<br />
hat die Arbeitsgruppe über 250 Mit-<br />
Bild 2: Zusammenspiel einer Client-Anwendung mit Deltacloud<br />
glieder und umfasst zahlreiche Einzelpersonen,<br />
Industrieunternehmen und<br />
öffentliche Institutionen. Ziel von<br />
OCCI ist die Entwicklung einer offenen<br />
Spezifikation und <strong>API</strong> für <strong>Cloud</strong><br />
Computing. OCCI ist kompatibel zu<br />
bestehenden Standards wie dem<br />
Open Virtualization Format (OVF) und<br />
dem <strong>Cloud</strong> Data Management Inter-<br />
13
<strong>Knackpunkt</strong> <strong>API</strong><br />
face (CDMI). Implementierungen von<br />
OCCI gibt es u.a. für die Produkte<br />
OpenNebula, OpenStack und Eucalyptus.<br />
Bild 3: REST-Zugriff über Deltacloud am Beispiel von Amazon EC2<br />
Apache Deltacloud<br />
Neben der Normierung von <strong>Cloud</strong>-<br />
<strong>API</strong>s versuchen diverse Softwareprojekte<br />
das <strong>API</strong>-Problem auf eine andere<br />
Weise zu adressieren. Deltacloud – ein<br />
Apache-Top-Level-Projekt (http://del<br />
tacloud.apache.org) – versucht, eine<br />
Bild 4: Android-Version des <strong>Cloud</strong> Manager<br />
Interoperabilität von <strong>IaaS</strong>-<strong>Cloud</strong>s zu<br />
realisieren, indem die proprietären<br />
<strong>Schnittstellen</strong> der Anbieter und Produkte<br />
über eine einheitliche abstra-<br />
hierte Schnittstelle angesprochen werden<br />
können.<br />
Das Projekt stellt eine standardisierte<br />
programmiersprachenunabhängige<br />
<strong>API</strong> auf Basis von REST bereit. Bei Hinzukommen<br />
neuer <strong>Cloud</strong>-Anbieter<br />
oder Änderung bestehender <strong>Cloud</strong>-<br />
<strong>API</strong>s, muss nunmehr eine <strong>Cloud</strong>-Anwendung<br />
nicht angepasst, sondern<br />
nur die Middleware aktualisiert werden,<br />
so dass mit denselben Befehlen<br />
und Parametern unterschiedliche<br />
<strong>Cloud</strong>-Anbieter gesteuert werden<br />
können (Bild 2). Dabei wird Deltacloud<br />
als Server zwischen <strong>Cloud</strong>-Anbieter<br />
und -Anwendung geschaltet<br />
und übersetzt alle HTTP-Requests und<br />
-Responses. Im Beispiel in Bild 3 fragt<br />
die <strong>Cloud</strong>-Anwendung (in Form eines<br />
Client) via Deltacloud alle instanziierten<br />
Server eines Benutzers bei der<br />
<strong>IaaS</strong>-<strong>Cloud</strong> Amazon EC2 ab. Die Amazon-<strong>API</strong><br />
liefert auf diesen Request ein<br />
XML-formatiertes Dokument zurück,<br />
das von Deltacloud übersetzt und an<br />
die <strong>Cloud</strong>-Anwendung standardisiert<br />
per HTTP-Response zurückgesendet<br />
wird.<br />
Derzeit werden von Deltacloud die<br />
<strong>IaaS</strong>-<strong>Cloud</strong>-Angebote von Amazon,<br />
Rackspace, GoGrid, IBM, Microsoft,<br />
Google, Fujitsu, RimuHosting, Terremark,<br />
Red Hat, Eucalyptus, Open-<br />
Stack, OpenNebula und VMware unterstützt.<br />
Neben Deltacloud existieren weitere<br />
Open-Source-Projekte, die <strong>Cloud</strong>-Abstraktions-<strong>API</strong>s<br />
zum Management von<br />
<strong>IaaS</strong>-<strong>Cloud</strong>s entwickeln, wie z.B.<br />
Jclouds (www.jclouds.org), Libcloud<br />
(http://libcloud.apache.org), Boto<br />
(http://code.google.com/p/boto/)<br />
und Fog (http://fog.io). Ein Nachteil<br />
bei diesen Projekten ist, dass diese<br />
Frameworks keine programmiersprachenunabhängige<br />
REST-Schnittstelle<br />
bereitstellen und somit an eine bestimmte<br />
Programmiersprache gebunden<br />
sind: Jclouds an Java, Libcloud<br />
und Boto an Python und Fog an Ruby.<br />
<strong>Cloud</strong> Manager<br />
In Zusammenarbeit mit der FH Dortmund<br />
entwickelte das Unternehmen<br />
2kit Consulting mit der Smartphone-<br />
App <strong>Cloud</strong> Manager (Bild 4) eine anbieterübergreifende<br />
Lösung zum<br />
Management und Monitoring von<br />
<strong>IaaS</strong>-<strong>Cloud</strong>s (öffentlich und hybrid).<br />
Sie basiert auf Deltacloud, um von<br />
den jeweiligen Spezifika der <strong>Cloud</strong>-<br />
<strong>API</strong>s entkoppelt zu sein. Unabhängig<br />
vom Anbieter, Produkt oder Account<br />
lassen sich virtuelle Maschinen (VM)<br />
steuern. Die App kann konfigurierte<br />
VMs auflisten und detaillierte Informationen<br />
zu einzelnen <strong>Cloud</strong>s anzeigen.<br />
Zusätzlich können neue VMs erstellt<br />
oder vorhandene gestartet, gestoppt,<br />
neu gestartet oder entfernt<br />
werden. Darüber hinaus ist das Monitoring<br />
von aktiven Services einzelner<br />
VMs möglich. (bk)<br />
14 NET 11/12