codingfreaks in den Wolken

Ich habe lange gezögert, mich ernsthaft mit Azure, Clouding usw. auseinander zu setzen. Ich bin nach wie vor sehr skeptisch, was das ganze Thema clouding betrifft und möchte hier nicht die xte Sammlung von Buzzwords aufmachen. Was ich zeigen will ist, wie ich die auf den derzeit stattfindenden TechEd-Veranstaltungen interpretiere. Auch meine Erfahrungen mit der ganzen Einrichtung und die ersten Schnüffelversuche will ich dokumentieren.

Wichtige Links

Vorweg

Ich hatte beim Beginn des Artikels den naiven Wunsch, alles hier unterzubringen, was mir so an Azure auffällt. Das war rückblickend betrachtet absoluter Nonsens und daher versteht sich dieser Artikel als Kickoff für eine Serie.

Webcast

Was ist denn Azure eigentlich?

Bis vor kurzem hätte ich wahrscheinlich irgend etwas geantwortet, wie: „Die Antwort von Microsoft auf Amazon EC2.“ oder „Cloud-Dienstleistungen, die Microsoft anbietet.“. Nach dem, was ich allerdings jetzt gesehen und ausprobiert habe, geht das Konzept sehr viel weiter, als ich bisher dachte. Azure bietet eine breite Palette von Dienstleistungen. Man kann nicht nur Webservices in die Cloud bewegen, Jobs dort laufen lassen oder einfach nur Speicherplatz buchen. Man kann inzwischen eigentlich seine gesamte IT-Infrastruktur dorthin bewegen. Ganze Serverfarmen können dort entstehen. Was aber auch geht und somit endlich klarer wird ist, dass man die in Azure entstehenden Systeme mit den eigenen bereits bestehenden verbinden kann.

Azure ist eigentlich das konsequente Umsetzen all der Forderungen, die das Management schon immer an die Infrastruktur-Abteilungen hatte. Man könnte die Wünsche und Begehrlichkeiten aus Management-Sicht so ausdrücken: Macht mir eine Infrastruktur, die ausfallsicher und hoch verteilt ist, automatisiert die Prozesse zur Verwaltung so weit es nur geht und gebt mir Tools, die das Ganze auch noch transparent machen und ich somit sehen kann, was mich der Spaß kostet.

Wäre ich nun der Auftragnehmer, würde ich mich früher oder später am Kopf kratzen und mir überlegen, wo ich als Mensch da eigentlich noch meinen Platz habe. Wenn kein Server mehr inhouse rumsteht, nichts außer Kosten der Skalierbarkeit im Wege steht und alles weitgehend automatisiert in weltweit verteilten Rechenzentren läuft, wozu braucht mich dann eigentlich noch irgend jemand? Ich finde, diese Frage sollte ernster genommen werden, als das bisher der Fall ist, denn Azure kombiniert verschiedene bereits bei Amazon und anderen gezeigte Techniken mit der Business-Sicht, wie Microsoft das halt so gut kann. Das kann man gut oder schlecht finden. Was bleibt ist die nackte Tatsache, dass wir am Beginn einer Änderung stehen und uns wenigstens ansehen sollten, was da kommt.

Wo fange ich an?

Um es einfach zu machen, beginnt man am besten auf der Azure-Portalseite. Gleich vorweg: Man braucht eine Windows Live-ID und Kreditkarten-Informationen, um an der kostenlosen Trial-Version (90 Tage) teilzunehmen. Ich habe mich mittels meiner MSDN-Subscription eingeloggt und Kreditkartendaten hinterlegt. Nach ein paar Minuten konnte ich mich bereits einloggen.

Die Azure-Portalseite zeigt einige nützliche Unterseiten (Preis-Kalkulation etc.). Ich möchte hier nur den Bereich „Entwickeln“ heraus picken. Natürlich habe ich hier den Punkt .NET gewählt (Alternativ kann man z.B. Node.js, Java oder PHP wählen). Letztlich landet man im Azure .NET Developer Center. Ganz oben findet man, wie inzwischen bei MS Gang und Gäbe, den Link zum Download es Web-Installers für die RC des Azure-SDKs. Im Dateinamen des Downloads erscheint „Vs11“, weshalb ich meine Tests in meiner virtuellen Maschine mit Windows 7 und Visual Studio 2012 RC durchführen werde.

Ist man einmal in Azure bekannt, findet alles weitere über das Azure-Verwaltungs-Portal statt. In der aktuellen Version (Preview) wurde das Look&Feel komplett überarbeitet. Es gibt nun wirklich eine Tonne von Optionen zu jedem Azure-Feature. Hier erstmal der Screenshot:

Abb. 1: Azure-Portal

Der Screenshot zeigt das „All Items“-Menu nachdem ich eine virtuelle Maschine aufgesetzt habe. Dazu muss man übrigens das entsprechende Feature für die Testversion freischalten, aber dieser Hinweis erscheint auch im Portal selbst.

Das Hauptmenu zeigt nun erstmal sehr schön, was man überhaupt alles in Azure buchen kann. Bereits diese Liste sollte gerade den Leuten, die schonmal in Azure reingeschnuppert haben zeigen, dass sich hier einiges geändert hat. Kurz nur zu den Elementen:

  • Web Sites: Hierhin werden Webseiten deployed, die durch Azure mit einem DNS-Namen versehen werden und öffentlich zugänglich sein können. Techniken, wie Web-Deploy und Anbindung an TFS-Build sind bereits eingebaut.
  • Virtual Machines: Ähnlich, wie von Amazon bekannt, kann man hier sehr schnell virtuelle Maschinen hochfahren und sie dann verwalten.
  • Cloud Services: Services können das sein, was wir Developer automatisch darunter verstehen. Letztlich sind es Instanzen, die es uns ermöglichen, Dienstendpunkte zu hosten. Wie Mark Russonovich in seinem Cast deutlich macht, steht eigentlich hinter jedem Azure-Menu im Prinzip ein Cloud Service als Container dafür, aber das würde jetzt zu weit führen.
  • SQL Databases: Hier verbergen sich gehostete SQL-Datenbanken (was soll ich da noch sagen?)
  • Storage: Man legt hier Online-Speicher an. In der Testversion hat man einen automatisch generierten Storage zur Verfügung. Storages können genutzt werden, um BLOB (irgendwas), Tabellen oder Queues zu beheimaten und über Http-basierte Schnittstellen jedem zur Verfügung zu stellen.
  • Networks: Diesen Menupunkt werde ich gleich als erstes behandeln, weil er mich so geflashed hat. Deswegen hier erstmal nur die Erwähnung.

IaaS, PaaS und andere Dinge

Mich treibt derzeit die Frage um, ob es für so einen kleinen Laden, wie meinen, nicht möglich wäre, eine komplette ActiveDirectory-Infrastruktur ausgelagert zu hosten. Vor ca. 2 Wochen habe ich die letzten Systemarbeiten dafür erledigt und nun stehen 5 dedizierte Windows-Server bei einem Hosting-Anbieter und spannen ein AD auf. Ich habe es sogar geschafft, mich per VPN damit zu verbinden und nun kann ich quasi eine Domäne aus meinem Wohnzimmer heraus ansprechen, die nicht in meinem RZ steht. Man spricht hier wohl auch von IaaS (Infrastructure as a Service). Mit anderen Worten: Mein Hoster stellt mir die Hardware hin (Infrastructure) und ich mache den Rest.

Bis vor kurzem konnte Azure das noch nicht. Azure konnte nur Platform as a Service (PaaS) und selbst das nicht immer voll. PaasS bedeutet letztlich, dass die Jungs von Microsoft mich gar nicht bis auf die Maschine lassen. Ich wünsche mir einfach sowas wie einen SQL-Server und bekomme den dann irgendwie hingestellt. Ich bekomme keine echten Server, sondern nur eine Plattform zum arbeiten.

Amazon kann IaaS z.B. schon sehr lang und Microsoft hat so einige Kunden an die Jungs verloren. Deshalb jetzt dieses IaaS-Gerede an allen Ecken. Egal, weiter!

IaaS bei Azure geht so weit, dass man nun genau wie im lokalen Bereich einfach mit VHD-Images rumhantiert. Man kann sie sogar lokal erstellen und dann in Azure reinverschieben oder anders herum. Wenn man nun bedenkt, dass sowohl hinter Azure als auch VHD auf dem Client letztlich Hyper-V steht, kann man vielleicht anfangen von zukünftigen Szenarien zu träumen, die technisch einfach nicht möglich waren. Ist schon cool.

Alles, was nicht in der cloud hängt wird übrigens in der neuen Sprache „on-premises“ genannt. Nur so am Rande.

Networks

Bisher war mir nicht klar, wie ernst Microsoft das ganze Thema IaaS wirklich nimmt. Wenn man sich aber den Bereich „Networks“ ansieht, stellt man fest, dass selbst Netzwerk-Noobs, wie ich, in die Lage versetzt werden, VPN-Infrastrukturen in endlicher Zeit aufzubauen. Man kann sich vielleicht vorstellen, wie sehr ich mir an den Schädel geschlagen habe, als ich das sah, denn bis vor 2 Wochen habe ich mich wie gesagt durch die Tiefen der RAS-Einrichtung auf Windows Server gehandelt. Randthemen, wie Zertifikate, Firewalls usw. lasse ich der Einfachheit halber mal außen vor.

Ich kann nun meinen kompletten Netzwerk-Raum in der Cloud bequem über das Portal anpassen. Das geht soweit, dass ich einfach gehostete DNS-Server definieren kann und das Azure-Netzwerk sogar mit meinem Heim-Netzwerk verbinden kann.

Abb. 2: Azure-Netzwerk mit VPN zu lokalem Netz einrichten

Das ist auf jeden Fall ziemlich gut gemacht. Den Dialog richtig auszufüllen, erfordert immer noch eine gehörige Portion Ahnung und ja, es wird genug dumme Menschen geben, die es trotz Mangel an solcher trotzdem versuchen. Aber: In einer solchen Qualität und Geschwindigkeit habe ich so etwas noch nicht gesehen. Selbst an Kleinigkeiten, wie den Export für Cisco- und Juniper-Geräte bzw. umgekehrt den Import von dort haben die Jungs von MS gedacht! Nicht schlecht und wahrscheinlich nicht zuletzt ein Effekt des Wechsels von Scott Guthrie in das Azure-Team (Russonovich ist übrigens auch kein so schlechter Name!).

Was bringt das aber eigentlich ganz genau, dass man Netzwerke in der Cloud anlegt? Nun, wie weiter oben beschrieben, kann man als Entwickler oftmals nicht einfach so auf eine ausgewachsene Infrastruktur zugreifen. Trotzdem muss man eine solche oftmals simulieren und seinen Code testen. Auch zerschellt man das ein ums andere Mal an der ablehnenden Haltung der Unternehmens-Admins. Die Sicherheitsargumente ziehen allerdings nicht mehr, wenn man eine Infrastruktur in den Wolken hochziehen will. Hier geht es dann nur noch um Kosten.

Das von MS erdachte Szenario, die IT-Landschaft eines Unternehmens in die Wolken zu verlagern oder wenigstens teilweise zu spiegeln, halte ich selbst für eher unrealistisch, zumindest was den deutschen Markt betrifft. Neben den üblichen rechtlichen Querelen kommt hier meiner Meinung noch eine kulturelle Komponente hinzu. Ich finde das erstmal gar nicht schlecht. Man kann es auch übertreiben mit dem Clouding. Muss man aber nicht, wenn man ein wenig diversifiziert.

Web Sites

Gerade für deutsche MS-Entwickler ist es nicht gerade leicht, die mit dem VS entwickelten coolen MVC-EF-SQLS-Sites einfach mal so zu hosten. Eigentlich hat man so gut wie keinen deutschen Provider zur Hand, der das gesamte Gespann abdeckt und wenn, dann fehlen so essentielle Dinge, wie ein aktuelles .NET Framework oder ein vollständiger SQL-Server. Azure könnte hier helfen. Ich sage bewusst „könnte“, denn das Pricing der Azure-Plattform ist meines Erachtens irgendwie seltsam. Ich komme später noch darauf zu sprechen.

In dem bereits erwähnten Demo-Zugang sind bis zu 10 Web-Sites zum testen enthalten. Der erste Schritt ist immer das Azure-Portal. Im Bereich „Web Sites“ klickt man auf „Create a Web Site“ und kann dann auswählen, ob man eine einfache Site, eine mit Datenbank oder eine Vorlage aus der Gallery wähöen möchte. Die Gallery beinhaltet dann Templates, die es einem z.B. erlauben, ein Blog auf Grundlage von Joomla, WordPress oder Orchard zu erstellen.

Ich bleibe erstmal bei dem „Quick Create“. Bereits beim Anlagen der Seite wird klar, dass man neben den Azure-Kosten noch einen anderen Preis zahlen muss. Die DNS-Namen der Sites enden immer auf „.azurewebsites.net“. Back to the roots, sozusagen. Manche werden sich vielleicht noch an die „*.aol.com“ oder „*.telekom.de“-Domains erinnern. Mit anderen Worten: Für das Entwickeln bei Endkunden kommt das wahrscheinlich nicht in Frage. Ich weiß auch nicht, ob man den Suffix irgendwie los wird oder konfigurieren kann. Mal schauen.

