BlogWeb-Anwendungen in Azure betreiben

Web-Anwendungen in Azure betreiben

Ein großer Teil, der im lokalen Rechenzentrum betriebenen Anwendungen ist Web-basiert – native Client-Anwendungen verlieren zunehmend an Bedeutung. Möchten Unternehmen solche Anwendungen migrieren, können sie wahlweise ihre Hyper-V/ESXi-VMs mit allen Vor- und Nachteilen von IaaS auf Azure-VMs ĂŒbertragen oder sie verwenden die Azure-App-Services und erhalten damit hochverfĂŒgbare Web-Anwendungen als PaaS.

Möchtest du bestehende Web-Anwendungen schnell und schmerzfrei auf Azure migrieren, ohne den bestehenden Quellcode anpassen zu mĂŒssen, ist eine Azure VM keine schlechte Wahl. FĂŒhrst du die Migration im großen Stil z. B. unter Zuhilfenahme von Azure Migrate (Link) durch, kannst du dabei auch auf die in Azure Migrate verfĂŒgbaren Assessment-Tools zurĂŒckgreifen, etwa fĂŒr ein möglichst optimales Sizing der Azure-VM in Hinblick auf Kosten und Performance. Trotzdem hast du vorher eine VM und hinterher eine VM mit allen Vor- und Nachteilen von IaaS, d. h. du musst dich um das Patching der Gastsysteme, der Laufzeitumgebungen (.Net, Java/Tomcat, Node etc.), des Webservers, ggf. der Datenbank und des Web-Servers selbst kĂŒmmern.

Soll deine Webanwendung hochverfĂŒgbar sein, musst du außerdem eine Loadbalancer und mehrere Instanzen deines Webservers einplanen, was bei den Kosten zu berĂŒcksichtigen ist. Verwendest du fĂŒr den Loadbalancer ebenfalls Azure-VMs, musst du diese auch hochverfĂŒgbar gestalten und ggf. Lizenzkosten z. B. fĂŒr F5 berĂŒcksichtigen. Hier hilft dann Azure Migrate nur noch bedingt.

Trotzdem ist eine so genannte Lift-&-Shift-Migration immer erste Wahl, wenn du keine Zeit oder Expertise hast, den Quellcode deiner Webanwendung Cloud-Ready zu machen. Es gibt aber durchaus auch andere Migrationsmuster. Microsoft liefert in seinem https://docs.microsoft.com/de-de/azure/cloud-adoption-framework/migrate/azure-best-practices/contoso-migration-overview Cloud Adoption Framework Beispiele fĂŒr Anwendungsmigrationen zu Azure. Das Umpacken (Refactoring) erfordert z. B. nur minimale Änderungen der Anwendungen, so dass du eine Verbindung mit Azure-PaaS (Platform-as-a-Service) herstellen und Cloud-Angebote nutzen kannst, wie z. B. die im folgenden erlĂ€uterten Azure App Services:

App Services und Azure App Service PlÀne

Unter Azure App Services versteht Microsoft eine Sammlung zu Diensten moderner Anwendungen als PaaS, darunter Web Apps, Static Web Apps, Mobil Apps, containerisierten Web Apps, API Apps. Im Prinzip gehören auch die serverlosen Dienste Logic Apps und Function Apps dazu. WĂ€hrend du bei den beiden Letztgenannten die Wahl zwischen serverlos und bereitgestellt hast, werden Web-Apps ĂŒber einen sogenannten App Service Plan (ASP) abrechnet. Ein solcher definiert die Infrastruktur bestehend aus einer Reihe von VM-Instanzen, bzw. Scalesets (mit Loadbalancern), die zum Bereitstellen deiner Web Anwendungen benötigt werden.

