Microsoft Azure bietet zur Ausführung eigener Anwendungen in der Public Cloud vier Optionen: Virtual Machines, Cloud Services, Websites und Mobile Services. Diese Blog-Serie gibt Hinweise zur Entscheidung für die zu einem konkreten Vorhaben beste Alternative, Die Serie ist unterteilt in 7 Teile:

Dieser Teil geht auf Cloud Services ein.

Konzept der Websites

Microsoft Azure Websites stellen eine kostengünstige, aber trotzdem gut skalierbare Hosting-Variante für Websites bereit. Im Grunde sind Websites das Pendant einer virtuellen Serverumgebung eines Hosting-Anbieters. Über das Microsoft Azure Portal können sehr schnell und einfach Umgebungen eingerichtet, mit zahlreichen Web Frameworks (ASP.NET, Java, PHP, Node.js, ...) und Anwendungen (Joomla, Wordpress, Drupal, ...) vorkonfiguriert und von verschiedenen Entwicklungsplattformen aus mit Webanwendungen bestückt werden. Hierbei werden als Deployment-Optionen unter anderem GIT, FTP, WebDeploy und TFS Deploy unterstützt. Das Portal bietet hierzu verschiedene Deployment-Skripte an, die in eigene Entwicklungsumgebungen importiert werden können. Damit können Websites neben Windows auch in Nicht-Microsoft-Umgebungen wie Linux oder MacOS entwickelt und dann auf Microsoft Azure betrieben werden. Auch ist ein automatisiertes Deployment direkt aus Quellcode-Verwaltungen (unter anderem Git, TF Service, Dropbox, Skydrive, …) heraus möglich. Sobald ein Entwickler neuen Code einstellt, erfolgt automatisch ein neues Deployment (welches über das Portal auch rückgängig gemacht werden kann), so dass eine Website stets auf dem aktuellsten Quellcode-Stand ist.

image

Abb 1: schematischer Aufbau einer Website
(Quelle:
Windows Azure Poster)

Zur Ausführung der Websites stehen mehrere Betriebsarten zur Verfügung: im "Shared"-Modell werden eine oder mehrere Instanzen der Anwendung in einer Multi-Mandanten-Umgebung betrieben, im kostenlosen „Free“-Modell ist die Zahl der Instanzen auf eine einzige beschränkt, im "Basic"-Modell erfolgt der Betrieb in exklusiv für die Anwendung bereitgestellten virtuellen Maschinen. Das „Standard“-Modell bietet darüber hinaus noch Backup und Restore, Auto-Scaling, Webjobs, Scheduler Unterstützung und das stufenweise Publishing über eine oder mehrere Staging-Umgebung.

Zwischen den Betriebsarten kann flexibel gewechselt werden. Damit ist sowohl Scale-out (Hinzuschalten zusätzlicher Instanzen gleicher Größe) als auch Scale-up (Vergrößerung der bestehenden Instanzen im „Basic“- oder „Standard“-Modell) zur Anpassung der Umgebung an sich ändernde Last möglich. Dies kann im „Standard“-Modell mit der AutoScale-Funktion auch (in Abhängigkeit von der CPU-Last) automatisiert werden. Konfiguration und Verwaltung der zur Ausführung von Websites genutzten virtuellen Maschinen wird vollständig durch Microsoft Azure übernommen.

Für die Persistierung von Daten stehen als Datenbanken MySql und Microsoft Azure SQL Database zur Auswahl. Aus Websites heraus können natürlich auch die weiteren Dienste der Microsoft Azure Plattform genutzt werden. So kann eine Website Authentifizierung von Benutzern über das Azure Active Directory durchführen oder einen in einer Virtual Machine betriebenen SQL Server aufrufen.

Entwicklung von Websites

Die Entwicklung einer Website unterscheidet sich nicht von der Entwicklung einer klassischen Web-Anwendung, die lokal in einem Internet Information Server oder bei einem Hoster betrieben werden soll. Entwickler, die sich in den unterstützten Technologien (ASP.NET, PHP, Java, …) auskennen, können unmittelbar für Azure Websites entwickeln.

Im Falle von ASP.NET können Web-Anwendungen direkt aus Visual Studio via Publish-Befehl in eine Website installiert werden. Alternativ können auch diverse Quellcode-Verwaltungssysteme (TFS, Git, GitHub, etc.) so konfiguriert werden, dass sie nach Übertragung von Änderungen aus der Entwicklungsumgebung automatisch ein Deployment auf die konfigurierte Website anstoßen. Der Aufwand für den Entwickler ist somit minimal. Innerhalb von Minuten kann eine Web-Anwendung über eine Website in der Cloud bereitgestellt werden. Entsprechende Automatismen existieren in Eclipse für Java, PHP etc.

Die Umgebung einer Website, d.h. das zugrundeliegende Betriebssystem, die Skalierungseinstellungen, Backups, Failover werden automatisiert von Azure verwaltet. Der Entwickler kann sich vollständig auf die Anwendungslogik konzentrieren und muss sich nicht mit dem Infrastruktur-Setup auseinandersetzen. Auf der anderen Seite sind die Einflussmöglichkeiten auf die Umgebung (z.B. Öffnen von Ports, Konfiguration via Remote Desktop, …) auch stark begrenzt. Hier muss der Anwender also abwägen zwischen schneller, flexibler Bereitstellung und individuellen Einflussmöglichkeiten auf die Umgebung.

Fazit

Websites stellen die einfachste (aber dennoch sehr leistungsfähige) Ausführungsoption für eigene Web-Anwendungen dar. Die Entwicklung für Websites unterscheidet sich nicht von der Entwicklung einer nicht auf Azure betriebenen Web-Anwendung. Der Einlernaufwand für die Entwickler ist minimal, d.h.

  • wann immer möglich, d.h. wenn es keinen entscheidenden Grund dagegen gibt, sollten Websites als Ausführungsoption gewählt werden.

Cloud Services oder Virtual Machines sollten nur dann verwendet werden, wenn z.B. einer der folgenden Anforderungen gegeben ist

  • Es wird direkter Zugriff auf Services-Instanzen via Remote Desktop benötigt
  • Linux als Umgebung wird benötigt (wird derzeit nur von Virtual Machines unterstützt)
  • Spezielle Umgebungs- und Netzwerk-Konfigurationen werden benötigt (spezielle Ports, Virtual Network etc.)

Weitere Informationen

Informationen zu Websites

Informationen zur allgemeinen Entscheidung für ein Ausführungsmodell