Apache Deltacloud

Clouds braucht offene Standards

16.06.2011
Von David Lutterkort

Kommunikation via REST-Schnittstelle

Apache Deltacloud unterstützt private und eine Reihe öffentlicher Clouds, unter anderem Amazon EC2 (Eucalyptus ist eine zur Amazon-Cloud kompatible Open-Source-Lösung), Microsoft Windows Azure und VMware vCloud.
Apache Deltacloud unterstützt private und eine Reihe öffentlicher Clouds, unter anderem Amazon EC2 (Eucalyptus ist eine zur Amazon-Cloud kompatible Open-Source-Lösung), Microsoft Windows Azure und VMware vCloud.
Foto: Red Hat

Die Datenkommunikation im Deltacloud-API erfolgt über die REST-Schnittstelle zu einem Deltacloud-Server, der ebenfalls über ein REST-Interface verfügt. Um die Benutzung der REST-Schnittstelle zu vereinfachen, stellt das Deltacloud-Projekt sowohl ein CLI-Tool (Command Line Tool) als auch Client-Bibliotheken in Ruby, Java, C und Python zur Verfügung.

Neben Deltacloud gibt es weitere Open-Source-Projekte, die Cloud-Abstraktions-APIs entwickeln. Zu nennen sind hier jclouds, libcloud, boto und fog. All diese Bibliotheken sind jedoch jeweils an eine bestimmte Programmiersprache gebunden: jclouds an Java, libcloud und boto an Python und fog an Ruby. Es handelt sich immer um sprachspezifische Libraries. Deltacloud ist dagegen sprachunabhängig und das einzige Cloud-Abstraktions-API, das sich als Web-Service nutzen lässt. Der Vorteil: Durch den Einsatz vorhandener und weit verbreiteter Standards wie HTTP und XML entsteht eine offene Architektur, die unabhängig von den verwendeten Plattformen und Programmiersprachen ist.

Da das Deltacloud-API als Web-Service statt als Bibliothek realisiert ist, lässt sich der Deltacloud-Server in einer von zwei Grundkonfigurationen betreiben: Entweder nahe am Benutzer, beispielsweise auf einem lokalen Rechner beziehungsweise im LAN, oder nahe am nativen API des Cloud-Anbieters – letzteres ist besonders für private Clouds von Interesse. Anbieter können Deltacloud natürlich auch direkt als ihr einziges Interface bereitstellen.

Der Deltacloud-Server selbst ist mit dem Ruby-Framework Sinatra programmiert. Intern besteht der Server-Code aus zwei großen Bereichen: Der erste generische Teil widmet sich den für einen Web-Service typischen Aufgaben, wie das Entgegennehmen und Deserialisieren von HTTP-Requests und dem Formatieren der Responses. Den zweiten Teil bilden die unterschiedlichen Treiber für verschiedene Clouds: Amazon EC2, vCloud, Azure etc. Beide Teile sind über eine einfache interne Schnittstelle miteinander verbunden, was es ermöglicht, Treiber für neue Cloud-APIs ohne allzu tief gehendes Wissen des eigentlichen Servers zu erstellen. Erfahrungen zufolge lässt sich ein neuer Treiber innerhalb weniger Tage implementieren.

Apache Deltacloud stellt ein auf REST basierendes API zur Kommunikation der Clients mit dem Deltacloud-Server (Deltacloud Core) zur Verfügung.
Apache Deltacloud stellt ein auf REST basierendes API zur Kommunikation der Clients mit dem Deltacloud-Server (Deltacloud Core) zur Verfügung.
Foto: Red Hat

In einem vereinfachten Ablauf startet ein Client einen Request via REST-Interface an den Server. Anschließend leitet der Treiber im Deltacloud-Server die Anfrage an die dedizierte Cloud weiter. Der Server ist stateless, es werden keine Zustands- oder Sitzungsinformationen gespeichert. Stattdessen sendet der Client die für die jeweils gewählte Cloud benötigten Zugangsinformationen mittels des Headers für Basic HTTP Authentication mit jedem Request mit. Wurden bisher die anzusprechende Cloud und deren API-URL beim Start des Deltacloud-Servers festgelegt, wird es mit der nächsten Version von Deltacloud möglich sein, beides über zusätzliche HTTP Request Headers auszuwählen. Damit ist es möglich, beliebig viele Clouds mit demselben Deltacloud-Server zu benutzen.