Openshift – Entwickeln in der Cloud

Hinweis: Dieser Artikel erschien erstmals in freiesMagazin 01/2012.

Egal ob im Open-Source-Umfeld oder im Business Bereich. Überall dominiert in irgendeiner Form das Thema Cloud-Computing die Medien. Deren unschätzbare Vorteile, durch geschickte Marketingaktivitäten oft besonders hervorgehoben, sollte man natürlich auch einer kritischen Analyse für den jeweiligen Einsatzzweck unterziehen.
Im privaten Umfeld nutzt sicher der eine oder andere diverse Cloud – Lösungen, die direkt an den einfachen Privatanwender gerichtet sind (man denke an Google Mail, Dropbox, Evernote usw.)
Diese Lösungen fasst man alle unter der Rubrik Software as a Service (SaaS)  zusammen.

Dieser Beitrag richtet sich jedoch an einer eher technisch orientierten Sichtweise des Cloud-Computing, nämlich dem sogenannten Platform as a Service (PaaS), mit denen der normale Anwender standardmäßig eher wenig in Berührung kommt, die aber für Entwickler durchaus von Interesse sein können.
Ein interessantes Angebot liefert hierfür der Softwarehersteller Red Hat mit seinem Angebot OpenShift.

Kurzer Exkurs PaaS

Um den Nutzen von Openshift im folgenden besser nachvollziehen zu können, hier ein kurzer Exkurs, was unter PaaS  zu verstehen ist und wie man dessen Vorteile für seine eigenen Softwareprojekte nutzen kann.

