Archive for the ‘Cloud’ tag
PHP Clouds und Platform as a Service (PaaS): phpcloud von Zend
Die Zend Cloud phpcloud wurde auf der ZendCon 2011 im Oktober vorgestellt, ich habe mich natürlich direkt vorregistriert und seitdem auf einen Invite gewartet. Nun habe ich einen Invite-Key bekommen und direkt ein wenig damit experimentiert.
Dieser Artikel stellt also eine weitere Platform-as-a-Service (PaaS) für PHP vor. Die Applikationen laufen auf einem Fundament namens Zend Application Fabric (ein aufgebohrter Zend Server) und können entweder in einer private Cloud oder bei einem der folgenden Anbieter gehostet werden: Rightscale, Amazon, IBM oder Rackspace (Info).
Die Registrierung verlangt aktuell einen Zend-Account und den besagten Invite-Key. Danach muss man als nächstes einen Container anlegen in dem die Applikationen laufen werden. Ich lege also einen ersten Testcontainer an:
PHP Clouds und Platform as a Service (PaaS): cloudControl
Wie bereits gestern in der PHP-PaaS-Übersicht angekündigt hier nun die Nutzung eines PHP-PaaS-Dienstes anhand von cloudControl, dem aktuell einzigen am Markt befindlichen Anbieter für PHP-Clouds (2 weitere stehen bereits in den Startlöchern, siee Übersicht). Ein weiterer Vorteil ist dass cloudControl eine deutsche Firma ist und aktuell auf den Amazon EC2 Servern in Irland hostet, und mit Servern in der EU hat man tendentiell weniger rechtliche Probleme als außerhalb.
Dann mal los, wir wollen als Beispiel hier ein kleines Script deployen damit es online verfügbar ist. Es geht natürlich genauso mit größeren eigenen Applikationen oder WordPress-Installationen, Typo3, was auch immer, solange die technischen Einschränkungen uns keinen Strich durch die Rechnung machen. Mein kleines Script soll einfach nur die Serverzeit als JSON zurückgeben:
<?php header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); echo json_encode(array('serverTime' => time()));
Je nach Betriebssystem muss man nun die benötigten Tools installieren, eine Anleitung für Windows, Mac OS X und Linux ist vorhanden und leicht durchzuführen. In meinem Fall habe ich Windows und brauche nur den cctrl Kommandozeilen Client für cloudControl installieren, Git und Putty sind bereits vorhanden.
Was wir als erstes benötigen ist ein Account bei cloudControl. Nach nicht mal 30 Sekunden ist der Account erstellt und aktiviert, es kann losgehen. Alternativ kann man das auch mit dem Kommandozeilen Client erledigen:
cctrluser create
cctrluser activate <username> <activationcode>
Dann benötigen wir einen SSH-Key, den wir mit puttygen.exe erstellen (genaue Schritte siehe Anleitung für das entsprechende Betriebssystem).
Den public Key fügen wir dann dem cloudControl Account hinzu:
Weiterlesen »
PHP Clouds und Platform as a Service (PaaS): Übersicht
„Claudia hat in der Cloud Klaus das Herz geklaut“. Die Cloud ist mittlerweile kein reiner Hype mehr, sondern scheint sich zu manifestieren, und es gibt mehr und mehr Anbieter mit interessanten Angeboten, wo in bestimmten Situationen eine Cloud Sinn macht. Wir sollten uns aber klar machen, dass die Cloud nicht die Lösung für alles ist, denn es gibt technische und (datenschutz) rechtliche Probleme und Beschränkungen.
Die Cloud-Angebote kann man grob in 3 Teilbereiche gliedern:
- Infrastructure-as-a-Service (IaaS): Der Anbietet gibt mir Hardware soviel ich möchte, und damit kann ich anfangen was ich möchte. Ich darf (bzw. muss) mit das Betriebssystem selbst installieren und kann tun was immer ich möchte. Es gibt häufig fertig vorkonfigurierte Images, die als Startpunkt dienen.
- Platform-as-a-Service (PaaS): Der Anbieter gibt mir Zugriff auf eine Umgebung, in der ich mich nicht um das Betriebssystem kümmern muss, sondern nur meine Software hochladen muss damit sie läuft. Diese Anbieter sind spezialisiert auf eine bestimmte Programmiersprache (.NET, Python, Java, PHP), und ich erhalte beispielsweise einen klassischen LAMP-Stack inklusive Datenbank-Diensten.
- Software-as-a-Service (SaaS): Der Anbieter gibt mir Zugriff auf eine bestimmte Software, die ich nutzen kann. Ich habe keinen Zugriff auf die darunter liegenden Schichten, kann also nur die Software nutzen, sonst nichts, um alles andere kümmert sich der Anbieter.
Google’s Cloud kostenlos als CDN nutzen
Cloud, CDN? Schonmal gehört. Es soll toll sein, aber im Detail weiß ich nicht, was das ist.
Wenn so oder ähnlich deine ersten Gedanken waren, habe ich hier ein paar interessante Informationen, wie man das ganze mal praktisch ausprobieren kann.
Man mag Google lieben oder hassen, zum kostenlosen Test kann man es ja nutzen, und dann entscheiden, wie man weiter machen möchte. Aktuell ist nämlich Google der einzige Anbieter, der bei geringen Trafficvolumen kostenlos ist, andere Größen der IT-Landschaft mit einer Cloud wie z.B. Amazon EC2 bzw CloudFront, GoGoGrid, AppNexus und wie sie alle heißen kosten sofort Geld, wenn auch für Testzwecke nur wenige Euros.
Die Wolke, die Cloud, über die alle seit Monaten reden, ist wirklich ein konfuser Bereich im Internet, wo man nicht weiß, was genau dahinter steckt, man kann es wie eine Blackbox nutzen. Das sieht man auch bereits beim groben Vergleich von Googles App Engine und Amazons EC2 Services. Während man bei Amazon einen kompletten (virtualisierten) Linux Server mit Root-Rechten bekommt und dort machen kann was man möchte, bekommt man bei Google „nur“ Zugriff auf ein skalierbares System, wo man seine Python-Scripts und Webseiten installieren kann, und beschränkt ist auf Googles Datenbanksystem.
Wer den Titel genau gelesen hat weiß, dass wir keine komplette Webseite installieren möchten in der Cloud, sondern die Infrastruktur nutzen wollen als CDN. Ein Content-Delivery-Network (CDN) ist dazu da, Daten möglichst schnell zum Webseitenbesucher zu bringen, indem statische Dateien (zB Bilder, Javascripts, CSS-Dateien, Streams etc) von einem geografisch möglichst nahen Server zum Besucher gesendet werden. Da Clouds dafür bekannt sind, ausfallsicher auf einer großen Menge von Servern zu laufen, die häufig auch in vielen Rechenzentren rund um die Welt verteilt sind, eignen sie sich für unser Vorhaben.
Soviel zur Theorie, auf zur Praxis. Als erstes wollen wir uns die Google App Engine ansehen. Dazu besorgen wir uns einen Account auf https://appengine.google.com . Nach der Registrierung können wir unsere erste Applikation anlegen. Dazu müssen wir uns noch authentifizieren mit unserer Handy-Nummer. Wir erhalten dann eine SMS mit einem Verifizierungscode. Google sammelt Daten.
Danach geben wir noch einen Titel für die Anwendung an (wir bekommen damit automatisch eine Subdomain <application>.appspot.com
Im Dashboard können wir uns später viele Details unserer Applikation ansehen, sowie auch die Rechnungsseite (Billing) und bekommen die Kosten zu Gesicht. Wir sehen, dass es einen großzügigen kostenlosen Pool gibt, den wir nutzen können, und erst dann Kontoinformationen etc. angeben müssen, um mehr zu nutzen.
Wir haben also täglich 1GB Traffic in jede Richtung und können 2000 Mails versenden, sowie 6,5 CPU-Stunden nutzen. Das reicht für erste Tests und kleinere Projekte auf jeden Fall aus.
Unter „System Status“ sehen wir die zur Verfügung stehenden Dienste und Systeme:
Nun wollen wir unsere Bilder und statischen Dateien hochladen. Dazu gibt es einige Möglichkeiten, die man sich auf der Download-Seite anschauen kann. Ich habe mich für das Eclipse-Plugin entschieden. Nach der Installation haben wir die Möglichkeit, Dateien und Ordner in unsere Google Applikation hochzuladen:
Nach der Installation des Plugins und Neustart von Eclipse haben wir 3 neue Buttons in Eclipse. Nun können wir ganz einfach ein neues „Web Application Project“ erstellen:
Wir kopieren die Dateien in den Ordner „war“, in diesem Fall möchte ich den Ordner img734/ mit einigen Bildern hochladen. Dort können wir auch Unterordner erstellen.
Mit einem Klick auf „Run“ (Der grüne Play-Button) wird ein lokaler Miniwebserver gestartet, wo man dann die Applikation testen kann:
http://localhost:8888/img734/appengine_billing.png
Wenn alles OK ist, klicken wir auf „Deploy“ (die blaue Turbine von Goole). Nach der Eingabe von Email und Passwort wird das Project hochgeladen und die Bilder sind online verfügbar.
Beim ersten Mal muss man noch die „Application ID“ eingeben. Das ist der eindeutige Application Name, den wir angelegt haben.
Überprüfen können wir das, indem wir im Browser nun die folgende URL eingeben:
http://phpgangsta.appspot.com/img734/appengine_billing.png
Damit die Bilder nun automatisch eine hohe Expiration-Time bekommen (und wir so vom Browsercache profitieren können) öffnen wir die Datei /war/WEB_INF/appending-web.xml und fügen dort Informationen hinzu:
... <application>phpgangsta</application> <version>1</version> <!-- Static Files for CDN --> <static-files> <include path="/img734/*" expiration="365d" /> <include path="/css/*" expiration="1d" /> <include path="/js/*" expiration="1d" /> </static-files> <!-- Configure java.util.logging --> ...
Klick auf Deploy, und schon werden die Bilder mit einem hohen Expiration-Date ausgeliefert. Als Test habe ich alle Bilder in diesem Blogartikel in die Google Cloud geladen und verlinkt. Und es funktioniert! 😉
Wir haben nun also eine kostenlose Subdomain, wo wir statische Dateien ablegen können, und die wir in unsere Webseite einbinden können. Wir haben dadurch mehrere Vorteile:
- Wir sparen Traffic und CPU-Zeit auf unserem Server
- Wir haben eine Cookie-freie Domain (warum das gut ist: Siehe Präsentation in diesem Artikel)
- Die Dateien werden automatisch gzip’t ausgeliefert falls möglich (bei css und js zB)
- Die Verbindung der Besucher zur Google Cloud ist besser als zu unserem Server (CDN)
Der Besucher wird also eine kürzere Ladezeit beobachten, und wir entlasten unsere Server.
Aber es gibt nur Licht, wenn es auch Schatten gibt. Wir als Entwickler haben unsere Handy-Nummer preisgegeben und sie mit dem Google-Account verknüpft. Außerdem werden die IP-Adressen unserer Besucher bei Google preisgegeben, was evtl. ein Problem sein kann oder werden kann. Sobald wir über das freie Kontigent kommen, müssen wir Geld bezahlen. Das ist aber häufig günstiger als einen eigenen Server zu kaufen/mieten, der die Last und den Traffic übernimmt.
Viel Spass beim Ausprobieren, und berichtet von euren Erfahrungen!