Cloud Foundry – Ein erster Überblick

iTransparent ist seit kurzem Intalio Partner für die DACH Region. Das neue Intalio|Create Produkt basiert auf Cloud Foundry, einem PaaS Cloud Framework. Grund genug, sich Cloud Foundry auf technischer Ebene etwas näher anzusehen. Zunächst aber ein kurzer Überblick über Cloud Computing.

Was ist Cloud Computing?

Obwohl es keine strikte, allgemein anerkannte Definition von Cloud Computing und Cloud Systemen gibt, haben sich beide Begriffe in den letzten Jahren in der IT Welt etabliert. Ganz allgemein versteht man unter dem Begriff der Cloud die Möglichkeit IT-bezogene Ressourcen oder Dienstleistungen auf einem Pay-as-you-go Modus zu erwerben. Im Vordergrund stehen dabei die Skalierbarkeit der erworbenen Leistungen. Insbesondere soll es einfach möglich sein weitere Ressourcen zu erwerben, wenn dies nötig wird. Weithin anerkannte Klassifizierungskriterien für Cloud Systeme sind seine Sichtbarkeit sowie die Art der angebotenen Ressourcen.

Sichtbarkeit eines Cloud Systems

Bei Cloud Systemen wird häufig zwischen privaten und öffentlichen Cloud Systemen unterschieden.

Private Cloud Systeme werden lokal im Rechenzentrum eines Unternehmens betrieben. Sie haben den Vorteil, dass alle dort gespeicherten Daten vor externem Zugriff geschützt sind und jederzeit klar ist, was mit welchen Daten geschieht. Allerdings haben private Cloud Systeme den Nachteil, dass der Ressourcenpool nicht unendlich groß ist und so Anwendungen nicht beliebig skalieren können. Zudem müssen alle über die Cloud angebotenen Ressourcen in-house administriert und gewartet werden.

Öffentliche Cloud Systeme sind kommerzielle Angebote, die sich an eine große Anzahl von Kunden richten. Die IT-Infrastruktur hinter einem solchen Angebot umfasst in der Regel einige bis einige zig Rechenzentren, die global verteilt sind. Die Wartung und Administration der Maschinen wird vom Anbieter der Cloud übernommen. Durch den großen Ressourcenpool, ist die Ressourcenzahl quasi unendlich groß und Anwendungen können — eine geeignete Implementierung vorausgesetzt — beliebig skalieren.

Um den Nachteil des geringen Ressourcenpools privater Clouds auszugleichen, kann auf hybride Cloudsysteme zurückgegriffen werden. Hier wird eine private Cloud bei Bedarf um die Ressourcen von öffentlichen Clouds erweitert. Dadurch kann der Betreiber der privaten Cloud nicht nur die Skalierung in den Griff bekommen, sondern bleibt gleichzeitig Herr seiner Daten, da er alleine kontrolliert welche Daten an andere Anbieter weitergegeben werden.

Angebotene Ressourcen

Vanquero et al. unterscheiden drei Rollen die bei Cloud Systemen anzutreffen sind. Der Service Provider (SP) stellt dem Dienstnutzer (SU) Dienste zur Verfügung, oftmals über Web-basierte Mechanismen. Der Service Provider (SP) wiederum bezieht seine Resourcen von einem Infrastructure Provider (IP). Die Art des Cloud Systems leitet sich unter anderem daraus ab, welche Ressourcen ein IP dem SP zur Verfügung stellt.

  • IaaS, Infrastructure-as-a-Service: Hier bezieht der SP Hardware vom IP. Diese Hardware kann virtualisiert vorliegen und ist es in vielen Fällen auch.
  • PaaS, Platform-as-a-Service: Hier bezieht der SP eine Laufzeitumgebung vom IP. Die Platform abstrahiert von den physischen Maschinen und dem Betriebssystem. Es ist in der Regel für den SP nicht erforderlich sich um die Wartung von Software außerhalb seiner Anwendung zu kümmern. Jedoch ist es weiterhin notwendig die Anzahl der Instanzen einer Anwendung zu bestimmen.
  • SaaS, Software-as-a-Service: Bei SaaS sind der SP und der IP identisch; nach außen wird in den meisten Fällen lediglich eine Web-Oberfläche zu einem Dienst angeboten, die der SU einfach nutzen kann ohne sich um Software und Wartung Gedanken machen zu müssen.

Was ist Cloud Foundry?