Bereits jetzt sind fast alle wesentlichen Komponenten von Open-Source Technologien als Fundament der Cloud-Technologien zu sehen. Sie beruhen auf dem Linux-Kernel, Virtualisierungstechnologien wie Xen oder KVM, Datenbanklösungen wie PostgreSQL oder MySQL. (siehe hierzu auch  http://openstack.org/).
Wollte man bisher auf herkömmliche Weise, z.B. eine Webanwendung, bereitstellen, musste man sich i.d.R. im Vorfeld bereits gründlich Gedanken machen, auf welcher Basis man diese Software entwickeln und anschließend zur Verfügung stellen wollte. Es war also notwendig bereits vor dem Bereitstellen seiner Webanwendung eine eigene Plattform einzurichten, über die man diese den Benutzern zugänglich machen kann. Das heißt es wurden meist Webserver benötigt, Programmierumgebungen wie PHP, JEE uvm. mussten installiert und konfiguriert werden und wenn eine Anwendung sehr schnell populär wurde reichten die Ressourcen nicht aus, wodurch wieder Anpassungen in der Skalierung/Optimierung etc. notwendig waren.

In der Idee von PaaS soll diese Arbeit nun durch die Cloud wahrgenommen werden. Der Entwickler soll sich einzig um das Entwickeln seiner Anwendung kümmern, der gesamte Administrationsaufwand, die Arbeiten vorab zur Installation, Wartung, sowie Backuparbeiten werden durch den Anbieter übernommen, wodurch mehr Zeit für die eigentliche Entwicklung der Software bleibt.

PaaS in der Praxis am Beispiel von Openshift

Die Vorteile des Konzeptes sollen im Folgenden am Beispiel von Openshift vorgestellt werden. Der Grund ist, dass Red Hat für kleine Entwicklungsprojekte eine Variante komplett kostenlos anbietet mit dem Namen Openshift Express.
In der Praxis reserviert hier Red Hat bei Amazon Web Services EC2 eine Instanz auf der dann die Anwendung später läuft.
Hat man im späteren Verlauf zusätzliche Wünsche, kann man auch in ein kostenpflichtiges Modul namens Flex upgraden (bietet u.a. Clustererstellung, Benutzeroberfläche statt Kommandozeile usw., näheres hierzu.
Für den Anfang reicht aber die kostenlose Lösung zum Einstieg in das Thema vollkommen aus.

Zur Programmierung stehen folgende Sprachen zur Verfügung:

  • Java 6 EE
  • PHP
  • Perl
  • Python
  • Ruby

Verfügbare Datenbanken im Backendbereich sind entweder MySQL oder SQLite. Mit 500 MB Festplattenkapazität und 300 MB RAM sollten für kleine Applikationen zunächst genug Ressourcen zur Verfügung stehen.

Installation der Client-Tools

Um mit der Entwicklung zu beginnen, ist es vorab notwendig die Client-Tools (diese werden aktiv auf github gehostet) zu installieren, die in der Dokumentation nach der Registrierung beschrieben ist.
Für die Installation (die unter den gängigen Linux-Distributionen, Mac OS X, und Windows mit Cygwin möglich ist) werden, wenn noch nicht installiert die Pakete ruby in Version 1.8, rubygems und ruby-dev Pakete benötigt, die unter Ubuntu 11.10 alle unter diesem Namen problemlos über den Paketmanager installiert werden können.
Eine detaillierte Installationsanleitung für die einzelnen Systeme liefert die Webseite von Openshift.
Die Client-Tools belaufen sich beim Download auf maximal 2MB und basieren vollständig auf Ruby. Die Entwicklung erfolgt aktiv auf Github unter einer Red Hat – Lizenz.

Von nun an sind alle folgenden Befehle nur möglich, wenn die Client-Tools im vorigen Schritt erfolgreich installiert worden sind. Anschließend muss man sich überlegen welchen Namen die Anwendung bekommen soll und mit welcher Programmiersprache man sie umsetzen möchte. Hierfür legt man sich zunächst eine Domain an, welches man mit folgendem Befehl in der Konsole erreicht:

$ rhc-create-domain -n Domänenname -l Loginname
Reservierung eigener Domain für die Anwendung

Reservierung eigener Domain für die Anwendung

Nun kann man endlich seine erste eigene Anwendung erstellen, wobei man nun angeben muss in welcher Programmiersprache und in welcher Version der Programmiersprache man seine Anwendung entwickelt, da man natürlich nicht möchte, dass man seine Anwendung für PHP 5.3 entwickelt, der Server aber nur PHP 5.2 als Laufzeitumgebung bietet.

Folgender Konsolenbefehl ist nötig:

$ rhc-create-app -a fMBeispiel -t php-5.3

Anwendung erstellen, Programmiersprache definieren

Anwendung erstellen, Programmiersprache definieren

Nach Eingabe des vorab festgelegten Passwortes wird nun im Hintergrund ein Git-Repository, also eine verteilte Versionsverwaltung, eingerichtet, welcher eine vorgegebene Ordnerstruktur besitzt.
Dies kann unter Umständen ein paar Minuten dauern, bis alles im Hintergrund eingerichtet wurde, zum Abschluss erhält man im Erfolgsfall jedoch die Meldung, dass die Anwendung erfolgreich erstellt wurde und man bekommt eine Git-URL zu seinem weltweit erreichbaren Repository.
Im aktuellen Verzeichnis, in dem man den Befehl ausgeführt hat findet man nun auch seine Anwendung wieder.
Projektordner

Projektordner

Im Ordner php (je nach Programmiersprache auch ein anderer Ordner, z.B. phython etc.) werden die eigentlichen Quelldateien angelegt, im Ordner libs zusätzliche Bibliotheken, die man verwenden möchte. Was in einzelne Ordner gehört und welche zusätzlichen Verzeichnisse z.B. für persistente Daten (Umgebungsvariablen u.ä.) angelegt werden können, listet die beiliegende README-Datei sehr übersichtlich auf.

Anwendung per Git auf den Server laden

Nachdem man seine Quellcodes erstellt hat ist man nun in der Lage die Anwendung über Git in das Git-Repository zu heben.

Dazu wechselt man zunächst in den Ordner der Anwendung:

$ cd Anwendungsname

Über den Befehl
$ git commit -a -m „Meine erste Aenderung“

landen die Dateien im lokalen Git-Repository und mittels
$ git push

werden die Dateien auf das entfernte Repository in der Cloud übertragen.
Von jetzt an ist jeder in der Lage die Anwendung von überall aufrufen zu können. Wenn man die URL zur Anwendung oder zu Git nicht mehr weiß hilft der Befehl:

$ rhc-user-info

Informationen zur Anwendung

Informationen zur Anwendung

Ruft man nun die URL im Browser auf bekommt man seine Webseite mit den durchgeführten Änderungen zu sehen (Beispiel für diesen Artikel: http://fmbeispiel-freiesmagazinbsp.rhcloud.com/)
Erstellte Webseite in der Cloud - Beispiel

Erstellte Webseite in der Cloud - Beispiel

Erstellung einer zugehörigen Datenbank

Für fast jede größere Applikation die man entwickelt oder die man einfach in der Cloud laufen lassen möchte, wird früher oder später eine Datenbank benötigt. So verlangen beliebte Open – Source -Projekte, wie Joomla, WordPress, Dupal u.v.m. in der Regel eine MySQL – Datenbank, in der notwendige Informationen performant abgespeichert werden können.

In einer frühen Version von OpenShift war es lediglich möglich eine SQLite – Datenbank der Anwendung hinzuzufügen, was aber außer für Beispiele wie Mediawiki zu wenig praktikabel in der Anwendung war, weshalb Red Hat hier schnell eingelenkt hat und nauch MySQL in die kostenlose Lösung der Express – Version integriert hat.

Mittels des Befehls
rhc-ctl-app -a“fMBeispiel“ -e add-mysql-5.1

wird hier eine MySQL – Datenbank in der Version 5.1 installiert und nach kurzer Wartezeit erhält man die Bestätigung, dass die Datenbank erfolgreich erstellt werden konnte. Zusätzlich erhält man die benötigten Login – Daten für den Administrator der Datenbank.

Viele bevorzugen zum Verwalten ihrer Datenbank, d.h. Anlegen von Tabellen, Spaltendefinitionen u.v.m. eine grafische Benutzeroberfläche, damit nicht alles über die Standard – Konsolenbefehle von MySQL durchgeführt werden muss. Auch hierfür gibt es wiederum einen kurzen Befehl, der phpMyAdmin innerhalb von Openshift installiert.

$ rhc-ctl-app -a „fMBeispiel“ -e add-phpmyadmin-3.4

Danach steht unter der Adresse: http://URLdesProjektes/phpmyadmin die Loginseite zur Verfügung, wo man sich nun mit dem MySQL – Administrator anmelden kann.

phpmyadmin

phpmyadmin

Somit ist es nun möglich, z.B. ein WordPress – Blog wie auf einem gewöhnlichen Webspace zu installieren, in dem man einfach die Installationsdateien von WordPress in das Anwendungsverzeichnis legt und mittels den oben erwähnten Git – Befehlen in die Cloud lädt.

Alternativen

Wenn man bei seiner Anwendung an die Grenzen dieser kostenlosen Lösung von Openshift Express kommt, ist man natürlich nicht zwangsläufig an Red Hat gebunden, sondern kann sich inzwischen zwischen mehreren guten Anbietern entscheiden, je nachdem was man für seine Bedürfnisse benötigt.

Populäre und weit verbreitete Lösungen haben z.B. die bekannten Firmen mit Angeboten wie:

  • Google App Engine
  • Windows Azure
  • Morph Application Platform
  • Amazon Elastic Beanstalk

Dies sind nur einige der inzwischen zahlreichen Vertreter, bei dem man im Einzelnen die Angebote für seine spezifischen Vorgaben vergleichen sollte.

Fazit

PaaS kann eine große Hilfe für diejenigen Entwickler sein, die schnell eine funktionierende Plattform mit allen notwendigen Tools und Programmierungebungen benötigen und sich nicht leisten können selber die komplette Installation und Wartung von Hand vorzunehmen.

Mit Openshift ist ein kostenloser Einstieg in diese Form des Cloud-Computing sehr leicht möglich, man sollte aber beachten, dass man je nach Größe des Projektes schnell mit den Restriktionen der Ressourcen an Grenzen stoßen kann.
Zudem begibt man sich wie bei allen Cloud-Formen in eine gewisse Abhängigkeit des Anbieters, dass dieser die bereitgestellte Plattform auch korrekt verwaltet und diese tatsächlich so performant und sicher zur Verfügung steht, wie versprochen.
Man sollte daher stets abwägen, ob man die Risiken des Fremdhosting auf sich nehmen will. Entschließt man sich für einen PaaS – Anbieter stehen einem durchaus neue Wege der Softwareentwicklung zur Verfügung.

Lizenz des Artikels CC-BY-SA-3.0 Unported

Patrick Meyhöfer

Ich liebe gute Software, die auf gut funktionierender Hardware läuft. Egal ob mobil oder am Desktop-OS. Früher nutzte ich fast ausschließlich Open-Source-Software, mittlerweile ist es ein Mix zwischen Mac und Linux - beide Welten haben ihre Vorzüge.

Das könnte auch interessant sein...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *