Cloud Hosting im Nutzertest
Kommentare

Die Plattform kümmert sich nicht nur um statische Anfragen, sondern skaliert auch die Anzahl der Boxen vollkommen automatisch zwischen der ersten und dem Maximallimit, basierend auf den Anfragen, die

Die Plattform kümmert sich nicht nur um statische Anfragen, sondern skaliert auch die Anzahl der Boxen vollkommen automatisch zwischen der ersten und dem Maximallimit, basierend auf den Anfragen, die momentan auf die Anwendung treffen. Ist beispielsweise ein Maximallimit von zwanzig Boxen eingestellt, aber nur drei parallele Anfragen treffen ein, lässt die Plattform auch nur drei Boxen gleichzeitig arbeiten. Die anderen Boxen werden erst eingesetzt, wenn sich die parallelen Anfragen erhöhen und bleiben somit bei einer Minimallast ungenutzt und werden auch nicht abgerechnet. Wirkliches „Pay per Use“ also.

Addons

Zum Preis für die Boxen kommt monatlich noch der Preis für die gebuchten Addons hinzu. Der Addon-Marktplatz von cloudControl bietet dabei alles, was das Entwicklerherz begehrt: MySQL und MongoDB in verschiedenen Paketgrößen, Memcached, SSL, Worker, CronJobs und viele weitere nützliche Addons. Laut cloudControl wird das Angebot ständig erweitert und zukünftig wird es z. B. auch Pakete für Videobearbeitung oder neue Datenbanken wie Xeround geben. Auch bei den Addons gilt die verbrauchsbasierte Preispolitik des Unternehmens: Sollte ein Addon nur die Hälfte eines Monats genutzt werden, wird auch nur die Hälfte berechnet.

Umfangreiche Supportpakete runden das Angebot ab und bieten vom Communitysupport bis hin zur 24-Stunden-Notfall-Hotline eine passende Lösung für jeden Bedarf.

Die Anmeldung bei cloudControl ist kostenlos und die erste Box für jedes Deployment ist gratis. Auch bei den Addons und Supportpaketen gibt es in den meisten Fällen die kleinste Version kostenfrei. Damit lässt sich eine kleine Applikation bereits problemlos hosten und die Plattform kann zeitlich unbegrenzt getestet werden.

Hilfreich bei der Projektplanung ist der transparente Preiskalkulator. Über die Webseite von cloudControl [3] kann der ungefähre Monatspreis mit einer ungefähren Anzahl von Boxen und den Addons ermittelt werden. Sofern eine Apache-Log-Datei vorliegt, kann anhand dieser auch die voraussichtliche und realistischere Boxenanzahl ermittelt werden.

Motto: Von Entwicklern – für Entwickler

Das Motto von cloudControl lautet: Von Webentwicklern, für Webentwickler. Das schlägt auch bei der Dokumentation der Plattform positiv zu Buche. Vom obligatorischen „Hello World“-Beispiel über eine ausführliche Dokumentation bis hin zum Cheat Sheet ist alles Erforderliche vorhanden um sofort loslegen zu können.

Das Management der Plattform (Anlegen einer neuen App, Hinzubuchen von Addons, Benutzerverwaltung etc.) erfolgt über den hauseigenen Kommandozeilenclient „cctrl“, der zusammen mit einem Versionskontrollsystem (Bazaar oder Git) die Basis darstellt. Sämtliche Befehle des Komandozeilenclients, der hauptsächlich aus den beiden Befehlen cctrlapp (Applikationsverwaltung) und cctrluser (Benutzerverwaltung) besteht, sind neben der Dokumentation auch sehr übersichtlich und entwicklerfreundlich in einem Cheat Sheet [4] beschrieben. Der Kommandozeilenclient ist im Übrigen nicht auf ein Betriebssystem festgelegt und kann sowohl unter Windows, als auch unter Mac OS X und Linux genutzt werden.

Der Workflow anhand eines Beispielprojekts

Für die Mayersche Buchhandlung hat SnipClip im Juni 2011 eine Quiz-Rallye auf Facebook entwickelt (Abb. 1) . Jeder Facebook-Nutzer hatte die Möglichkeit, virtuell durch Namibia zu reisen. Dabei mussten die Teilnehmer täglich drei Quizfragen rund um das Thema der Rallye beantworten. Jede richtige Antwort brachte den Nutzer 100 Kilometer weiter auf der 3 900 Kilometer langen, virtuellen Route. Damit möglichst auch die Freunde der Teilnehmer involviert werden und das Teamwork der Spieler gesteigert wird, gab es eine Reihe von Rallyehelfern, die ausgetauscht werden konnten und den Spieler durch zusätzliche Kilometer schneller ans Ziel brachten.

Abb. 1: Die Mayersche Rallye auf Facebook

Die Kampagne wurde während der gesamten Laufzeit erfolgreich auf cloudControl gehostet und hatte sehr viele monatlich aktive Spieler, die täglich Quizfragen beantwortet haben und gemeinsam mit ihren Freunden virtuell durch Namibia gereist sind. Dank der automatischen Skalierung der Plattform mussten wir uns um den möglichen Nutzerandrang kaum Gedanken machen. Die Applikation war zu jeder Tages- und Nachtzeit zu 100% erreichbar.

Damit die Applikation in die Cloud geladen werden kann, muss zuerst ein neues Repository angelegt werden. Bei einem Bazaar-Repository kann das mit dem init-, add- und commit-Befehl über die Konsole bzw. Eingabeaufforderung erledigt werden (Listing 1).

Listing 1
E:m-rallye> bzr whoami "Developer "
E:m-rallye> bzr init
Created a standalone tree (format: 2a)
E:m-rallye> bzr add
adding index.php
[...]
E:m-rallye> bzr commit -m "initial commit m-rallye"
Committing to: E:m-rallye
added index.php
[...]
Committed revision 1.

Sofern das Repository angelegt und die aktuelle Version der Applikation eingecheckt worden ist kann die App auf der cloudControl-Plattform über den Kommandozeilenbefehl cctrlapp angelegt werden:

E:m-rallye> cctrlapp mrallye create php

Der Applikationsname muss eindeutig sein und beschreibt zudem, worunter die Applikation später erreichbar ist. Für den Applikationsnamen wird eine eigene Subdomain für die Domain „cloudcontrolled.com“ angelegt – in diesem Fall wäre die Applikation unter http://mrallye.cloudcontrolled.com verfügbar – allerdings erst nachdem sie übertragen (push) und veröffentlicht (deploy) worden ist:

E:m-rallye> cctrlapp mrallye push
E:m-rallye> cctrlapp mrallye deploy

Zusammen mit dem deploy-Befehl kann auch die minimale und maximale Anzahl der benötigten Boxen über die Schalter min und max festgelegt werden:

E:m-rallye> cctrlapp mrallye deploy --min 2
E:m-rallye> cctrlapp mrallye deploy --max 4

Nachdem die App angelegt wurde, können der Applikation beliebige Addons zugewiesen werden. Sofern auf kostenpflichtige Addons (z. B. größere Datenbanken, SSL oder Memcached) zurückgegriffen werden soll, muss der Applikation über die cloudControl-Account-Konsole [5] eine Rechnungsadresse zugewiesen werden. Im Anschluss daran können der Applikation beliebige Addons, wie in dem Fall eine MySQL-Datenbank, aufgeschaltet werden. Da Addons allerdings an Deployments gebunden sind, muss bei diesem Befehl der Deployment-Name mitangehängt werden. Sofern kein extra Deployment angelegt worden ist, kann mit dem standartmäßigen Deployment default gearbeitet werden:

E:m-rallye> $ cctrlapp mrallye/default addon.add mysql.20gb

Die Zugangsdaten zur Datenbank können über den addon-Unterbefehl abgerufen werden (Listing 2).

Listing 2
E:m-rallye> $ cctrlapp mrallye/default addon mysql.20gb
Addon                    : mysql.20gb

 Settings
   mysql_password           : cc123456sc78910
   mysql_dbsize             : 20480
   mysql_database           : dep123cc45sc
   mysql_hostname           : 127.0.0.1
   mysql_user               : dep123cc45sc

Das SSL-Addon kann leider noch nicht über die Konsole geordert werden, sondern nur über den Support, da es zurzeit noch einen individuellen, manuellen Eingriff des Supports erfordert. Laut cloudControl wird sich das aber bald ändern.

Zwei Prisen Praxisfeinheiten

Codeseitig gibt es je nach Applikation ein paar kleine Feinheiten zu beachten. Sofern Aktionen eindeutig getrackt werden sollen oder generell aus diversen Gründen auf die IP-Adresse eines Nutzers zurückgegriffen werden muss, ist zu beachten, dass sich die Information über die IP-Adresse an einer etwas anderen Stelle befindet. Während diese Information normalerweise per Variable REMOTE_ADDR abrufbar ist, muss sie bei cloudControl (wie bei anderen horizontal skalierenden Plattformen auch) aus dem HTTP_X_FORWARDED_FOR Header ausgelesen werden. Der Grund hierfür liegt in der Lastverteilung. Ein ankommender Request wird innerhalb der Plattform an eine entsprechende Box weitergeleitet und kommt folglich als Request des Load Balancers bei der Box an, sodass über den gängigen Weg nur die IP-Adresse des Load Balancers ausgelesen werden würde. Damit aber dennoch die IP-Adresse des realen Nutzers ausgewertet werden kann, liefert der Load Balancer diese Information über den HTTP_X_FORWARDED_FOR Header mit:

//ggf. vorher: 
$ip = $_SERVER['REMOTE_ADDR'];

//nachher / besser: 
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

Ein weiterer, nicht zu vernachlässigender Punkt ist der Versand von E-Mails. Normalerweise können E-Mails sehr einfach über die PHP-interne Funktion mail() mit ein paar Parametern versendet werden. Generell funktioniert dies auch auf cloudControl und anderen Plattformen, allerdings wurden die Amazon-Dienste in der Vergangenheit häufig von Spammern missbraucht, sodass die meisten E-Mails, die über einen Server von Amazon gesendet werden, im entsprechenden Spam-Ordner landen. Sicherer ist es in diesem Fall entweder einen extra Anbieter zum E-Mail-Versand zu wählen oder aber E-Mails mit einer geeigneten Bibliothek (z. B. Zend Framework oder PHPMailer [6]) direkt über einen SMTP-Server zu versenden (Listing 3).

Listing 3
//ggf. üblich: 
mail($to ,$subject,$message);

//besser: 
require("class.phpmailer.php");

$mail = new phpmailer();

$mail->IsSMTP(); 
$mail->Host     = "mein.smtp.server.de"; 
$mail->SMTPAuth = true;
$mail->Username = "smtp-user";
$mail->Password = "smtp-pass";

$mail->From     = "abs@nd.er";
$mail->FromName = "Absender";
$mail->AddAddress("empf@ng.er", "Empfänger");

$mail->Subject  =  "E-Mail";
$mail->Body     =  "Inhalt";

$mail->Send();

Quod erat demonstrandum

Bei cloudControl kostet die Einrichtung und das Setup einer neuen Applikation wie bewiesen nur sehr wenig Zeit und ist direkt binnen weniger Sekunden funktionsfähig. Die detaillierte Konfiguration und Administration übernimmt die Plattform vollautomatisch. Die Account-Konsole [5] bietet jederzeit einen Überblick über bereits verbrauchte Leistungen und in Anspruch genommene Boxen. Wir können resümieren, dass man sich dank der cloudControl-Plattform auf das Wesentliche bei seinen Projekten konzentrieren kann, ohne sich Gedanken um das Fundament machen zu müssen. Auch stürmische Zeiten hinsichtlich des Nutzerandrangs werden garantiert gemeistert.

André Wussow ist technischer Leiter bei der SnipClip GmbH und so auch für das Hosting und Setup aller Projekte verantwortlich. Er arbeitet bereits seit mehreren Jahren mit Cloud-Plattformen und hat in der Zeit einige Erfahrung sammeln und Unterschiede kennen lernen dürfen.

André Wussow ist technischer Leiter bei der SnipClip GmbH und so auch für das Hosting und Setup aller Projekte verantwortlich. Er arbeitet bereits seit mehreren Jahren mit Cloud-Plattformen und hat in der Zeit einige Erfahrung sammeln und Unterschiede kennen lernen dürfen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -