Serie: Eigene Anwendungen auf Microsoft Azure - Teil 6: Auswahl des besten Ausführungsmodells


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 nun auf die Frage ein, welches der Ausführungsmodelle in welcher Situation das bestgeeignete ist.

Alternative Ausführungsmodelle

In der ersten Teilen dieser Blog-Serie wurden die vier Modelle vorgestellt, die unter Azure zur Ausführung eigener Anwendungen oder Anwendungsteile zur Verfügung stehen:

  • Virtual Machines
    zur Ausführung eigener oder vorgefertigter persistenter virtueller Maschinen nach dem Infrastructure-as-a-Service Ansatz (IaaS).
  • Cloud Services
    zur Ausführung ein- oder mehrschichtiger Cloud Apps in automatisiert verwalteten nicht-persistenten virtueller Maschinen zweierlei Arten (Web oder Worker Roles) nach dem Platform-as-a-Service Ansatz (PaaS).
  • Websites
    zum Hosting eigener Web-Anwendungen in automatisiert bereitgestellten, skalierbaren Umgebungen, die mit unterschiedlichen Runtimes (ASP.NET, PHP, Node.JS, Java, …) und Frameworks (WordPress, …) vorkonfigurierbar sind.
  • Mobile Services
    zur schnellen Bereitstellung von Backends für mobile Anwendungen verschiedener Plattformen (Windows Phone, Windows Store, iOS, Android, …) auf Basis der Websites Plattform nach dem Backend-as-a-Service Ansatz (BaaS).

Bereits die Kurzbeschreibung der einzelnen Modelle gibt hinweise darauf, wann welches Modell das bestgeeignete ist.

Vergleich der wichtigsten Funktionalitäten

Letztlich kommt es häufig auf einzelne Features und Funktionalitäten an bzw. darauf, in welchem Modell diese verfügbar sind, welches Ausführungsmodell für ein konkretes Implementierungsvorhaben verwendet werden sollte. Folgende Tabelle gibt einen Überblick über die Verfügbarkeit einzelner Funktionalitäten in den einzelnen Ausführungsmodellen (sie ist ein Ausschnitt aus der etwas umfangreicheren Tabelle in der Azure-Dokumentation):

Feature Websites und
Mobile Services
Cloud Services
(Web Role)
Virtual Machines
Zugang zu weiteren Azure Services
(Service Bus, Storage, SQL Database)
Betrieb einer Web-Tier oder Webservice-Tier mehrschichtiger Anwendungen
Betrieb einer Middle-Tier mehrschichtiger Anwendungen  
Integrierter My-SQL-as-a-Service Support
Mehrere Deployment-Umgebungen (Staging und Produktion)  
Scale-Up ohne Redeployment    
Unterstützung eines Virtual Networks  
Unterstützung für den Traffic Manager
Remote Desktop Zugang zu den virtuellen Maschinen  
Linux als Gast-OS    
.NET-Unterstützung
Java-Unterstützung (●)
PHP-Unterstützung (●)
Automatisches Einspielen von Gast-OS-Upgrades und -Patches  
Nahezu sofort verfügbares Deployment    
Code-Deployment aus TFS
Code-Deployment aus GIT, FTP (●)
Remote Debugging

● = verfügbar, (●) = kann implementiert werden

Dabei sollte nicht vergessen werden, dass sich die Modelle problemlos kombinieren lassen. D.h. es ist leicht möglich, eine in einer Website betriebene Web-Anwendung auf einen in einer Virtual Machine betriebenen Datenbankserver (SQL Server, MySQL, Oracle, …) zugreift.

Szenarien

Für einige Szenarien können recht einfach erste Empfehlungen für die Ausführungsoption genannt werden (detailliertere Beschreibung in Teil 1 dieser Serie):

Szenario Naheliegende
Ausführungsoption
Hosting einer ASP.NET- oder PHP-basierten Webseite Websites
Betrieb einer bestehenden Linux-basierten LOB-App Virtual Machines
Bereitstellung eines REST-Backends für mobile Anwendungen Mobile Services
Cloud-Anwendung, die auf Ressourcen im lokalen Unternehmensnetzwerk zugreifen soll Cloud Services oder
Virtual Machines

Diese Tabelle gibt nur einen ersten Hinweis auf eine geeignete Alternative. Vor einer konkreten Umsetzung sollte diese noch genauer betrachtet werden. In den weiteren Teilen dieser Blog-Serie sollen die einzelnen Alternativen deshalb genauer vorgestellt werden.

Fazit

Mobile Services sollten immer dann gewählt werden, wenn…

  • für Mobile Anwendungen Backend-Dienste bereitgestellt werden sollen, da hier die Entwicklerproduktivität mit Abstand am höchsten ist.

Websites sollten immer dann gewählt werden, wenn…

  • es keinen entscheidenden Grund dagegen gibt

Cloud Services sollten immer dann gewählt werden, wenn…

  • die Vorteile einer automatisch verwalteten Umgebung im Sinne eines PaaS-Ansatzes sollen genutzt werden sollen.
  • die Flexibilität eines direkten Zugriffs auf die virtualisierte Umgebung (d.h. administrativer Zugriff auf einzelne Instanzen) benötigt wird
  • Skalierung ggf. auch nur in einzelnen Rollen erfolgen soll.
  • die Anwendungslogik (aufgrund der nicht-persistenten Instanzen) zustandslos implementiert werden kann (Persistenz selbst implementiert wird).

Virtual Machines sollten immer dann gewählt werden, wenn…

  • Linux als Gast-OS für die eigene Anwendung benötigt wird
  • die eingesetzten virtuellen Maschinen automatisch (in Blob Storage) persistiert werden sollen.
  • Es werden administrativer Zugriff und entsprechende Konfigurationsmöglichkeiten benötigt

Natürlich sind dies alles nur erste Hinweise. Die hier angeführten Gründe stellen keinen Anspruch auf Vollständigkeit. An dieser Stelle sei nochmals wiederholt:

  • Die Ausführungsmodelle lassen sich miteinander kombinieren.
  • Ein Wechsel des Ausführungsmodells ist möglich (aber ggf. mit etwas Aufwand verbunden).

Weitere Informationen

Comments (0)

Skip to main content