Spricht man von Cloud Foundry, so muss man zwischen der Cloud Foundry Software und dem Cloud Foundry Angebot unterscheiden. Das Cloud Foundry Angebot stellt eine kommerzielle, Web-basierte PaaS dar, die die Cloud Foundry Software verwendet. Wir konzentrieren uns deshalb im Folgenden lediglich auf die Software, die hinter Cloud Foundry steckt. Die Cloud Foundry Software ist ein quelloffenes, unter einer Apache2 Linzenz vertriebenes PaaS Framework, das die Möglichkeit bietet ein privates PaaS Cloud System mit geringen Aufwand zu installieren und zu konfigurieren. Das ganze Projekt wird neben Cloud Foundry, Inc. unter anderem durch eine Community vorangetrieben.

Im Gegensatz zu vielen anderen PaaS Systemen, unterstützt eine auf Cloudy Foundry basierende PassS Infrastruktur mehrere Programmiersprachen in einem System. Zudem sind alle von ihm verwendeten Schnittstellen offengelegt, so dass ein Anwender problemlos von einer öffentlichen Cloud Foundry Cloud zu einer anderen öffentlichen Cloud Foundry Cloud oder zu einer privaten Cloud Foundry Cloud wechseln kann. Ebenso ist ein Parallelbetrieb von öffentlichen und privaten Clouds mit der gleichen Software denkbar. Ein Anwendungsfall sieht dabei vor, eine private Cloud in einem lokalen Rechenzentrum zu hosten; gewünschte Anwendungen laufen in der Regel auf dieser privaten Cloud; diese kann aber bei Lastspitzen um zusätzliche Ressourcen aus einer öffentlichen Cloud erweitert werden.

Wie funktioniert Cloud Foundry?

Cloud Foundry ist ein Software Framework zur Bereitstellung eines Cloud Systems und auch als “Kernel einer Cloud” betrieben. Als Framework legt Cloud Foundry die Architektur des Systems fest, lässt aber gleichzeitig  gewisse Freiheiten für den Betreiber. Weitestgehend festgelegt ist die zentrale Infrastruktur eines Cloud Foundry Systems, die in den Grundzügen aus den folgenden Komponenten besteht.

  • Load Balancer: Die vorgelagerte Komponente, die Benutzeranfragen entgegennimmt. In der aktuellen Version von Cloud Foundry ist diese durch einen nginx Proxy realisiert. Alle Anfragen werden hier als HTTP Requests entgegengenommen und als Nachricht an den Router weitergeleitet.
  • Router: Die Zwischenkomponente empfängt Nachrichten vom Load Balancer und verteilt diese an die in der Cloud gestarteten Anwendungen. Der Router ist in Ruby entwickelt und über eine Open Source Lizenz erhältlich.
  • Cloud Controller: Der Cloud Controller ist das Herz der Infrastruktur. Er hat Wissen über Benutzer, die sich am System anmelden und neue Anwendungen ausbringen dürfen (deplyoment). Gleichzeitig verfügt er über das Gold App Package aller in der Cloud ausgebrachten Anwendungen.
Daneben existieren noch weitere Systemkomponenten, die sich um die Verfügbarkeit des Systems und das Deployment von Anwendungen kümmern. Ich werde diese Anwendungen bei Gelegenheit in weiteren Blog Posts besprechen.

Cloud Foundry Anwendungen

Die Cloud Foundry Web Seite bezeichnet das Cloud Foundry Framework als Multi-Language, Multi-Framework und Multi-Cloud fähig. Multi-language bedeutet dabei, dass verschiedene Programmiersprachen verwendet werden können um eine Cloud Foundry Anwendung zu programmieren. Eine Anwendung ist dabei in fast allen fällen in ein Programmierframework eingebettet. Multi-framework bedeutet, dass mehrere Frameworks zur Verfügung stehen; auch für eine Programmiersprache können mehrere Frameworks unterstützt werden.  Multi-cloud wiederum bedeutet, dass ein und dieselbe Anwendung auf mehreren Cloud Instanzen ausgebracht werden kann. Diese Philosophie macht Cloud Foundry besonders reizvoll für hybride Cloud Set-ups.

Cloud Foundry unterstützt derzeit unter anderem die folgenden Kombinationen aus Programmiersprache und Framework:

  • Java und Spring
  • Ruby und Rails
  • Ruby und Sinatra
  • JavaScript und node.js
