Agile Virtualisierung mit Windows Azure

Agil, agil, agil müsst ihr sein! Wer hat diesen Satz noch nicht in den letzten Jahren gehört. Alles soll agiler werden. Meist bezieht sich das Wort “agil” aber nur auf die Entwicklerteams. Müssen nur Entwickler agil sein? Sollte sich nicht auch ihre Umgebung, in diesem Fall die benötigte Infrastruktur, agil verhalten, sprich sich an ihre Bedürfnisse anpassen?

Dies hört sich meist einfacher an als es in Wirklichkeit ist. In großen Unternehmen kann man von Glück reden, wenn innerhalb weniger Tage die gewünschte Infrastruktur bereitsteht. Dieses Problem beschränkt sich aber nicht nur auf große Unternehmen. Diese besitzen in der Regel alles, was benötigt wird. Aber wer hat nicht schon mal mit der Bürokratie zu kämpfen gehabt. Auch Kleinunternehmer und Startups treffen dieses Problem öfter an als gewünscht.

Wie lässt sich dieses Problem lösen?

Was ist eigentlich das Problem?

Um das Problem zu verdeutlichen stellen wir uns stellvertretend die Firma XYZ vor. XYZ ist ein kleines Startup, das in den verschiedensten Bereichen vertreten ist. Neben eigener App-Entwicklung für iOS, Android, Windows Phone und Windows 8 agiert XYZ als Berater in verschiedenen Entwicklungsprojekten für Kunden. Diese Entwicklungsprojekte reichen von Java EE-Projekten bis hin zur Web-Entwicklung mit Node.js. Die Entwickler bedienen sich der mehr und mehr beliebten Arbeitsweise des Bring-Your-Own-Device. Einer dieser Entwickler ist Max Mustermann. Max, seines Zeichens ein Allround-Talent, wirkt derzeit sowohl in der eigenen App-Entwicklung als auch in einem Node.js-Projekt mit. Was braucht Max als Entwickler hierfür? Erstellen wir eine kurze Liste. Er benötigt

  • IntelliJ für die Android-Entwicklung
  • Visual Studio für die App-Entwicklung auf Windows Phone und Windows 8
  • Eine Node.js-IDE seiner Wahl und diverse Browser
  • Windows 8 + Windows Phone Simulator

Kann man das auf Max seinem Laptop noch unterbringen? Sicherlich, aber damit sind wir ja noch nicht am Ende unserer Weisheit. Welche Sachen fehlen noch, damit Max wirklich so arbeiten kann wie er es möchte?

  • Einen Web-Server
  • Codeverwaltung + Bug-Tracking
  • Einen Build Server
  • Einen Datenbank-Server

Mit diesem Setup sind wir von der Wirklichkeit gar nicht so weit entfernt. Was macht Max mit den letzten vier Komponenten? Auch auf seinem Laptop installieren? Was passiert wenn noch ein anderer Entwickler Zugriff auf die Codeverwaltung braucht? Mindestens ein, besser noch vier Server müssen her. Kann sich das XYZ leisten? Für ein Projekt, das vielleicht in ein paar Wochen wieder vorbei ist?

Wie könnte eine (mögliche) Lösung aussehen?

Eine Möglichkeit, die seit Jahren genutzt wird, ist die Virtualisierung. Sei es nun auf dem eigenen Rechner oder einem Server, man schwitzt stundenlang beim Einrichten der gewünschten VM und wehe man muss mal ein System aufsetzen mit dem man keine Erfahrung besitzt.