Im Gegensatz zu IaaS kĂŒmmert sich Microsoft komplett um die Bereitstellung und Betrieb der Web-Apps und der zugehörigen ServiceplĂ€ne also auch um die Hardware-Basis. Das umfasst auch die Pflege und das Patching der Laufzeitumgebung oder das automatische Sichern deiner Web-Anwendung(en). Du musst dich als Entwickler nur noch um deinen Anwendungs-Code kĂŒmmern. UnterstĂŒtzt werden die Laufzeitstapel .NET, Java, Node.js, PHP und Python (Windows) sowie .NET Core, Node.js, PHP oder Ruby (Linux). Service PlĂ€ne sind in unterschiedlichen Familien (Free, Shared, Basic, Standard, Premium und Isolated) und GrĂ¶ĂŸen (F1;D1;B1/2/3;S1/2/3;P1/2/3 usw.) verfĂŒgbar, die sich in Funktionen und Leistung (enthaltene Hardware) Funktionen unterscheiden. So enthĂ€lt beispielsweise der kleinste Plan F1 (Bild links) lediglich eine nicht nĂ€her bezifferte CPU-Leistung (Compute), auseichend Arbeitsspeicher sowie 1GB Disk-Speicher, um eine oder mehrere kostenlose Web-Apps im Summe 60 min am Tag ausfĂŒhren zu können. Weitere Features sind nicht enthalten. Der kostenpflichtige Produktion-Plan „P1V2“ hingegen enthĂ€lt z. B. 210 ACUs Compute-Leistung, 3,5 GB Arbeitsspeicher (pro Instanz) und 250 GB Festplattenspeicher zum AusfĂŒhren deiner Web Apps. 

Dazu kommen eine Reihe interessanter Funktionen, die im Plan enthalten sind wie z. B. die UnterstĂŒtzung fĂŒr „Benutzerdefinierte DomĂ€nen und SSL“, „automatische Skalierung“, „Bereitstellungsslots“ und globaler Lastausgleich mittels Traffic Manager. Außerdem fĂŒhrt Microsoft fĂŒr dich tĂ€glich Sicherungen deiner Web Apps aus. Um Kosten zu sparen kannst du nach Belieben auch mehrere Web-Apps auf dem gleichen Service Plan ausfĂŒhren. Bei den PlĂ€nen der Free- und Shared-Familie ist es ohnehin so, dass du dir den Service-Plan mit anderen Kunden teilst.

Der „Isolated“-Plan hostet Apps in einer privaten, dedizierten Azure-Umgebung und eignet sich fĂŒr Apps, die eine sichere Verbindung mit dem lokalen Netzwerk oder zusĂ€tzliche Leistung und Skalierung erfordern. App Service-PlĂ€ne rechnet Microsoft immer sekundengenau ab.

Compute-Leistung zum AusfĂŒhren von Azure Web Apps werden in Form von Service-PlĂ€nen abgerechnet.

Der F1-Plan ist ĂŒbrigens auch immer eine gute Idee, wenn du einen ursprĂŒnglich verwendeten grĂ¶ĂŸeren Plan eine Weile nicht benötigst, denn im Gegensatz zu IaaS (VMs) kannst du PaaS-Dienste nicht pausieren; eine Azure-VMs kannst du z. B. herunterfahren, solange du sie nicht brauchst. Das Downsizing klappt freilich nur, wenn der kleinere Plan auch die im grĂ¶ĂŸeren enthaltene Features abdecken kann, andernfalls mĂŒsstest du Funktionen vorab gezielt deaktivieren.

ACUs

In jedem Fall gibt Azure die Compute-Leistung von Service-PlĂ€nen in Form so genannter ACUs (Azure Compute Units) an. Hierbei handelt es sich um dedizierte Compute-Ressourcen, die zum AusfĂŒhren von im App Service-Plan bereitgestellten Anwendungen benötigt werden. Sobald du einen App Service-Plan in einer bestimmten Region erstellst, kreiert Azure in dieser Region ein Satz mit Compute-Ressourcen mit den angegeben ACUs. Insofern ist die ACU ein guter Vergleichswert um beurteilen zu können, wie „stark“ dein Service-Plan im Vergleich zu dedizieren Azure-VM-GrĂ¶ĂŸen ist. Derzeit ist der ACU-Wert auf fĂŒr eine kleine Azure-VM vom Typ Standard_A1 mit dem Wert 100 „geeicht“. So kannst du an den anderen SKUs https://docs.microsoft.com/en-us/azure/virtual-machines/acu leicht ablesen, wie die gewĂ€hlte ACU leistungstechnisch (im Vergleich zu konkreten CPU/Core-Angaben) darsteht. ACUs nutzen Intels Turbo-Technologie, um bei Bedarf Leistungssteigerungen durch Übertaktung zu erzielen.

Web App Features

