Wird Windows Azure Erfolg haben?

24. Juni 2010

Hinweis: Dies ist ein ins Deutsche übersetzter Beitrag des Originalartikels auf meinem privaten Blog unter http://www.minddriven.de/index.php/technology/microsoft/cloud-computing/windows-azure/will-windows-azure-succeed.

Auf der PDC 2008 hat sich Ray Ozzie weit aus dem Fenster gelehnt als er sagte, dass Windows Azure die Bühne für Systeme der nächsten 50 Jahre bereiten wird. Jeder (ich eingeschlossen) war sehr aufgeregt und Microsofts Vision und ihre neue Cloud Computing-Plattform inspirierte viele Entwickler.

Windows Azure Es sind nun einige Monate ins Land gegangen. Windows Azure ist kommerziell verfügbar, die Plattform wurde konsolidiert (R.I.P., Live Framework…) und rund um die Welt wurden riesige Datencenter gebaut.
Aber ist Windows Azure tatsächlich diese herausragende Technologie, die Microsoft versprochen hat und auf die sie bauen? Wird Windows Azure (als Produkt) Erfolg haben? Ich bin mir unsicher, aber schauen wir einfach mal…

Ein paar Worte vorab…

SDX Rating Stress SimulatorMeine Gedanken zu dieser Thematik haben einen konkreten Hintergrund. 2009 hat SDX signifikante Forschungsarbeit in die innovativen Bereiche Cloud Computing im Allgemeinen und Windows Azure im Speziellen investiert. Und wir entwickeln uns auf diesem noch immer stark weiter. Im Zusammenhang mit dem NewCloudApp()-Wettbewerb von Microsoft haben wir dabei eine kleine Cloud-Showcase-Anwendung namens Rating Stress Simulator erstellt, die aktuell direkt in der Cloud getestet werden kann.
Von der Architektur her haben wir versucht viele der Möglichkeiten zu nutzen die uns Windows Azure bietet: WebRole, WorkerRole, Message Queue, Table Storage und einen WCF-Service, der in der WebRole gehostet ist.
Wir haben dadurch einige Erfahrungen mit Windows Azure sammeln können, sowohl auf der technischen als auch auf der Business-Seite. Wir finden die Plattform sehr vielversprechend und glauben daran, dass es sich aus technischer Sicht hierbei um die beste Cloud-Plattform auf dem Markt handelt. Sie bietet Entwicklern eine hervorragende Flexibilität, wobei diese immernoch auf ihre vorhandenen technischen Skills z.B. in .NET, Visual Studio und SQL Server zurückgreifen können.

Kosten zählen immer!

Obwohl wir eine großartige Plattform erkennen, sind wir trotzdem unsicher ob Windows Azure erfolgreich sein wird. Der Hauptgrund darin besteht in den fixen Kosten für Leerlauf-Hosting. Darunter verstehen wir die Kosten um die Anwendung allein online zu halten, ohne das auch nur ein Benutzer die Applikation verwendet. Für diese Aufgabe erzeugt unsere kleine Anwendung mit zwei Rollen, einer Message Queue und Table Storage (keine SQL DB eingebunden) monatliche Kosten von über 130€! Der Hauptanteil kommt dabei von den beiden Rollen und ich kann nur sagen: wir sind nicht glücklich mit dieser Situation.
Mit unserer Kritik sind wir dabei nicht allein. Die Kosten von Windows Azure werden aktuell heiß debattiert und das Hosting kleiner Applikationen auf Azure preisgünstiger zu machen ist steht auch an höchster Stelle bei Entwicklern, die auf der My Great Windows Azure Idea-Webseite abgestimmt haben. Verschiedene BlogBeiträge und Diskussionen gehen in dieselbe Richtung. Als Entwickler realisierten, dass Kosten auf Windows Azure zeitbasiert erhoben werden und nicht abhängig von der tatsächlich benötigten CPU-Zeit verstanden sie sofort, dass ein Hosting auf Windows Azure um ein Vielfaches teurer ist im Vergleich zu anderen Angeboten auf dem Markt.
Stellen wir noch ein anderes Rechenbeispiel für Leerlauf-Kosten an. Stellen wir uns eine kleine Start-Up-Anwendung mit 2 Rollen vor (kleine Instanzen), 1 Web-DB und 1 AppFabric Service Bus-Verbindung, die 24h am Tag auf Windows Azure läuft und auf Benutzer wartet. Dieses Szenario führt zu monatlichen kosten von ca. 137€, was jährliche Kosten von über 1610€ verursacht. Diese Leerlauf-Kosten sind fixe Kosten in diesem Szenario, welche die Einstiegsbarriere angeben welche akzeptiert werden muss, allein um die Anwendung ohne jeglichen Traffic online zu halten. Ist nicht eine der Grundideen des Cloud Computings fixe Kosten niedrig zu halten und in variable Kosten zu verwandeln? Windows Azure folgt diesem Prinzip zumindest nicht auf einem angemessenen Level für kleine Applikationen… Folglich ist es nicht attraktiv für Start-Ups und kleine Firmen die sich für die gleichen (oder geringere) Kosten auch einen Server kaufen können und dabei volle Flexibilität erhalten.

Konkurrenten

Doch was ist eigentlich mit den anderen Anbietern im Cloud Computing-Umfeld und der Attraktivität ihrer Angebote? Starten möchte ich mit Shared Hosting als Möglichkeit Infrastruktur und Applikations-Hosting auszulagern. Shared Hosting ist um ein Vielfaches billiger als Hosting auf Windows Azure. Natürlich offeriert Windows Azure zusätzliche Funktionen wie z.B. Deployment, Management und Skalierbarkeit. Doch der Punkt ist, dass diese Dinge für die wenigsten Entwickler zählen, die sich anfänglich für Windows Azure interessieren. Für die meisten Entwickler, Firmen und deren Applikationen rechtfertigen diese Funktionen in keinster Weise die höheren Kosten des Hostings auf Windows Azure im Vergleich zu Shared Hosting.
Google AppEngine Doch kommen wir einmal zu den “richtigen” Cloud-Anbietern. Google bietet mit seiner AppEngine eine wertvolle Menge an freien Quotas und auch bei der Abrechnung von CPU-Ressourcen sind sie auf dem richtigen Weg. Google berechnet hier nur den Verbrauch von tatsächlicher CPU-Zeit (in Kontrast zu der uhrzeit-basierten Abrechnung von Azure), wodurch kein Leerlauf-Hosting in Rechnung gestellt wird.
Amazon EC2Amazon rechnet mit seinem EC2-Angebot Ressourcen wie auch Windows Azure uhrzeit-basiert ab, bietet Anwendern allerdings die volle Flexibilität um VMs beliebig zu konfigurieren.
Schlussendlich haben wir noch Microsoft mit Windows Azure, welches keine der Vorteile der anderen Angebote mit sich bringt. Auf der einen Seite werden CPU-Ressourcen bei Windows Azure uhrzeit-basiert abgerechnet, wodurch auch die Leerlauf-Zeit von Applikationen in Rechnung gestellt wird. Auf der anderen Seite ist Windows Azure VM-basiert, wobei jede “Role” ein Applikations-Fragment darstellt, welches 1:1 auf eine VM abgebildet wird. Der gravierende Nachteil hierbei ist, dass nur eine einzige Role in einer VM-Instanz enthalten sein kann. Dadurch erhält man nichts von der Flexibilität von Amazons EC2 VMs.
Microsoft sollte auf jeden Fall sein Role/VM-basiertes Skalierungsmodell und/oder die uhrzeit-basierte Abrechnung überdenken. Mit dem derzeitigen Model ist Azure in keinster Weise für Hobby-Entwickler, Start-Ups und kleinere Firmen interessant. die Einstiegshürde ist viel zu hoch und die Skalierbarkeit ist zu eingeschränkt. Warum sollte irgendeine kleinere Firma Windows Azure gegenüber der AppEngine oder EC2 bevorzugen? Ich weiß es nicht…
Doch was sind die Implikationen dieser Unattraktivität für Hobby-Entwickler, Start-Ups und kleine Firmen? Vielleicht können wir ja etwas aus der Vergangenheit ableiten, also gehen wir einmal auf eine kleine Zeitreise zurück in der Geschichte…

Ein kurzer historischer Blick

OS/2 Warp Vor einigen Tagen erzählte mir mein seniorer Kollege Alexander Jung Geschichten vom Aufstieg von Windows und dem Fall von OS/2 Warp (dies war vor meiner aktiven Computerzeit, sodass es sehr interessant war diesen überlieferten Geschichten aus längst vergangenen Zeiten zu lauschen…). Er erzählte mir dass OS/2 im Vergleich zu Windows auf der technischen Seite herausragende Funktionen besaß, doch es konnte den OS-Krieg nicht gewinnen. Es wurde von Windows geschlagen und starb einen langsamen und schmerzhaften Tod…
Ein Grund den er dafür sieht ist die mangelhafte Anziehung von Hobby-Entwicklern und die Unfähigkeit eine größere Entwicklergemeinschaft um OS/2 herum aufzubauen. Windows kam hingegen mit einen günstigen Compiler daher welcher es jedem Entwickler ermöglichte eigene Windows-Software zu entwickeln. Microsoft gelang es Hobby-Entwickler anzuziehen, was in einem großen Software-Pool auf Shareware, Freeware etc. resultierte und zu einer großen Entwicklergemeinschaft inkl. entsprechender Wissensbasis zur Windowsentwicklung führte. OS/2 Warp versagte in diesem Aspekt: der IBM-Compiler war teuer (> 1000 DM) und trotz dass die Plattform und die technischen Features großartig waren konnten aufgrund dieser hohen Einstiegshürde nur wenige Entwickler für dieses System begeistert werden. OS/2 schaffte es nicht eine kritische Masse an Entwicklern zu mobilisieren und damit auch Entwicklerwissen und als Endergebnis Software für die Benutzer zu erzeugen.

Hobby-Entwickler zählen!

Ich komme nicht umhin starke Parallelen zwischen den Strängen von OS/2 und Windows Azure zu sehen, was den Kostenaspekt betrifft. Microsoft sollte es besser wissen! Sie sollten aus der Vergangenheit lernen und von den Fehlern lernen, die andere bereits vor ihnen gemacht haben (erst recht in Hinblick auf den Anspruch, der mit Azure verfolgt wird). Es ist essentiell eine breite Masse von Entwicklern zur Nutzung von Windows Azure zu bewegen und ihnen zu ermöglichen ihre Ideen zu verwirklichen und eine nächste Welle an Killer-Applikationen zu entwickeln. Mit den aktuellen Kosten zieht Microsoft nur sehr wenig Entwickler an, welche Erfahrungen mit der Plattform machen können. Doch das ist ein großer Fehler!
Microsoft kann schwere Türen zu großen Business-Firmen aufschlagen wenn es ihnen gelingt, Windows Azure Hobby-Entwicklern und kleineren Firmen näher zu bringen. Entwickler und Architekten würden dann ihre Erfahrungen mit der Plattform aus ihrem privaten (Hobby-) Umfeld mit in ihre Firmen nehmen und könnten Windows Azure in ihrem Berufsumfeld vorantreiben, wenn sie danach gefragt werden oder die Entscheidung für die Plattform einer neuen Applikation fallen soll. Folglich würde auch die Einstiegshürde für größere Firmen stark gesenkt werden: Entwickler, die Erfahrungen mit der Plattform machen konnten, wären in der Lage ihr Wissen an Kollegen weiterzugeben. Dies kann insgesamt zu einer Kettenreaktion führen und einen exponentiellen Anstieg von Entwicklern für Windows Azure bewirken. Es wäre die beste und kostengünstigste Werbung für Windows Azure die Microsoft bekommen kann.
Aktuell bleibt festzustellen dass nur wenige Entwickler Windows Azure mit gutem Gewissen weiterempfehlen werden. Bitte Microsoft: die Community zählt! Realisiert das Potential eurer Plattform und seht die Implikationen, die mit mit einer höheren Menge an Hobby-Entwicklern auf Windows Azure verbunden sind.

Notwendigkeit nach einem “Mini Azure”-Angebot

Ein weiterer Vorschlag: Microsoft sollte ein “Mini Azure”-Paket als neues Angebot seiner Azure-Plattform anbieten. Geringe Kosten (<10€ pro Monat), geringe Ressourcen, keine dedizierten Maschinen, schwache SLAs, aber 24h am Tag an 7 in der Woche online – einfach nur um Entwicklern die Möglichkeit zu geben Erfahrungen mit der Plattform zu machen. Microsoft muss diese hohe Einstiegshürde beseitigen, wenn sich die OS/2-Story nicht wiederholen soll. Die großartige Plattform führt zu nichts und wird nicht erfolgreich sein, wenn sich von niemandem verwendet wird…
Mini Azure wurde bereits von Jouni Heikniemi vorgeschlagen, er und andere haben weiterführende Ideen in diesem Bereich, die einen Blick wert sind.

Schlussbemerkungen

Zusammenfassend lässt sich sagen: wenn sich nichts ändert fürchte ich dass es Microsoft schwer haben wird Windows Azure erfolgreich zu positionieren. Zumindest fürchte ich, dass es anfänglich ein Rohrkrepierer werden wird. Und das ist eine äußerst schlechte Basis für zukünftige Entwicklungen. Im Moment verscheucht Microsoft jede Menge Entwickler, die später nur schwer davon überzeugt werden können die Plattform doch zu nutzen. Ich sage es nochmals: wir sehen hier eine richtig gute Entwicklungsplattform. Aber die beste Plattform wird nirgendwohin führen, wenn es für Entwickler zu teuer ist diese Plattform nutzen zu wollen.