Facebook
Twitter
Google+
Kommentare
11

Eine PHP-Anwendung bei cloudControl

Im letzten Beitrag habe ich einen kleinen Überblick zum Thema Cloud Computing gegeben. Heute will ich den Umzug unserer PHP-Anwendung in die Cloud der VZ-Applikation „Deine Mutter“ schildern. Wir haben uns aus mehren Gründen für den Plattfrom-as-a-Service Anbieter cloudControl entschieden. So brauchen wir keine Änderung an unserer Anwendung vornehmen, es entfallen sämtliche Adminstartionarbeiten der Server, um die Skalierung kümmert sich die Plattform ganz von alleine und wir haben gleich eine identische Testumgebung. Fangen wir doch gleich an:

Bevor wir uns den cloudControll Kommandozeilen Client „cctrl“ installieren, müssen wir noch schnell die Abhänigkeiten auflösen

  • Bazaar VCS
  • Python 2.6
  • Python-Setuptools

Nun installieren wir den Client

$ sudo easy_install cctrl

Eine Anleitung wie CC unter Windows oder Mac installiert wird, ist in der Dokumentation online auch vorzufinden.
http://cloudcontrol.de/entwickler/tutorial/auswahl-betriebssystem/

Als erstes regstieren wir uns einen Account mittels

$ cctrluser create

Nach wenigen Sekunden haben wir eine E-Mail mit unseren Zugangsdaten.
Noch schnell einen SSH-Key hinzugefügt:

$ cctrluser key.add ~/.ssh/id_rsa.pub

Nun erstellen wir uns Applikation

cctrlapp deinemutter create php

Als nächstes fügen wir eine MySql-Datenbank als Addon hinzu:

$ cctrlapp deinemutter/default addon.add mysql.free

Hier erhalten wir auch gleich die Zungangsdaten für unseren MySql-Connection.
Schnell die eigenden Konfigurationen angepasst und schon kann unsere Applikation in die Cloud gepusht werden. Dazu müssen wir unser Projekt noch mit Bazar versionieren, dannach wird die Anwendung gepusht und deployt:

$ bzr init
$ bzr add
$ bzr commit -m „initial commit“
$ cctrlapp deinemutter/default push
$ cctrlapp deinemutter/default deploy

Nun erstellen wir uns ein MySql-Dump der alten Datenbank, dies machen wir auf Grund der Datenbankgröße per Kommandozeile direkt auf dem alten Server.

$ mysqldump -u deinemutter -p geheim | gzip > deinemutter

Anschließend spielen wir den Dump lokal in die Wolke wieder ein:

$ gunzip < deinemutter | mysql -u deployment -p  deploymentDb

Als nächstest routen wir unseren Subdomaine auf unseren Applikation weiter:
1. Erstellung eines CNAME Eintrag im DNS: „deinemutter.cloudcontrolled.com“
2. cctrlapp deinemutter/default alias.add deinemutter.colibri-media.de
3. cctrlapp deinemutter/default alias deinemutter.colibri-media.de
4. Verification code als TXT Feld im DNS Server eintragen.

Unsere Applikation läuft und die VZ-Server belasten nun nicht mehr unseren vServer zu Lastzeiten.
Die PHP-Anwendung wird nun schon seit einigen Monaten bei cloudcontroll performant und sicher gehostet, durch die interne Beta-Phase entstanden erstmal keine Kosten. Bei der aktuellen Last würden wir auf monatliche Kosten von 15€ kommen.

Fazit:
Wir haben eine Lösung welche zu Lastzeiten performant skalliert, unendlich viele identische Testumgebung, wir zahlen nur was wir tatsächlich verbrauchen, keinen Adminstrations Aufwand und jederzeit die Möglichkeit zu einem anderen Anbieter zu wechseln.

Für Fragen oder Anregnungen stehe ich gerne zur Verfügung.

Über den Autor

Christoph Beckmann

ist Webentwickler, Gründer und Webvisionär. 2007 gründet er Deutschlands erste Klosuchmaschine lootogo.de. Weitere Erfahrungen sammelte er bereits bei einem Kölner Consulting Unternehmen und beim Berliner Unternehmen kaufDa. Ansonsten bloggt Christoph auf serverwolken.de
Kommentare