Bereits beim Eintippen des gewünschten Domain-Namens prüft das Azure-Portal, ob die Domain noch verfügbar wäre. Nach der obligsatorischen Auswahl der Region (siehe oben), hat man dann eine Azure-Website am Start:

Abb. 3: Web-Site erstellen

Sobald die Seite fertig erstellt ist (dauert im Test ca. 10 Sekunden) und man sie in der Liste anklickt, erscheint am unteren Rand bereits eine Reihe nützlicher Werkzeuge:

Abb. 4: Azure-Website-Toolbar

Klickt man gleich mal auf „Browse“, bekommt man ein Leer-Template präsentiert:

Abb. 5: Standard-Web-Site-Template

Da mich WebMatrix nicht so sehr interessiert, klicke ich die Web-Site in der Liste an und erhalte noch mehr Optionen. Sehr cool ist die Funktion „Download publishing profile“. Sie lädt eine Datei mit der Endung „.PublishSettings“, die man in VS 2012 importieren kann. Diese Datei enthält dann alle notwendigen Einstellungen für den Publishing-Assistenten von VS und fertig. Sehr cool.

Was auch schon funktioniert, ist die Einbindung in ein TFS-2012-Projekt unter Nutzung der TFS-Preview. Auch hier läuft aktuell eine Beta-Phase, die ich allerdings in diesem Artikel nicht näher beleuchten möchte.

Publishing

So richtig cool wirds, wenn man nun das Deployment von Website-Projekten nutzt. Dazu ein paar Vorbemerkungen:

Als erstes und wahrscheinlich seltsamstes: AZURE KANN KEIN .NET 4.5!!!

Das bedeutet, wenn wir nun unsere Tests fahren wollen, brauchen wir z.B. eine MVC-Applikation mit eingestellten .NET Framework 4.0 im Visual Studio 2012. Ohne das VS 2012 kommen wir leider noch nicht in den Genuss der neuen Publishing-Features und wenn wir .NET 4.5 nehmen, meckert das Publishing, dass Azure das noch nicht kennt. Einen Termin für Azure mit .NET 4.5 gibt es noch nicht.

Nachdem ich also ein MVC 4 mit .Net 4.0 erstellt habe, klicke ich auf „Veröffentlichen“ und erhalte diesen neuen Screen:

Abb. 6: Neuer Publishing-Dialog

Ich kann nun natürlich über die Combobox ein neues Publishing-Profil anlegen, brauche das aber nicht zu tun, weil ich über Import auch ein über Azure erstelltes nutzen kann. Abb. 7 zeigt den gleichen Dialog nach dem Import:

Abb. 7: Azure-Einstellungen importiert

Klickt man nicht gleich auf „Veröffentlichen“, sondern geht im Assistenten einfach weiter, kann man auch noch einstellen, welches Release man veröffentlichen will, welche ConnectionStrings ggf. mit veröffentlicht werden sollen und man kann sich ansehen, welche Dateien übertragen werden. Das Ergebnis kann man sich nun direkt ansehen:

Abb. 8: MVC4 in Azure

Ändere ich z.B. nach diesem ersten Publishing nur etwas an der Site.css, wird beim nächsten Veröffentlichen folgendes gezeigt:

Abb. 9: Differentielle Änderungen

Das ist endlich mal eine funktionierende und praktikable Lösung für solche Szenarien! Schön wäre, wenn auch deutsche Provider langsam dahinter kommen, dass es hier einen Markt geben könnte, aber da sehe ich eher schwarz.

Wie gehts weiter?

Ich mache an der Stelle erstmal Schluss, weil der Artikel sonst in 3 Wochen immer noch nicht fertig ist. Ich stelle noch ein Video dazu ein und kümmere mich im nächsten Beitrag dann um weitere Themengebiete. Bis hierher ist der Eindruck schon einmal sehr sehr gut. Azure ist technisch ein super Produkt. Man sollte allerdings nie vergessen, dass es keine rechtlichen Probleme lösen kann und dass auch Microsoft ein Unternehmen ist, dass Daten verknüpft und notfalls an US-Bundesbehörden rausgibt. Ich finde auch bedenklich, dass sich kein Mensch mehr über eigene Backup-/Restore-Szenarien Gedanken macht, denn auch die Cloud kann mal weg sein oder was weiß ich.

Betrachtet man aber Clouding neutral im Marktvergleich, hat Microsoft mal wieder alles richtig gemacht. Man warte, was die Konkurrenz so tut, betrachte es aus Sicht der User und kopiere es unter Auslassung diverser Kritik-Punkte. Gutes Rezept, nicht unbedingt moralisch, aber im Ergebnis.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.