Vorhersage: Bewölkt

Fünf Gründe für die Arbeit mit Windows Azure

Joseph Fultz

 

Joseph FultzAlle sprechen heutzutage über die Cloud. Es heißt, sie sei ein großer Schritt in der Entwicklung des Webs und werde unsere Methoden beim Entwickeln, Bereitstellen und Verwalten von Anwendungen verändern. Allerdings hat noch nicht jeder herausgefunden, welche Folgen die Cloud tatsächlich für ihn hat. Dies betrifft insbesondere diejenigen mit mittleren bis großen Infrastrukturen und relativ gleichmäßiger Auslastungsnutzung, wo die kapitalisierten Kosten im Vergleich zu den Betriebskosten der Cloud vorteilhaft sind. Wenn Ihre Infrastruktur jedoch kleiner ist oder Sie ein dynamisches Nutzungsmodell besitzen, ist die Cloud – Windows Azure – ein Kinderspiel. Darüber hinaus bietet Windows Azure für Unternehmen, die sehr prozessorientiert sind und in denen die Bereitstellung einer Entwicklungsumgebung äußerst langwierig ist, eine großartige Plattform für die schnelle Entwicklung von Prototypen.

Mit diesen Hintergedanken möchte ich Ihnen ein paar Dinge über Windows Azure erzählen, die Sie hoffentlich dazu bewegen werden, das Magazin zu schließen und Windows Azure zu öffnen.

Großartige Toolintegration

Bisher konnten die Tools und die Integration in Visual Studio für die Windows Azure-Entwicklung als „gut“ bewertet werden, doch dies entwickelt sich derzeit schnell zu „ausgezeichnet“. Sie finden das neueste Toolset im Windows Azure Developer Center unter bit.ly/xh1CAE.

Wie in Abbildung 1 dargestellt, können Sie den gewünschten Rollentyp und die gewünschte Sprache für ein neues Projekt auswählen. Unabhängig von Ihrer Wahl können Sie die Vorteile der Toolintegration sofort nutzen. Nach meiner Erfahrung finden die meisten die Entwicklungsemulatoren, das Laufzeitdebuggen sowie die integrierte Entwicklung besonders nützlich.

Creating a New Project
Abbildung 1: Erstellen eines neuen Projekts

Die Windows Azure-Entwicklungsumgebung besteht aus zwei Emulatoren, mit denen Sie Ihre Anwendungen auf dem Entwicklungscomputer vor der Bereitstellung unkompliziert ausführen und debuggen können (siehe Abbildung 2). Mithilfe des Windows Azure-Serveremulators können Sie Ihren Dienst lokal ausführen, um ihn zu testen und zu debuggen. Der Speicheremulator ermöglicht dagegen das Testen der lokalen Speicherung.

The Windows Azure Compute Emulator and Storage Emulator Running
Abbildung 2: Der Windows Azure-Serveremulator und der Speicheremulator während der Ausführung

Zum geeigneten Zeitpunkt ist für die Bereitstellung für die Staging- oder Produktionsumgebung nur ein Klick mit der rechten Maustaste erforderlich. Die Tools übernehmen das Verpacken, Verschieben und Bereitstellen der Rollen in Ihrer Lösung. Der Status wird über Visual Studio angezeigt (siehe Abbildung 3).

Deployment Progress for Windows Azure as Reported Back Through Visual Studio
Abbildung 3: Bereitstellungsstatus für Windows Azure gemäß der Meldung durch Visual Studio

Am Anfang bestand ein großes Problem mit Windows Azure darin, dass entwickelter Code, der lokal perfekt funktionierte, nach der Bereitstellung Fehler oder eine schlechte Leistung aufweisen konnte. Glücklicherweise konnte dieses Problem mit der Einführung von IntelliTrace und der Profilerstellung reduziert werden. Diese beiden Features können Sie beim Veröffentlichen Ihrer Lösung aktivieren (siehe Abbildung 4).

IntelliTrace and Profiling Settings in Windows Azure
Abbildung 4: IntelliTrace- und Profilerstellungseinstellungen in Windows Azure

Nichts ist besser geeignet für das Debuggen schwer zu reproduzierender Fehler – insbesondere derjenigen, die sich auf die Produktionsumgebung beschränken – als IntelliTrace. Im Wesentlichen wird die Ausführung Ihrer Anwendung mithilfe von IntelliTrace aufgezeichnet, sodass sie anschließend abgespielt werden kann. Wenn Sie beispielsweise die Rollen mit aktiviertem IntelliTrace bereitgestellt haben, können Sie die IntelliTrace-Protokolle anzeigen und dann Schritt für Schritt die einzelnen Ereignisse überprüfen (siehe Abbildung 5).

Debugging Windows Azure with IntelliTrace in Visual Studio
Abbildung 5: Debuggen von Windows Azure mithilfe von IntelliTrace in Visual Studio

Sobald Sie sich in dem Thread befinden, können Sie jeden beliebigen Code daraufhin überprüfen, was sich während der Ausführung verändert hat. Wenn Ihre Site fehlerfrei (oder so fehlerfrei wie möglich) ist und Sie bereit sind, Leistungsprobleme zu identifizieren, können Sie IntelliTrace deaktivieren und die Profilerstellung aktivieren. Wie in Abbildung 4 dargestellt, können Sie den gewünschten Typ für die Profilerstellung auswählen. Wenn Sie beispielsweise die Aufrufzeit für einzelne Methoden ermitteln möchten, können Sie „Instrumentation“ auswählen. Mithilfe dieser Methode werden detaillierte Zeiterfassungsdaten gesammelt, die für eine fokussierte Analyse und das Analysieren von Eingabe- und Ausgabeleistungsproblemen herangezogen werden können. Sie eignet sich auch zum Erfassen detaillierter Zeitinformationen zu einem Codeabschnitt und zum Verständnis der Auswirkungen von Eingabe- und Ausgabeoperationen auf die Anwendungsleistung. Sie können anschließend die Site so lange überprüfen und die Codebasis ausführen, bis Sie zufrieden sind. Dann zeigen Sie mithilfe der Option „Profilerstellungsbericht anzeigen“ eine Instanz im Server-Explorer an. Die Informationen werden in Visual Studio abgerufen, und es wird ein Bericht zusammengestellt (Abbildung 6 enthält ein Beispiel).

A Profiling Report
Abbildung 6: Profilerstellungsbericht

In dem Bericht werden die CPU-Auslastung im Lauf der Zeit sowie der „Langsamste Pfad“ angezeigt. Diese beiden Punkte sollen Ihnen Anhaltspunkte für Ihre Arbeit liefern. Ein direkter Link im Abschnitt „Langsamster Pfad“ ermöglicht Ihnen darüber hinaus tiefergehende Überprüfungen sowie die Anzeige einzelner Zeitangaben für jede Funktion. Auf der Hauptseite weist ein übersichtliches Diagramm auf die Funktionen hin, die den größten Teil der individuellen Arbeit leisten. IntelliTrace und die Profilerstellung sind direkt in Visual Studio verfügbar und bieten deutliche Vorteile, nicht nur hinsichtlich der Produktivität, sondern auch der Produktqualität.

Sie werden bei der Arbeit in JavaScript, PHP oder Java nicht alleingelassen, und müssen nicht Ihren eigenen Zugriff auf die Windows Azure-Plattform schreiben. Microsoft bietet SDKs und Ressourcen hierfür unter bit.ly/uGqPNh.

Leistung und Skalierbarkeit

Sie haben sicherlich in den letzten Jahren gehört, dass eines der zentralen Versprechen der Cloud die Fähigkeit enthält, nach Bedarf zu skalieren. Bei virtuellen Computern (VMs) können Sie für eine größere Rolle einfach häufig mehr zahlen, und Sie erhalten mehr Ressourcen. Bei Microsoft SQL Azure sind die Optimierungen, nun, wie soll ich es ausdrücken, ein wenig mehr manuell.

Natürlich ist es praktisch zu wissen, dass Sie durch eine Bereitstellung in der Cloud die Farm skalieren können. Häufig stellt sich aber vielmehr sofort die Frage nach der individuell benötigten Rollengröße. Die Antwort darauf lautet, dass dies vom Datenverkehr und Ihrer Tätigkeit abhängt. Sie können auf Grundlage der vergangenen Erfahrungen und der Spezifikationen zur Rollengröße eine fundierte Vermutung anstellen (siehe Abbildung 7).

Abbildung 7: Größenspezifikationen für virtuelle Computer

Größe des virtuellen Computers CPU-Kerne Arbeitsspeicher Speicherplatz für lokale Speicherressourcen in Web- und Workerrollen Festplattenspeicherplatz für lokale Speicherressourcen in einer VM-Rolle Zugewiesene Bandbreite (MBit/s)
Extra Small (Sehr klein) Freigegeben 768 MB

19.480 MB

(6.144 MB sind für Systemdateien reserviert.)

20 GB 5
Small (Klein) 1 1,75 GB

229.400 MB

(6.144 MB sind für Systemdateien reserviert.)

165 GB 100
Medium (Mittel) 2 3,5 GB

500.760 MB

(6.144 MB sind für Systemdateien reserviert.)

340 GB 200
Large (Groß) 4 7 GB

1.023.000 MB

(6.144 MB sind für Systemdateien reserviert.)

850 GB 400
Extra Large (Sehr Groß) 8 14 GB 2.087.960 MB (6.144 MB sind für Systemdateien reserviert.) 1.890 GB 800

Sicherlich entspricht eine dieser Konfigurationen Ihren Bedürfnissen, insbesondere in Kombination mit den restlichen Rolleninstanzen in der Farm. Beachten Sie, dass alle Attribute ansteigen, einschließlich der verfügbaren Netzwerkbandbreite, was häufig von zweitrangiger Bedeutung ist. Beachten Sie bitte auch, dass Sie nicht wirklich raten müssen. Aktivieren Sie stattdessen die oben besprochene Profilerstellung, und sammeln Sie in den Instanzen tatsächlich vorhandene Metriken, um die Leistung zu bewerten. Basierend auf den Ergebnissen der Profilerstellung können Sie die VM-Größe anpassen und erneut Profilerstellungsinformationen sammeln, bis der Anhaltspunkt erreicht wird. Bei Randbedingungen müssen Sie die am besten geeignete Auswahl treffen oder eine alternative Lösung finden. Wenn Ihre Site viel Inhalt hat und nicht sehr dynamisch ist, können Sie eine der höheren Rollenspezifikationen wählen oder zum Netzwerk für die Inhaltsübermittlung für Windows Azure wechseln.

Und nun ein paar gemischte Neuigkeiten: SQL Azure bietet nicht immer die Leistung, die Sie möglicherweise mit Ihrer eigenen privaten Instanz erhalten. Dafür ist die Leistung konsistent. Sie können Folgendes unternehmen, um die bestmögliche Leistung und ein optimales Laufzeitverhalten zu erzielen:

  1. Stellen Sie sicher, dass sich SQL Azure und Ihre Computerinstanzen im gleichen Datencenter befinden.
  2. Optimieren Sie Ihre Abfragen, und passen Sie Ihre Datenstrukturen an die Abfragen an.
  3. Machen Sie keine Abstriche bei der Wiederholungslogik, und stellen Sie sicher, dass sich die Wiederholungslogik in Ihrem Code befindet und getestet wurde.
  4. Wiederholen Sie Schritt 2.

Einer der größten Fehler, den viele beim Optimieren einer Site begehen, ist das Erhöhen der Hardwaregröße, ohne gleichzeitig andere Anpassungen vorzunehmen. Gelegentlich schuf dies ein wenig Abhilfe. Bei Spitzenbelastungen trat das Problem jedoch sofort wieder auf, und zwar mit noch schlimmeren Symptomen als zuvor. Dies wurde dadurch verursacht, dass die zusätzliche Leistung weitere und noch schneller auftretende Konflikte verursachte, das zugrundeliegende Problem jedoch weder löste noch verringerte. Ich meine es also ernst, wenn ich vorschlage, Schritt 2 zu wiederholen. Sie können nicht einfach mehr Hardware einsetzen und hoffen, dass es sich nicht um ein Deadlockproblem handelt. In dieser Hinsicht kann das SQL Azure Profiler-Tool Sie unterstützen. Ich schlage vor, Sie beginnen vor der Bereitstellung in der Cloud mit der Optimierung auf Ihrer lokalen Instanz. Anschließend identifizieren Sie mithilfe von SQL Azure Profiler Änderungen und nehmen diese bei Bedarf in der Cloud vor.

Abschließend möchte ich Ihnen noch eine Strategie zum Vergrößern einer SQL Azure-Datenbank vorstellen: den Verbund, auch als „Datensharding“ bekannt. Hierbei handelt es sich um eine Technik der horizontalen Partitionierung von Daten über mehrere physische Server hinweg, um eine Anwendungsskalierung zu bieten. Hierdurch werden zwar individuelle Abfragezeiten reduziert, aufgrund der Verstreuung der Abfragen auf Zielinstanzen und der Erfassung von Ergebnissen nach dem Abschluss wird der Prozess jedoch komplexer. Sie profitieren zum Beispiel von dem Ausführen von CRUD-Operationen (Create, Read, Update, Delete) und kleineren Datensätzen sowie der parallelen Ausführung. Dafür besteht Ihr Einsatz im Aushandeln des Zugriffs über mehrere Shards hinweg. Nichtsdestotrotz verwalten einige der größten Sites Abfragen mithilfe von Sharding, Vorabruf und Zwischenspeicherung. Und Sie verwenden diese Sites jeden Tag ohne großartige Einbußen bei der Leistung.

Verwaltbare Infrastruktur

Früher konnte nicht so einfach ermittelt werden, was bei einer Windows Azure-Bereitstellung passiert. Diese Zeiten gehören aber längst der Vergangenheit an. Zum einen bietet Microsoft ein sich ständig weiterentwickelndes Verwaltungsportal. Zum anderen ermöglicht ein Verwaltungspaket für System Center Operations Manager (SCOM) die zentrale Verwaltung der gesamten Infrastruktur an einem Ort.

Windows Azure schreibt alle Diagnosedaten in einen Speichercontainer. Sie können die Protokolle direkt nutzen und Berichte erstellen oder benutzerdefinierte Aktionen ergreifen Darüber hinaus können Sie Windows Azure-Anwendungen jedoch auch mithilfe von SCOM überwachen. Wer für die Verwaltung der Infrastruktur eines Unternehmens verantwortlich ist, tendiert zu konservativen Entscheidungen und möchte voll funktionsfähige Tools für die Überwachung einsetzen. Mit dem Einsatz einer bekannten Lösung wie SCOM können Sie die Bedenken überwinden, die das Infrastrukturverwaltungsteam hinsichtlich der Bereitstellung einer Cloud-Lösung haben könnte. SCOM ermöglicht die Überwachung des Status aller Windows Azure-Bereitstellungen sowie einen Drilldown in gehostete Dienste, Rollen und Rolleninstanzen. In dem Paket sind Benachrichtigungen für Dienste und Leistung enthalten. Ein Hauptvorteil besteht jedoch darin, dass Sie Ihre eigenen Regeln und Benachrichtigungen für Bereitstellungen und die zu sammelnden Daten erstellen können. Äußerst nützlich sind auch die integrierten Regeln zum Pflegen der Protokolle. Wie auch sonst, werden Protokolle an einem Punkt unhandlich, wenn sie nicht zwischendurch gelöscht werden. Zu diesem Zweck ist das Verwaltungspaket mit folgenden vordefinierten Regeln ausgestattet:

• .NET Trace Grooming

• Performance Counter Grooming

• Event Log Grooming

Sie können diese Regeln aktivieren und damit sicherstellen, dass Sie nicht die Kontrolle über Ihren Speicherplatz verlieren. Dies muss jedoch gegen die Anzahl von Transaktionen zum Ausführen der Aufgaben abgewogen werden. Das Überwachungspaket für System Center für Windows Azure Applications können Sie unter bit.ly/o5MW4a herunterladen.

Bekannter Code

Wenn eine neue Technologie auf dem Markt kommt, müssen wir uns häufig durch einen Berg an Informationen wühlen und umfassende Erfahrungen sammeln, bis wir uns auskennen: Denken Sie nur an die Migration aus Windows Forms zu Windows Presentation Foundation/Silverlight, die Wahl zwischen ASP.NET oder SharePoint oder an etwas Grundsätzlicheres, wie die Entscheidung zwischen prozess- oder objektorientierter Entwicklung. Dies ist das Besondere an der Cloud, insbesondere mit den verfügbaren Tools: Wenn Sie bereits Sites und Services erstellen, können Sie weiterhin Ihre .NET-Fähigkeiten und -Investitionen optimal einsetzen und sich direkt in die Cloud begeben.

Natürlich gibt es auch hier ein paar bewährte Methoden, die Sie sich aneignen sollten. Diese sind aber kaum umfassender als das, was Sie zur Optimierung von Entwurf und Entwicklung bereits leisten. Wenn Sie bereit sind, bietet die Plattform viele zusätzliche Features, die gelernt und genutzt werden können, um Ihre Lösung sicher und stabil zu machen und eine bestmögliche Leistung zu erzielen, ohne die Features oder Frameworks selbst zu schreiben.

Mitten in der Zukunft

Starten Sie jetzt. Das ist mein Rat. Gehen Sie zu azure.com, holen Sie sich die Tools, und fangen Sie an. Setzen Sie Windows Azure in Ihren Projekten als Prototyp ein. Bieten Sie damit in Ihren Projekten ansonsten schwierig zu erwerbende Ressourcen an. Wofür Sie es auch immer verwenden möchten, aber nutzen Sie es! Die Cloud ist unsere Zukunft, und sie wird bald so weit verbreitet sein wie Wasser und Strom. Es entstehen Cloud-Technologien, die konventionelle Konzepte der Datenverarbeitung sprengen und ein Modell entwickeln, das genau dort Rechenleistung bietet, wo, wann und wie sie gebraucht wird. Diesen Prozess möchten Sie sicherlich nicht verpassen.

Joseph Fultz ist Softwarearchitekt bei Hewlett-Packard Co. und Mitglied der HP.com Global IT-Gruppe. Zuvor war er Softwarearchitekt bei Microsoft und arbeitete gemeinsam mit dessen wichtigsten Unternehmens- und ISV-Kunden an der Definition von Architekturen und dem Entwurf von Lösungen.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Bruno Terkaly