11 Comments

  1. Das hört sich sehr gut an, aber wie sieht es mit folgenden Punkten aus:
    – Crons
    – Aufruf von Scripten, z.b. nach deployment
    – Versand von E-Mails (muss da weiterhin ein eigener Server betrieben werden) bzw. wie machst Du das mit den E-Mails?

    Hast Du damit Erfahrung oder hat jmd. anders hier damit Erfahrung in Bezug zu CloudControl?

    Reply
  2. @Michael: soweit ich weiß, kann man Crons als Addon hinzufügen. Scripte kann man aber glaube ich nur übers Web aufrufen. Ist ja aber generell auch machbar, wenn sie entsprechend abgesichert sind..

    Emails kann das System selber verschicken, soweit ich weiß…

    Ich bin selber zur Zeit am testen 😉

    Reply
  3. Das Cron Addon ist in Arbeit. Wie Sebastian bereits schreibt kann man damit zu einem bestimmten Zeitpunkt eine URL aufrufen lassen. Alternativ werden wir noch sog. Worker als Addon anbieten. Das sind Prozesse die im Hintergrund laufen, an einer Queue lauschen und dann eingehende Aufgaben abarbeiten können.

    Bzgl. Mails ist es zwar korrekt, dass diese direkt verschickt werden können. Da die IPs der Nodes allerdings ständig wechseln und viele der Amazon IPs auf diversen SPAM-Listen sind, ist das nicht sonderlich zuverlässig. Kleinere Mengen Mails kann man bequem z.B. über die Google Server verschicken. Für größere Mengen arbeiten wir zur Zeit an einem Addon.

    Kleiner Tipp: Wer bestimmte Funktionalitäten benötigt kann diese am besten über den Feedback Button auf der Seite vorschlagen. So können anderen die, die gleiche Funktionälität benötigen auch gleich voten und wir können das Ganze nach euren Ansprüchen priorisieren.

    Reply
  4. Das hört sich doch sehr gut an, vorallem das mit den „workern“. Die Art wie die „crons“ behandelt werden ist für den Anfang erstmal Ok.

    Wie schaut es eigentlich mit der Sicherheit aus? Wer hat alles Zugriff auf die „deployments“ und die „db“. Ich denke mal, das die Admins in alles Einsicht haben, oder?

    Wie wird denn das E-Mail Addon ungefähr aussehen? Perfekt wäre es, wenn es auch möglich wäre, selber E-Mails zu nutzen und empfangen. Dann bräuchte man sich nicht an anderer Stelle darum kümmern.

    Reply
  5. Habe heute versucht eine Zend Framework Anwendung zum laufen zu bringen, leider meckert der Server das, dass „library“ Directory nicht zugreifbar ist (openbasedir restriction). Hat zufällig jemand eine Idee wie man das bewerkstelligen kann (außer alles in ein Directory zu klatschen?).

    Reply
  6. @Arne Riemann: Am besten bei cloudControl fragen.

    Ich fände es auch interessante wenn sich die Addons (DB, memcached) automatisch — bei voller Kosten kontrolle — skalieren ließen…

    Was mich auch allgemein interessiert ist die Frage ab wann ich in eine Cloud (PaaS, Saas, Iaas) investieren sollte — also ab wann es sich lohnt. Welche Vorüberlegungen usw.

    Reply
  7. @Sascha:

    SaaS rentiert sich ziemlich schnell. (SaaS -> PaaS -> IaaS) Für jede weitere Stufe brauchst du einen gewissen Grundbedarf damit es sich auszahlt.

    zb. ich hab momentan folgendes SaaS in betrieb:
    * Workstation Backup über JungelDisk.com auf S3
    * DNS Verwaltung bei Zerigo.com
    und PaaS:
    * Meine Website läuft momentan bei CloudControl

    Kommt natürlich auch immer auf den Dienst an, zb. Amazon S3 ist zwar eigentlich IaaS aber es rentiert sich auch bei geringen mengen. EC2 hingegen reiner IaaService aber selbst die Kleinste Instanze zahlt sich nur aus wenn du sie 24/7 auslasten kannst. Also nicht unbedingt was für eine Website mit geringem bis mittleren Trafficaufkommen. (Kommt natürlich auch immer auf den Anwendungsfall an)

    lg
    Ludwig

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen