OpenShift – Platform as a Service von Red Hat

Mit OpenShift präsentiert Red Hat eine Plattform für die Software-Entwicklung in der Cloud. Anselm Strauss fasst seine Erfahrungen dazu bei Puzzle zusammen.

Zwischen Infrastructure as a Service (IaaS) und Software as a Service (SaaS) tummelt sich der Dritte im Bunde: Platform as a Service (PaaS). Wer die Infrastruktur bereits unter Kontrolle hat und einen Schritt weiter gehen möchte, wem fertige Services zu wenig flexibel sind oder wer sich nach einem einheitlicheren Weg zum Entwickeln und Bereitstellen von Applikationen sehnt, den dürfte das Thema PaaS interessieren. Red Hat bringt mit seiner offenen OpenShift Lösung nicht nur einen online Service auf den Markt, sondern bietet auch die darunterliegende Software zum Aufbau einer eigenen PaaS an.

Applikationslandschaft heute

In vielen Unternehmen gestaltet sich das Umfeld der Applikationen sehr heterogen. Die verwendeten Technologien und die Architektur sind zwar standardisiert, die Prozesse zum Verwalten der Applikationen meistens jedoch nicht. Damit verbundene Schwierigkeiten werden oftmals erst sichtbar, wenn kurzfristig eine neue Umgebung aufgebaut werden soll oder Sicherheitsprobleme auftreten. Die Ursachen dafür sind zum einen technischer Natur: Viele Schritte werden manuell ausgeführt, obwohl sie immer gleich ablaufen und somit automatisiert werden könnten. Um Arbeit zu sparen, werden Applikationen konsolidiert, worunter die Abschottung und damit die Sicherheit und Verfügbarkeit einzelner Anwendungen leidet. Zum anderen liegen die Gründe in der (fehlenden) Kommunikation und der Zusammenarbeit bei der Software-Entwicklung. Entwickler und Betreiber haben ihre streng getrennten Aufgabenbereiche, obwohl viele Frameworks ein sehr dynamisches Vorgehen erfordern.

Was ist PaaS?

PaaS bietet Tools und Standards für die Entwicklung und den Betrieb von Applikationen. Es schafft Schnittstellen zwischen den traditionellen Rollen von Entwicklern, Administratoren und Betreibern. Das Installieren von neuen Applikationen geschieht beinahe auf Knopfdruck. Der Entwickler ist selbst in der Lage neuen Code direkt zu deployen, sofern er die nötigen Rechte dazu hat. Die Abstraktionen sind nicht mehr Server und Netzwerke, sondern prozessorientiert. Eine typische Web-Applikation setzt sich aus Komponenten wie einer Datenbank, der eigentlichen Applikation und weiteren optionalen Komponenten zusammen. Mit Hilfe eines Clients definiert und verwaltet man eine solche Applikation auf der entsprechenden Plattform. Der eigentliche Programmcode wird auf den Server geladen. Dort werden automatisch alle nötigen Schritte ausgeführt, um die Applikation zu initialisieren und zu starten. Die Plattform kümmert sich um das Setup von Applikationsservern, Datenbank-Instanzen, DNS Einträgen, Firewall Regeln etc..

Bestehende PaaS Lösungen gibt es viele. Oftmals sind es Services, die man online bezieht. Die unterstützten Frameworks und Technologien sind pro Anbieter stark eingeschränkt und nicht selten muss der Programmcode auf ein Hersteller-spezifisches API angepasst werden.

OpenShift Platform

OpenShift stellt unter den bekannten PaaS Lösungen eine Ausnahme dar. Unter dem Namen OpenShift Origin ist sämtlicher Quellcode auf GitHub verfügbar. Damit lässt sich ein komplett eigenes PaaS in der Private Cloud aufbauen. OpenShift Enterprise zielt auf Kunden von Red Hat Enterprise Linux ab und bietet den nötigen professionellen Support dazu. OpenShift kann auch gegen eine monatliche Gebühr direkt online genutzt werden.

Mittels einer Web Konsole oder eines Kommandozeilen-Clients verbindet man sich auf den zentralen Broker. Dort werden Domains und Applikationen definiert. Der Broker reserviert einen Namen für die Applikation im DNS System und kommuniziert über einen Message Bus mit den jeweiligen Nodes, um alle nötigen Konfigurationen für eine neue Applikation aufzusetzen. Die Applikation läuft im allgemeinen Fall verteilt über mehrere Nodes in sogenannten Gears. Jeder Gear wird mit einem eigenen UNIX Benutzer, Quotas, SELinux und CGroups versehen, so dass er isoliert von den anderen läuft. Zwar werden auf einer Node pro Gear alle Prozesse immer neu gestartet, doch können sich diese statische Ressourcen von sogenannten Cartridges, die die eigentliche Funktionalität beinhalten, teilen. Ein guter Kompromiss zwischen Abschottung für mehr Sicherheit und effizienter Auslastung der Ressourcen. Um die richtige Vernetzung zwischen den Gears und gegen aussen zu den Benutzern einer Applikation kümmern sich Apache und HAProxy.


 
screen
 


Der Entwickler lädt den Programmcode in ein Git Repository und fügt eine OpenShift spezifische Beschreibung der Applikation hinzu. Er gibt an, wieviele Gears mit welchen Cartridges er benötigt und wie die Verknüpfung zwischen diesen aussieht. Der Programmcode muss nur minimal angepasst werden. OpenShift stellt die nötige Konfiguration mittels Umgebungsvariablen zu Verfügung, z.B. das Passwort, um auf der Datenbank einzuloggen. Die Cartridges erlauben es, viele verschiede Technologien wie Java EE, Ruby, Python und PHP auf OpenShift laufen zu lassen. Man kann ohne grossen Aufwand selber Cartridges schreiben oder bestehende abändern und neue Versionen davon machen.

Ein weiteres Merkmal ist die einfache horizontale Skalierung über mehrere Nodes. Dies kann sogar automatisch geschehen. Es werden einfach weitere Gears hinzugeschaltet und die Anfragen werden durch den integrierten Load Balancer automatisch auf alle Gears verteilt.

Weitere Dokumentation

Durch die Offenheit von OpenShift lassen sich unzählige Ressourcen auf der Hauptseite finden, inklusive fertige Konfigurationen und Skripts zum Installieren einer eigenen Umgebung. Am OpenCloud Day 2013 in Winterthur hat Puzzle einen kurzen Vortrag über OpenShift gehalten. Die Präsentation ist unter nachfolgendem Link verfügbar.

OpenShift Erfahrungen bei Puzzle

Fazit

OpenShift bringt eine Reihe von Vorteilen und Möglichkeiten, um die traditionelle Art des Hostings von Applikationen zu verbessern. Es lässt sich relativ einfach auf einer beliebigen Red Hat Linux basierten Infrastruktur installieren. Es verbessert und beschleunigt die Abläufe bei der Softwareentwicklung, indem es die Prozesse standardisiert und automatisiert (Continuous Deployment).

Lock-In Effekte werden weitgehend vermieden, da Applikationen nur minimal angepasst werden müssen und diese wahlweise in der Public Cloud oder einer selbst aufgesetzten Private Cloud betrieben werden können. Mit dem Enterprise Angebot baut man auf einem System auf, das zügig Sicherheitsupdates und Bugfixes liefert, so dass die Plattform stets stabil und sicher läuft. Der Erweiterbarkeit steht durch die Offenheit der Plattform und dem Einsatz bekannter und bewährter Technologien nichts im Weg.

Kommentare sind geschlossen.