Unter dem Strich bietet das Bereitstellen von  Web-Anwendungen auf Basis eines Plattform-as-a-Service wie Azure App Services;  Amazon Elastic Beanstalk oder Red Hat Open Shift zahleiche Vorteile. Diese sind bei Azure:

  • verhĂ€ltnismĂ€ĂŸig hoher SLA von 99,95 ohne zusĂ€tzliche Redundanzmaßnahmen
  • App Service ist ISO-, SOC- und PCI-konform.
  • Entwickler können die Azure Identity Platform nutzen, um die Nutzer Ihrer Apps via  Azure Active Directory, Google, Facebook, Twitter oder Microsoft-Konto zu authentifizieren.
  • UnterstĂŒtzung fĂŒr alle wichtigen Sprachen und Frameworks (siehe oben) einschließlich Powershell-Skripts und der Möglichkeit, ausfĂŒhrbare Dateien als Hintergrunddienste durchzufĂŒhren
  • Alternativ Bereitstellung von Apps in Docker- oder Windows-Containern
  • Globale Skalierung und VerfĂŒgbarkeit.
  • Devops und CI/CD-Integration mit UnterstĂŒtzung fĂŒr Azure DevOps, GitHub, BitBucket, Docker Hub oder Azure Container Registry zur fortlaufenden Bereitstellung von Apps einschließlich UnterstĂŒtzung fĂŒr Staging-Umgebungen in Form der o. e. Bereitstellungsslots.
  • Visual Studio- und Visual Studio Code-Integration
  • Über 50 Connectoren zur Integration von SaaS-Lösungen wie SAP oder SAP oder Salesforce und anderen Internetdiensten (z. B. Facebook)

Der Azure Marketplace sowie die Azure Quickstarts enthalten zahlreiche Anwendungsvorlagen fĂŒr Azure-App-Service-basierten Web-Anwendungen wie Drupal, Joomla oder WordPress.

WordPress gibt es z. B. als Vorlage zur Bereitstellung als Web-App im Marketplace oder den Quickstarts

Individueller Code

Du kannst deine Web-App auch einfach nur mit einer Standard-Hosting-Start-Seite bereitstellen und deinen individuellen Anwendungscode spĂ€ter via CI/CD-Pipeline (Azure Devops/Azure Pipelines, GitHub, Bitbucket) automatisiert aus deinem bevorzugten Quellcode-Repository oder manuell via FTP/FTPS, bzw. direkt ĂŒber die Konsolen-Verbindung zu Ihrem App-Service einspielen. Microsoft beschreibt  zahlreiche Bereitstellungsvarianten fĂŒr die unterstĂŒtzen Sprachen-Frameworks und Technologie-Stapel /ASP.NET, Node.js, Java, Python, Ruby, Static Web Seite und auch fĂŒr WordPress in seiner sehr guten https://docs.microsoft.com/en-us/azure/app-service/quickstart-wordpress Dokumentation.

Beim initialen Bereitstellen der Web-App wĂ€hlst du zunĂ€chst, ob du den Code veröffentlichen oder deine Web-App in einem Container bereitstellen, bzw. eine statische Web-App erstellen möchtest. Letztes ist ein eigenstĂ€ndiger Azure-Service. Bei Veröffentlichen von Code wĂ€hlst du dann den gewĂŒnschten Laufzeitstapel und die Region aus. Den zugrunde liegenden App-Service-Plan kannst du vorher oder direkt hier beim Konfigurieren der Web-App erstellen; Microsoft schlĂ€gt ohnehin automatisch einen Plan (Premium V2 P2v2) fĂŒr 62,18 Euro/Monat vor.

Das Erstellen einer Web-App erfordert nur wenige Angaben, darunter der gewĂŒnschte Laufzeitstapel.

Je nachdem fĂŒr welchen Laufzeitstapel und welche OS-Plattform du dich entscheidest, kannst du im nĂ€chsten Schritt „Bereitstellung“ des Bereitstellungsassistenten ggf. schon deine CI/CD-Integration mit GitHub als Quell-Code-Repository und GitHub Actions als Build-Anbieter einrichten. Das gilt aber nur fĂŒr diese Kombination. Andere Kombinationen von Quellcode-Anbieter und Build-Service kannst du spĂ€ter im Bereitstellungscenter konfigurieren. Der App Service bringt in jedem Fall auch einen eigenen Build-Service mit.

Seit der Übernahme von GitHub im Jahr 2018, gehören GitHub/GitHub Actions zu den bevorzugten Devops-Toolsets in Azure.

Nach Fertigstellung der App findest du auf der Übersichtsseite oben rechts die Anwendungs-URL und ggf. den von Azure erzeugten FTP/FTPS-Hostnamen nebst zugehörigen FTP-Bereitstellungsnutzer, falls du deine App doch klassisch „Betanken“ möchtest.

Die Übersichtsseite Ihrer Web-App zeigt oben rechts die Anwendungs-URL.

Die URL fĂŒhrt dann zur Standard-Hosting-Start-Seite des Service und hört auf den DNS-Suffix „
azurewebsites.net“. Benutzerdefinierte DomĂ€nennamen kannst du spĂ€ter wahlweise  mit Hilfe eines CNAME-Records bei deinen eigenen DNS-Registrar erzeugen, sofern du im Besitz einer eigenen DomĂ€ne bist oder du erwirbst eine exklusive Domain fĂŒr deinen App-Service mit Hilfe des Azure-Dienstes https://docs.microsoft.com/en-us/azure/app-service/manage-custom-dns-buy-domain  App Service-DomĂ€ne fĂŒr einen Festpreis von 11,99 USD/Jahr. Auf dem Service Plan selbst ist die kostingstart.html-Seite bei einem Linux-Unterbau z. B. unter /home/site/wwwroot zu finden. Das kannst du leicht verifizieren, wenn du dich unter https://<app_name>.scm.azurewebsites.net/webssh/host mit Hilfe der so genannten Kudu-Konsole via SSH mit deinem Webserver verbindest.

Die in wenigen Minuten bereitgestellte Web-App mit der Hostingstart-Seite.

Das klappt, weil Kudu die Engine hinter vielen Funktionen der Azure App Services zur Bereitstellung mithilfe der Quellcodeverwaltung und anderen Bereitstellungsmethoden wie die Synchronisierung mit Dropbox und OneDrive ist. Wenn du eine Web-App erstellst, erstellt der App Service stets eine zweite, begleitende HTTPS-geschĂŒtzt App, die unter der angegeben Kudu-URL erreichbar ist. So kannst du auf diesen Weg deinen individuellen Code auch mit klassischen Unix-Tools bereitstellen.  Vorrangig dient Kudu aber u. a. dazu, z. B. IIS-Speicherabbilder oder Docker-Protokollen herunterzuladen oder IIS-Prozesse und Websiteerweiterungen zu verwalten. Kudu selbst ist ein Open-Source-Projekt.

Mit Hilfe von Kudu erhalten Sie unter anderem auch eine SSL-gesicherte SSH-Sitzung zu Ihrer Web-App.

Mehr zu den unterschiedlichen Bereitstellungsoptionen wie z. B. CI/CD via GitHub, Bitbucket usw., Azure Devops, Azure Pipelines, FTPS oder Kudu, zur Konfiguration von App-Einstellungen, Standardpfaden/Handlern und Umgebungsvariablen sowie zu ergĂ€nzenden Features wie automatischer Skalierung, automatischen Sicherungen, SSL-Zertifikaten oder dem Implementieren einer Authentifizierungsebene ĂŒber das Azure Identity Framework via OpenID-Connect erfĂ€hrst du in weiteren BeitrĂ€gen.

Schulungen die dich interessieren könnten

Bewertungen

Kundenstimme
Torsten B.
Westdeutscher Rundfunk WDR
star-participantstar-participantstar-participantstar-participantstar-participant
Das Seminar hat nicht nur Spaß gemacht, sondern auch wirklich 'ne Menge gebracht :-)
Kundenstimme
Wolfgang N.
ThyssenKrupp Nirosta
star-participantstar-participantstar-participantstar-participantstar-participant
Eine gute Adresse fĂŒr das Erlernen scheinbar schwieriger und trockener Themen, die hier gut aufbereitet werden.
Kundenstimme
Martin S.
Bundeseisenbahnvermögen
star-participantstar-participantstar-participantstar-participantstar-participant
Das Training zeichnet sich durch einen sehr hohen Praxisbezug und Raum fĂŒr individuelle Hilfe persönlicher Problemstellungen sowie durch einen engagierten und hoch kompetenten Trainer aus.
Kundenstimme
Markus H.
CARAT Dreieich
star-participantstar-participantstar-participantstar-participantstar-participant
Der Trainer machte einen sehr netten und kompetenten Eindruck und ging auf unsere WĂŒnsche und Anregungen sehr praxisorientiert ein .