Wie sieht das für Max aus? Aufgrund eines fehlenden IT-Administrators hat Max das Glück seine gewünschten vier Server selber einzurichten. Als erstes macht er sich an den Web-Server. Hier hat er die Qual der Wahl: Windows Server oder doch besser mit einem Linux-Derivat gehen? Aufgrund der Lizenzkosten für einen Windows Server entschließt sich Max für einen Ubuntu Server. Als jemand, der mit Windows aufgewachsen ist und froh ist dass grafische Oberflächen erfunden wurden, für ihn mehr eine Qual als Vergnügen. Aber halt, muss Max wirklich einen eigenen Web-Server einrichten? Eigentlich nicht. Die Windows Azure Web Sites nehmen ihm hier den Einrichtungsaufwand und die Administration ab. Problem 1 gelöst, aber jetzt geht es schon an die Codeverwaltung.
Auch hier hat Max die Qual der Wahl, aber aufgrund eigener Erfahrung kann er es schnell auf den Team Foundation Server oder Git eingrenzen. Aber halt zum zweiten, muss Max sich wirklich für eines von beiden entscheiden? Was die Art der Versionsverwaltung angeht ein deutliches Ja, aber betrifft das auch die Plattform? Seit geraumer Zeit ist auf dem TFS auch Git möglich. Natürlich möchte Max nicht selber den TFS einrichten und könnte hierfür auf den TFS Online zurückgreifen. Max ist aber eigentlich kein TFS-Freund und möchte lieber etwas in die Richtung GitHub haben und ist bereits über GitLab gestolpert. Es heißt aber wieder Linux aufsetzen und GitLab einrichten. Eigener Server? Fehlanzeige, aber es gibt ja die Windows Azure Virtual Machines. Problem 2 gelöst, jetzt fehlt noch der Build-Server. Aufgrund der Entscheidung gegen den TFS muss etwas anderes her.
Wie wäre es mit Jenkins? Und das bekannte Problem, Linux und Jenkins einrichten.
Max hat schon eine Vorahnung was den Datenbank-Server betrifft. Hier würde er am liebsten MongoDB einsetzen, aber MongoDB auf einem Windows Server installieren? Ziemlich unhandlich, also ein letztes Mal Linux aufsetzen und MongoDB einrichten.

Klingt nach viel Arbeit und viel Aufwand, oder? Nicht unbedingt!

3W

Und wie mache ich das praktisch?

Klingen die Probleme von Max bekannt? Wie könnte Max jetzt effektiv und ohne viel Aufwand seine Umgebung einrichten? Eine Möglichkeit wäre die VM Gallery der Windows Azure Virtual Machines durchzugucken, die Basisinstallation des Betriebssystems durchzuführen und anschließend die gewünschte Anwendung installieren. Es geht aber leichter!

Wer sich intensiver mit den Windows Azure Virtual Machines auseinandergesetzt hat, dem wird im unteren Bereich ein kleines Icon auffallen:

Browse VM Depot

Browse VM Depot ist unser Einstieg in eine wunderschöne, doch relativ unbekannte Welt.

Choose an image

Diese Übersicht ist aber ziemlich unhandlich und lässt Max nicht auf die Schnelle finden, was er benötigt. Hinter dieser Übersicht versteckt sich aber keine andere Quelle als eine Webseite: Das VM Depot von Microsoft Open Technologies. Dieses bietet Max eine einfache Möglichkeit nach den benötigten Anwendungen zu suchen. Was benötigt er also?

  • GitLab
  • Jenkins
  • MongoDB

Die Suche kann beginnen. Den Anfang macht GitLab. Hier haben wir bereits die Qual der Wahl zwischen den verschiedensten Versionen, aber definitiv vorhanden. Weiter geht es mit Jenkins. Hier sieht das Ergebnis ähnlich aus. Fehlt noch MongoDB und auch dieses ist vorhanden.

Aber was ist das VM Depot überhaupt? Ähnlich wie die VM Gallery im Windows Azure Management Portal bietet es verschiedenste VMs, die man ohne viel Aufwand in eine Windows Azure Virtual Machine installieren kann. Hier ist aber der Hauptpunkt: Man muss sich nicht um die Betriebssystem-Installation kümmern und man verhindert das mühsame Aufsetzen der jeweiligen Anwendung (was insbesondere bei GitLab ein Segen sein kann). Es sind in der Regel nur drei Schritte notwendig

  1. Herunterladen des gewünschten Images
  2. Registrieren des Images
  3. Bereitstellen des Images

