Einer der Vorteile der Azure App Services ist die Skalierung der unterliegenden von Microsoft verwalteten Infrastruktur. Neben der Zeitplan- und Metrik-basierten Skalierung unterstützt der App-Service-Dienst seit einiger Zeit nun auch die vollautomatische Skalierung. Wie das funktioniert, demonstriert dieser Beitrag.
Die automatische Skalierung in den Azure App Services ist eine recht neue Funktion, die so gut wie keine Möglichkeit zur Konfiguration bietet.
(Bild: Drilling / Microsoft)
Die Vorzüge von Azure Web Apps haben wir nun schon häufiger auf- und ausgeführt. Ob Bereitstellung, Betrieb oder Verwaltung der zugrundliegenden Infrastruktur: Besteht die Anforderung, eine App auf Basis eines klassischen Web Application Technology Stack zu schreiben, nehmen die Azure App Services einem solche Aufgaben vollständig ab. Microsoft kümmert sich um die Bereitstellung und Wartung der Gastbetriebssysteme und der Sprachen-Frameworks bzw. Laufzeitumgebungen.
Der Service unterstützt derzeit ASP.NET, ASP.NET Core, Java, Node.js, PHP, oder Python. Erwähnenswert ist in diesem Zusammenhang auch die Integration zahlreicher Java-Tools mittels Maven oder Gradle, ohne dass Entwicklerinnen und Entwickler ihre gewohnte Umgebung in Visual Studio Code, IntelliJ oder Eclipse verlassen müssten. Es lassen sich aber auch PowerShell und weitere Skripte oder ausführbare Dateien als Hintergrunddienst ausführen. Außerdem könnte man Apps auch containerisieren, wahlweise mit Docker bei einem Linux-Infrastruktur-Stack oder mittels Windows -Containern.
Für Entwickler in erster Linie interessant ist die DevOps-Optimierung bzw. CI/CD-Integration mittels Azure DevOps, BitBucket, Docker Hub, Azure Container Registry und GitHub. Dank Support für Staging-Slots ist es möglich, Updates über Test- und Staging-Umgebungen abzustufen und damit nahtlos zu einem neuen Release zu wechseln. Ferner erlauben die Dienste es, die Web-App über eine große Anzahl von SaaS-Konnektoren mit Diensten wie SAP oder Salesforce zu verbinden. Hybridverbindungen und virtuelle Azure-Netzwerke können dazu dienen, aus einer Web-App auf lokale Daten zuzugreifen.
Das sind längst nicht alle Vorteile, aber eines muss klar sein: Cloud-Dienste und darüber bereitgestellte Anwendungen können unüberschaubare Kosten verursachen und sollten deshalb skalieren. Thema dieses und des folgenden Beitrages soll deshalb die Fähigkeit sein, eine globale Skalierung inklusive Hochverfügbarkeit zu realisieren, das heißt: die Web-App soll in Abhängigkeit des verwendeten Serviceplans manuell oder automatisch zentral oder horizontal hoch- und auch herunterskalieren. Die zugehörige App Service-SLA garantiert Hochverfügbarkeit. Zum Nachvollziehen des folgenden Beispiels benötigen wir allerdings einen App-Service-Plan, der manuelle oder automatische Skalierung unterstützt.
Der richtige Serviceplan
Es wird ein Service-Plan benötigt, der horizontale Skalierung unterstützt.
(Bild: Drilling / Microsoft)
Es empfiehlt sich also bereits vor bzw. bei der Web-App-Erstellung, einen geeigneten Service-Plan zu erstellen. Die Laufzeitumgebung spielt für dieses Beispiel keine Rolle, z. B. PHP 8.3. Im Kontext der Web-App-Erstellung klicken wir auf „Preispläne erkunden“. Die Anzeige der verfügbaren Service-Pläne lässt sich mit Hilfe der Radiobuttons „Nach Funktionen (Featureansicht)“ sortieren. Nun wählen wir einen Service-Plan, der in der Spalte „Auto Scale“ die Option Manual, Rules oder Elastic aufweist. Lustige Anekdote bei der deutschen Lokalisierung des Azure-Portals: „Manual“ (für manuell) ist hier mit „Handbuch“ übersetzt.
Erstellen eine Web-App.
(Bild: Drilling / Microsoft)
Wir starten zunächst mit einem B1-Plan, der nur manuelle Skalierung unterstützt, und rüsten dann später auf. Die übrigen Einstellungen zur Web-App-Erstellung sind für dieses Beispiel weitgehend egal. Wir binden für dieses Beispiel keine Datenbank an, sondern nur eine einfache PHP-App aus einem bestehenden Git-Hub-Repository, um uns die hervorragende CI/CI-Unterstützung zunutze zu machen.
Das Anbinden von CI/CD via GitHub.
(Bild: Drilling / Microsoft)
Die CI/CD-Integration für GitHub lässt sich übrigens bereits direkt im Bereitstellungsassistenten für die Web-App einrichten, im dritten Tab „Bereitstellung“. Andere Anbieter zur Quellcode- und Versionsverwaltung wie Git, Bitbucket usw. lassen sich hingegen erst im Anschluss an die App-Bereitstellung im Bereitstellungscenter einrichten.
Horizontale Skalierung
Bei einem B1-Plan wie im Beispiel basiert der Plan auf exakt einer Instanz, also eine von Microsoft transparent verwalteten VM. Möchte man eine Web-App (bzw. strenggenommen den darunter liegenden App-Service-Plan) im Anschluss an die Bereitstellung skalieren, funktioniert das auf mehrerenn Wegen. Wir können entweder auf der Verwaltungsseite der Web-App starten und im Menü „App-Service-Plan“ mit einem Klick auf „App-Service-Plan“ zu selbigen wechseln oder von der Übersichtsseite der Web-App ausgehend rechts oben bei „App-Service-Plan“ dorthin navigieren. Man könnte dies natürlich auch direkt im Azure-Portal der App-Service-Plan-Ressource aufrufen oder mithilfe der Ressourcengruppe.
Auf welchem Weg auch immer, anschließen gilt es, im App-Service-Plan ins Menü „Einstellungen“ zu navigieren, wo folgende Wahlmöglichkeiten besten:
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
„Hochskalieren (App Service Plan)“, wenn durch Up- oder Downgrade ein größerer oder kleinerer Plan erforderlich ist (vertikale Skalierung), was zu einem Neustart der App führt.
„Aufskalieren (App Service Plan)“, wenn die App von der manuellen, automatischen oder Regel-basierten horizontalen Skalierung oder Downtime profitieren soll.
Das Einrichten der manuellen Skalierung.
(Bild: Drilling / Microsoft)
Starten wir mit der manuellen Skalierung, indem wir den Schieberegler am Fuß der Seite verwenden, um in diesem Beispiel die Anzahl der Instanzen auf 2 zu setzen. Optional ist es auch möglich, den Wert 1 direkt mit einer 2 zu überschreiben. Bei „Skalierungsmethode“ steht „Manual“ bzw. „Handbuch“ in der unglücklichen deutschen Übersetzung.
Aktuell verwendet der Service-Plan zwei Instanzen.
(Bild: Drilling / Microsoft)
Sofern der Klick auf „Speichern“ nicht vergessen wurde, sieht man die aktuelle Instanzzahl anschließend z. B. durch einen Klick auf Eigenschaften.
Für die neue automatische oder die regelbasierte Skalierung ist ein passender Service-Plan vonnöten.
(Bild: Drilling / Microsoft)
Wie die Abbildung weiter oben zeigt, werden die automatische und die Regel-basierte Skalierung von unserem B1-Plan nicht unterstützt. Wir navigieren daher jetzt zur vertikalen Skalierung „Hochskalieren (App Service Plan“, wählen einen geeigneten Plan wie z. B. „Premium v3 P0V3“, klicken auf „Auswählen“ und dann auf „Upgrade“. Wurde der Tarifplan aktualisiert, wechseln wir erneut zur horizontalen Skalierung und wählen z. B. „Automatisch“, der neuesten Skalierungs-Strategie für Web-Apps.
Die automatische Skalierung ist eine recht neue Funktion, die so gut wie keine Möglichkeit zur Konfiguration bietet.
(Bild: Drilling / Microsoft)
Ab sofort kümmert sich die Plattform vollautomatisch und das Auf- und Abskalieren auf Basis des Datenverkehrs. Der Wert bei „Maximaler Burst“ meint dann die Anzahl von Instanzen, auf die dieser Plan bei Auslastung aufskaliert werden kann. Der Wert muss größer oder gleich den aktuellen Instanzen für diesen Plan sein. Wie sich der Erfolg anhand automatisierter Lasttests verifizieren lässt (das neuste Feature der App Services) zeigt ein Folge-Beitrag.
Das klassische Autoskalierung heißt nun „Benutzerdefinierte Autoskalierung“.
(Bild: Drilling / Microsoft)
Wenden wir uns nun noch der regelbasierten Skalierung zu. Diese wird so lange ignoriert, wie die automatische Skalierung noch aktiviert ist. Vorher muss deshalb ein Klick auf den angezeigten Link „Verwalten der regelbasierten Skalierung“ erfolgen. Wir landen dann im klassischen Menü zur Konfiguration der Skalierung mit dem Namen „Einstellungen für die Autoskalierung“. Dies erscheint etwas widersprüchlich, aber die oben erwähnte automatische Skalierung ist eine neue Funktion, während hier im klassischen Menü erneut die Wahl zwischen „Manuelle Skalierung“ und „Benutzerdefinierte Autoskalierung“ besteht.
Im Tab „Konfigurieren“ ist es anschließend möglich, eine oder mehrere Skalierungsbedingungen festzulegen. Eine erste Bedingung mit dem Namen „Standard“ wird automatisch erstellt mit dem Skalierungsmodus „Auf eine bestimmte anzahl von instanzen skalieren“ (sic!). Die in deutsche falsche Kleinschreibung wurde dem Screenshot entnommen.
Das Erstellen einer Metrik-basierten Skalierung.
(Bild: Drilling / Microsoft)
Diese automatisch erstellte Standardbedingung können wir nun ändern oder weitere Bedingungen erstellen und auch mehrere Bedingungen miteinander kombinieren, etwa „Basierend auf einer Metrik“ skalieren oder „Zeitplan“. Wir erstellen nun exemplarisch eine Metrik-basierte Bedingung, indem wir auf den Link „Regel hinzufügen“ klicken. Man könnte auch mehrere Metrik-basierte Regeln in eine Bedingung packen – und bei Instanz Grenzwerte“ einen Minimum-Wert, einen Maximum-Wert und einen Standard-Wert festlegen.
Die Metrik, welche die Skalierung anstoßen soll, muss zum jeweiligen Workload passen.
(Bild: Drilling / Microsoft)
Nun legen wir eine Metrik-Regel fest. Dabei ist es möglich, nach jeder gewünschten Metrik zu skalieren, welche die „Metrikquelle“ eines App-Service-Plans bereitstellt, wie z. B. „CPU Percentage“, „Memory Percentage“ oder verschiedene TCP-Metriken.
Bei der Metrik-basierten Skalierung ist es im Unterschied zur automatischen Skalierung nützlich, wenn man das Lastverhalten der Anwendung kennt oder vorhersagen kann. In Abstimmung an das Lastverhalten experimentieren wir nun mit den Werten für „Operator“, „Metrikschwellwert“, „Dauer“, Aggregationsintervall“, „Statistik zum Aggregationsintervall“ und Zeitaggregation“, um geeignete Arbeitspunkte zu finden.
Das Finden eines geeigneten Auslösers kann am Anfang etwas knifflig sein.
(Bild: Drilling / Microsoft)
Hilfreich ist dabei, dass jeweils eine Echtzeitsicht auf die gewählte Metrik angezeigt wird. Auch wenn die Beispielswerte in der vorangestellten Abbildung auf eine entspannte Situation deuten und eine Skalierung nicht erforderlich machen, könnten wir natürlich testweise versuchen, eine solche zu provozieren. Wir verwenden daher angesichts der momentanen mittleren Arbeitsspeicherauslastung von ca. 56 Prozent einen Trigger von 40 % mit einem Operator „Größer als“ über eine Dauer von einer Minute und wählen bei „Vorgang“ den Eintrag „Anzahl erhöhen um“ sowie bei „Anzahl von Instanzen“ den Wert 1.
Die Zeitplan-basierte Skalierung.
(Bild: Drilling / Microsoft)
Wie zu sehen ist, könnte man auch an den Werten bei „Prozentsatz erhöhen“ oder „Instanzzahl erhöhen auf“ drehen. Die für Cloud-Workloads viel gepriesene Elastizität – also das automatische Verringern der Kapazität, wenn diese nicht mehr benötigt wird – erreichen wir natürlich nur, wenn wir auch eine passende „Scale-In“-Bedingungen erstellen.
Der Skalierungsverlauf hilft, das Lastverhalten einer App kennenzulernen und zu verstehen.
(Bild: Drilling / Microsoft)
An dieser Stelle könnte man z. B. eine weitere Skalierungsbedingung hinzufügen und beispielsweise nach einem spezifischen Zeitplan skalieren, wenn beispielsweise ein höherer Kapazitätsbedarf nur zu bestimmten Geschäftszeiten besteht. Keinesfalls darf man dabei jeweils den Klick auf „Speichern“ vergessen. Der „Erfolg“ unserer Metrik- oder Zeitplan-basierten Skalierungsmaßnahmen lässt sich z. B. im Tab „Verlauf“ verfolgen.