// Node.js und Azure - Windows freie Zone?//
Wenn man den ersten Kontakt zur Windows Azure hat, dann kommt man an dem .Net Framework natürlich nicht vorbei. Die Vorteile liegen auch schnell auf der Hand: Alles aus einem Hause! Das sind natürlich hervorragende Vorraussetzungen zur Schaffung einer skalierbaren und dynamischen Infrastruktur, auf Grundlage derer man gerne etwas entwickelt. Die Infrastruktur kümmert ich um den Rest.
Doch wie sieht es mit anderen Frameworks und Programmiersprachen aus? Dies sollte im Zeitalter der Cloud sicherlich kein Problem sein oder?
Begeben wir uns auf die Suche. Dazu definieren wir zunächst, wie üblich zunächst unsere Anforderungen.
Anforderungen:
- Node.js als neue und unabhängige Technologie nutzen
- Entwicklung darf nicht auf einem Windows Rechner stattfinden
- Alle Tools müssen auf allen Plattformen laufen (Windows, Linux, Mac)
Das sollte reichen, um unser Projekt weitestgehend auf Unabhängigkeit von der Windows Welt zu beschränken. Anmerkung an dieser Stelle: Dies geschieht nicht aus Abneigung gegenüber der von Microsoft Technologien, sondern um die Cloud-Fähigkeit von Azure zu untersuchen. Denn nur, wenn ich vollkommen frei bin in meinem Entwicklungsprozess, dann kann ich auch die Cloud entsprechend meiner Vorstellung nutzen. Ferner kann ich meine eigenen Standards definieren und nutzen und brauche mich nicht an definierte Rollen halten.
Wenn man sich auf die Suche macht, dann stolpert man über so einige Blog- und Foreneinträge zu der Thematik. Jedoch sind alle, die man auf die auf Anhieb findet beschränkt auf die Entwicklung auf einen Windows-Rechner, beste Beispiel ist dasNode.js Developer Center[1] selbst. Um ganz Cloudig zu sein, wähle ich daherCloud9 IDE[2] als Entwicklungsumgebung. Diese bietet den Vorteil der direkten Entwicklung und des Deployments in der Cloud. Weiterhin kann ich auch meineGithub[3] undBitbucket[4] Konten direkt mit der Umgebung verknüpfen.
An dieser Stelle sei auch auf das Anlegen einer Live ID zur Erzeugung eines Windows Azure Kontos verzichtet, da dies mehr als gut und einfach von Microsoft erklärt ist. Ich gehe also im weiteren Verlauf des Artikels davon aus, dass der Leser(in) ein gültiges Windows Azure Konto besitzt.
Beginnen wir. Wir Mollen zunächst mit einem einfachen Fall starten, da zunächst untersucht werden muss, inwiefern die einzelnen Komponenten zusammenpassen und zusammen reibungsfrei interagieren können. Dazu beginnen wir mit der Erzeugung eines neuen Projekts
innerhalb der Cloud 9 IDE Umgebung mit dem schönen Namen “NodeFunktionsTestMitAzure”.
Anschließend beginnen wir mit dem eigentlichen Coden.
Zunächst benötigen wir natürlich eine Datei für unsere Webanwendung. In Node.js nennen wir diese “server.js”. In die Datei schreiben wir beispielsweise den folgenden Code [https://gist.github.com/2479252]:
Dann klicken wir auf Debug und schauen uns das Ergebnis zunächst einmal auf der Cloud9 Plattform an.
Änderungen am Code können zur Laufzeit durchgeführt werden und werden dementsprechend automatisch neu deployed. Das hat zur Folgen, dass ein Refresh unserer Seite dann auch die Änderungen gleich sichtbar macht.
Nachdem wir also einen laufenden Node.js Server haben, wollen wir Ihn natürlich noch in die Azure Cloud bringen und dort starten. Dazu können wir direkt aus der Cloud9 IDE heraus ein neues Deployment Ziel definieren.
Neben Windows Azure werden noch weitere Cloud Plattformen angeboten. Wir beschränken uns jedoch hier auf Azure.
Wenn man Windows Azure mit der Cloud9 IDE das erste Mal benutzen möchte benötigt diese unsere Windows Azure Einstellungen. Diese können über denLink oder durch klick auf den Button “DOWNLOAD WINDOWS AZURE SETTINGS” bezogen werden.
So die Theorie. Das funktioniert auf einem Windows Rechner bzw. einer Windows Entwicklungsumgebung auch sehr schön. Jedoch nicht auf einem anderen Betriebssystem bzw. einem anderen Browser als dem Internet Explorer! In allen anderen Browsern und Betriebssystemen endet die Fahrt an dieser Stelle:
Nachdem man nun also einmal den Internet Explorer bemüht hat und die Einstellungen importiert hat, kann man wieder Betriebssystem und Browser unabhängig weiter arbeiten.
Ich habe nun die Möglichkeit bereits existierende Deployments zu nutzen oder aber ein neues anzulegen.
Wir erzeugen direkt in Cloud9 IDE ein neues Deployment Ziel mit dem Namen “NodeDeployment”. Wir wollen zunächst nur eine Instanz nutzen und diese soll in West Europa liegen.
Nachdem wir den entscheidenden Befehl zum Anlegen erteilt haben …
sind wir bereit loszulegen.
Dann wollen wir mal deployen … Da wir ein frisches Konto und ein brandneues Deployment Ziel eingerichtet haben, gibt es noch keinerlei Konfigurationsdateien für das neue Ziel. Diese können jedoch auch aus der Oberfläche heraus erzeugt werden.
Wir bekommen auch eine Mail über das erfolgreiche erstellen unseres Servers:
Nachdem wir uns für eine Größe für unseren Server entschieden haben, beginnt das Deployment.
Zwischenzeitlich auf der Windows Azure Seite:
Wie wir sehen können wird auf der Windows Azure Seite Speicher und Host vorbereitet, die Daten übertragen und die VM gestartet. Darüber bekommen wir auch immer eine Rückmeldung in der Cloud9 IDE, so dass wir die Umgebung nicht verlassen müssten. Nachdem alles erfolgreich für uns erledigt worden ist, bekommt man direkt den klickbaren Link zur Applikation.
Wenn wir die Applikation noch nicht freigeben möchten, dann hilft uns ein Deployment als Staging. Wir bekommen dann eine weitere Web Role und einen alphanumerische URL geliefert.
Was momentan noch nicht funktioniert, ist das Cleanup unseres Deployments. Dies muss manuell geschehen. Dazu kann man jedoch relativ schnell auf die Managementoberfläche umschalten, indem man “Open portal” anklickt.
Zusammenfassend können wir festhalten, dass die Betriebsystem unabhängige Entwicklung auch auf und mit Windows Azure bestens funktioniert. Einziger Wermutstropfen war das Herunterladen der persönlichen Einstellungen (Zertifikat).
Quellen:
[1] http://www.windowsazure.com/de-de/develop/nodejs/
[2] http://c9.io/

