Alle diese Schritte sind weitesgehend automatisiert und ohne große Benutzerinteraktion möglich.

Und was macht man, wenn bspw. MongoDB nicht mehr benötigt wird? Einfach VM und Image löschen und schon ist alles beim Alten.

Max, mittlerweile ziemlich begeistert, möchte jetzt noch einen Schritt weitergehen. Wäre es nicht gut eine Entwicklungsumgebung zu haben, die mehr Power hat als sein kleiner Laptop? Auch dies ist durch die VM Gallery möglich. Hier gibt es bereits vorgefertigte Images für Visual Studio 2013 auf einem Windows Server 2012.

VS 2013

Fazit

Es kann schwierig sein als Entwickler seine Entwicklungsumgebung an die eigenen Bedürfnisse anzupassen. Es fehlt die Erfahrung in der Installation verschiedenster Systeme. Meistens fehlt aber die Zeit. Mit dem VM Depot kann man beide Probleme elegant lösen und die eigene Infrastruktur immer den Erfordernissen anpassen, die gegenwärtig vorhanden sind. Ist es aber eine Allzweckwaffe, die Max einsetzen kann? Nicht immer. Welche Alternativen hätte er noch gehabt? Visual Studio Online und MongoLab wären zwei gewesen.

Dieser Artikel ist hauptsächlich von Windows Azure als Cloud Plattform ausgegangen. Ist dies auch bei anderen Cloud-Anbietern möglich? Natürlich! Jeder Anbieter, der Infrastructure-as-a-Service (IaaS) bereitstellt, kann für agile Virtualisierung genutzt werden. Der Komfort beim Einrichten ist aber durchaus unterschiedlich.

Zum Abschluss ein kleines Video, das die Arbeit mit dem Windows Azure VM Depot und der Windows Azure VM Gallery veranschaulicht. In diesem wird eine Cassandra Datenbank, ein SQL Server, ein Visual Studio 2013 und GitLab aufgesetzt.

– Jan (@Horizon_Net)

Advertisements

2 thoughts on “Agile Virtualisierung mit Windows Azure

  1. Tobias

    Super Blogpost!
    Aber kannst du mir sagen, was man fuer so ein Setup pro Dev. investieren muss (grob)?
    Also die komplette Dev-Umgebung fuer Windows8 und node.js in die Wolke zu legen.

    Somit koennte man schnell switchen in den man nur die RDP Connection wechselt. Sehr nette Idee.

    Kann man soetwas einmal “gratis” ausprobieren? Kann ruhig Limitierungen haben, es geht nur um das “selbst” erfahren.

    Danke und weiter so!

    Reply
    1. Jan Hentschel Post author

      Hi Tobias,

      Danke für das Lob! Freut mich sehr.

      Schwer zu sagen wie viel es wirklich kosten wird. Viel hängt davon ab, welche Größe du bspw. für die VM nutzt und wie viel Traffic du wirklich verursachst. Eine Möglichkeit für die Berechnung ist der Azure Pricing Calculator – http://www.windowsazure.com/en-us/pricing/calculator/
      Ein Faktor, der nicht zu vernachlässigen ist: Du kannst die VMs auch runterfahren wenn du sie gerade nicht brauchst und wirst ab dem Zeitpunkt nicht mehr zur Kasse gebeten. Dadurch musst du die VMs nicht mehr löschen (wie es früher war). Nutze ich sehr intensiv.

      Ich habe die RDP-Lösung auch schon mehrmals genutzt (insbesondere auf einem Surface sehr nett) und finde es einfach nur super, dass ich mein eigenes System nicht überladen muss, d.h. Dinge installieren muss, die ich nur temporär nutze.

      Gratis (natürlich mit Limitierung) kannst du es natürlich ausprobieren. Hierfür bietet sich die Windows Azure Trial an – http://www.windowsazure.com/en-us/pricing/free-trial/
      Mit dieser kannst du für einen Monat für 150€ Azure-Ressourcen nutzen.

      – Jan

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s