Neben weiteren von Cloud Foundry unterstützten Kombinationen, werden von der  Community weiter Sprachen und Frameworks wie zum Beispiel .NET, Erlang, Haskell, PHP, Python und Scala.

Cloud Foundry Dienste

Die überwiegende Mehrheit aller Anwendungen, die für den Einsatz in Cloud Systemen geeignet sind, benötigen zusätzlich zur Anwendungslogik weitere Dienste, wie zum Beispiel ein Daten-Backend oder Messaging. Um das Deployment und die Konfiguration von Cloud Foundry Anwendungen einfach zu halten, bringt das Framework reine Reihe von Cloud Foundry Services mit, die beim Ausbringen der Anwendung an diese gebunden werden können. Oftmals erkennt der Cloud Controller sogar automatisch, dass eine Abhängigkeit von einer Anwendung zu einem Service vorliegt und leitet die notwendigen Konfigurationsschritte ein.

Derzeit werden von Cloud Foundry die folgenden Dienste unterstützt; generell können aber beliebige weitere Dienste hinzugefügt werden.

Dienst Dienst-Art Art
Postgress Storage Objektrelational
Mongo DB Storage Dokumentenorientiert
MySQL Storage Relational
Redis Storage Key-value Store
Rabbit MQ Messaging

 

Wird eine Anwendung an einen Dienst gebunden, so werden automatisch weitere Konfigurationsschritte ausgeführt. Zum Beispiel erzeugt der MySQL Dienst einen neuen Benutzer und ein neues Schema, wenn MySQL an eine bis dato unbekannte Anwendung gebunden werden soll.

Cloud Foundry Deployment

Um eine Anwendung in ein Cloud Foundry Cloud zu bekommen, muss sie dort ausgebracht werden. Diesen Schritt bezeichnet man als Deployment. Während des Deployments wird eine Anwendung von einer Client-Maschine, z.B. von der des Anwendungs-Entwicklers über den Cloud Controller innerhalb des Cloud Systems gespeichert.

Zum Deployment wird ein Manifest der Anwendung erstellt. Dieses enthält neben Informationen über den Namen der Anwendung,  das benötigte Framework und Programmiersprache sowie den Speicherbedarf der Anwendung unter anderem die folgenden Meta-Daten:

  • URL: Damit eine innerhalb des Cloud Systems laufende Anwendung mit Rechnern außerhalb des System kommunizieren kann, bekommt sie eigene URL, auf die mittels HTTP zugegriffen werden kann.
  • Instanzen: Der Instanzen-Parameter gibt an, wie oft die Anwendung innerhalb des Cloud Systems gestartet werden soll. Durch variieren dieses Parameters lässt sich Skalierbarkeit herstellen.
Folglich beschreibt der Begriff Cloud Foundry Anwendung eine Menge von Anwendungsinstanzen, die den gleichen Programmcode ausführen und unter der gleichen URL erreichbar sind. Anfragen, die an die URL einer Anwendung gerichtet werden, deren Programmcode in mehreren Instanzen zur Ausführung kommt, werden durch die Router-Komponente an eine beliebige Instanz weitergeleitet.

Zusammenfassung

In diesem Blog Eintrag habe ich eine erste Annäherung an das Cloud Foundry vorgenommen. Nach einem kurzen Überblick über Cloud Terminologie, habe ich dargestellt, dass es sich bei Cloud Foundry sowohl um eine kommerzielles PaaS Cloud System handelt, als auch um ein quelloffenes, unter einer Apache2 Linzenz stehendes PaaS Framework handelt.

Das Framework ist modular aufgebaut und somit selbst extrem flexibel und skalierbar. Es bietet Unterstützung für mehrere Programmiersprachen und Programmierframeworks sowie eine ganze Reihe von Systemdiensten. Die frei verfügbare Software erlaubt es eine eigene private Cloud Infrastruktur zu betreiben. Die identische Schnittstelle zwischen privaten und öffentlichen Cloud Foundry Systemen erlaubt eine schnelle Umsetzung von hybriden Clouds. Durch die breite Adaption des Systems durch unterschiedliche Anbieter unterliegen Cloud Foundry Anwendung keinem Vendor-Lock-in und bieten somit Investitionssicherheit.

Von einem technischen Gesichtspunkt finde ich das System extrem interessant, so dass meinem ersten Blick darauf  sicherlich noch mindestens ein zweiter folgen wird.

Weiterführende Informationen

, , ,

Bisher sind keine Kommentare vorhanden.

Hinterlasse eine Antwort