Serverless Functions haben drei wichtige Eigenschaften, von denen jede einen wesentlichen Einfluss auf den Umgang mit den Kosten einer Anwendung hat:
- Geringer Verwaltungsaufwand: Der Cloud-Anbieter verwaltet den Service. Die Gesamtbetriebskosten sind minimal: Entwickler erstellen Code zur Lösung von Geschäftsproblemen – der Rest wird erledigt.
- Pay-per-Use-Abrechnung: werden nach tatsächlicher Ausführung berechnet. Nichts wird im Voraus reserviert, so dass die Kosten für den Betrieb einer Function App linear mit der Anwendungsanforderung wachsen.
- Elastisch Skalierung: Wenn eine Funktion im Leerlauf ist, skaliert Azure die Infrastruktur ohne damit verbundene Kosten auf Null. Wann immer die Arbeitsbelastung steigt, verfügt Azure über genügend Kapazität, um den gesamten Bedarf zu decken.
Warum ist das wichtig?
In der Vergangenheit wurden die Kosten für den Infrastrukturbetrieb einer Anwendung und der Wert, den die Anwendung bietet, getrennt. Ein Unternehmen würde mehrere Anwendungen mit jeweils zahlreichen Komponenten und Diensten auf einer gemeinsamen Infrastruktur mit dedizierter Hardware, einem Pool von VMs oder IaaS-Diensten in der Cloud ausführen. Es ist ziemlich kompliziert, die Kosten auseinander zu reißen und die genauen Kosten jeder Anwendung, geschweige denn einer bestimmten Komponente, zu bestimmen. Darüber hinaus werden die Investitionen im Voraus geplant und ausgeführt, so dass die Infrastruktur der Elastizität der Auslastung nicht folgen kann und am Ende überlastet und unterausgelastet ist.
Heute kann das Anwendungsportfolio auf serverlosen Funktionen ausgeführt werden, wobei jede Komponente zu einer separaten Funktions-App wird. Jede App kann wiederum mehrere Funktionen enthalten. Da das Unternehmen nach tatsächlicher Nutzung bezahlt, kann es die genauen Kosten jeder Komponente verstehen und verwalten.
Diese Fähigkeit ermöglicht es Unternehmen heute:
- Sehen Sie, welche Funktionen am profitabelsten und welche zu teuer sind.
- Optimieren Sie die Funktionen, die sich stark auf die Rechnung auswirken und ignorieren Sie den Rest.
- Treffen Sie fundierte Entscheidungen darüber, ob Sie Zeit für solche Optimierungen aufwenden oder neuen Geschäftswert schaffen möchten, während Sie gleichzeitig eine Prämie an den Cloud-Anbieter zahlen.
Beachten Sie, dass die Kosteninformationen rückwirkend sind: Die tatsächlichen Zahlen kommen nach der Tatsache der Ausgaben. Der Mangel an Budgetierung macht die Entscheidungsträger nervös: Sie sind es gewohnt, die Kosten der Infrastruktur lange im Voraus zu planen. Daher ist es unser Ziel, die Kostenstruktur zu verstehen und die Änderungen in den Rechnungen bei der Entwicklung von Anwendungen und Geschäften vorherzusagen.
Abrechnungsmodell des Verbrauchsplans
Lassen Sie uns die Struktur des Verbrauchsplans analysieren. Es gibt zwei Kernkomponenten der Kosten für serverlose Funktionen in Azure: Ausführungszähler und Ausführungszeit.
Die Ausführungszählung ist unkompliziert. Jede Funktion definiert einen Auslöser – ein Ereignis, das die Ausführung des Codes bewirkt. Es kann sich um einen eingehenden HTTP-Request oder eine Nachricht in einer bestimmten Warteschlange handeln. Jeder Anruf zählt: Sie erhalten 0,20 Dollar pro Million Ausführungen. Diese Komponente der Kosten kann erheblich reduziert werden, wenn Sie Events batchen: mehrere Events in einer einzigen Ausführung verarbeiten.
Die zweite Kostenkomponente heißt Ausführungszeit auf der Preisseite, was nicht ganz korrekt ist: Sie hängt sowohl von der Fertigstellungszeit als auch vom Speicherverbrauch ab und wird in GB-Sekunden gemessen. Sie zahlen 16 Dollar pro Million GB-Sekunden. Das heißt, wenn eine Funktion 1 Million Mal ausgeführt wird, verbraucht sie immer 1 GB Speicher und schließt in 1 Sekunde ab, Sie zahlen $16.
Der Speicherverbrauch wird immer auf die nächsten 128 MB aufgerundet, und die minimale Zeitladung beträgt 100 Millisekunden. Daher beträgt die minimale Zeitaufwendung erneut $0,20 pro Million Ausführungen.
Ganzheitlich gibt es andere Kostenkomponenten für den Betrieb von serverlosen Anwendungen, die nicht direkt mit dem Azure Functions Service verbunden sind: Ich werde kurz auf die am Ende des Artikels eingehen.
Azure Rechnung und Kostenanalyse
Der wichtigste Ort, um die Kosten für den Betrieb von Azure Functions zu sehen, ist die monatliche Rechnung. Öffnen Sie das Azure-Portal und navigieren Sie zur Seite Ihres Abonnements, wählen Sie Rechnungen und dann einen Zeitraum zum Anschauen. Hier ist ein Beispielbericht aus einem Abonnement:
Azure Monitor Kennzahlen
Azure Monitor ist ein Dienst zum Sammeln, Analysieren und Handeln auf Telemetrie von Anwendungen, die in der Azure Cloud laufen. Obwohl der Schwerpunkt hauptsächlich auf der Leistung liegt, sammelt es auch einige nützliche Daten über den Serviceverbrauch.
Azure Functions gibt zwei kostenbezogene Kennzahlen in Azure Monitor aus: Anzahl der Funktionsausführungen und Funktionsausführungseinheiten. Jede Kennzahl gibt einmal pro Minute einen Wert aus.
Um diese Metriken im Azure-Portal anzuzeigen, navigieren Sie zum Monitor-Dienst und wählen Sie das Element Metriken auf der linken Seite. Klicken Sie auf die Schaltfläche Select a Resource und finden Sie die Function App, die Sie untersuchen möchten. Beachten Sie, dass der Ressourcentyp auf App Service eingestellt sein sollte: In dieser Dropdown-Liste gibt es keinen Wert namens Function App.
Wählen Sie in der Dropdown-Liste Metriken die Option Anzahl der Funktionsausführungen, Summe als Aggregationstyp und passen Sie den Periodenwahlschalter bei Bedarf an. Sie sollten nun ein ähnliches Diagramm wie dieses sehen:
In diesem speziellen Fall gab es in den letzten 30 Minuten etwa 4.940 Hinrichtungen. Sie können die Statistiken pro Minute anzeigen; in diesem Beispiel stammen alle Ausführungen von einer einzigen Spitze – etwas, das ich vielleicht untersuchen möchte.
Schalten Sie nun die Metrik auf Funktionsausführungseinheiten um. Alternativ können Sie es auch zum gleichen Diagramm hinzufügen, aber der Maßstab der beiden Kennzahlen ist so unterschiedlich, dass Sie nicht beide Linien gleichzeitig sehen können:
Die Wertekonvertierung wird hier etwas knifflig. Die Grafik zeigt insgesamt 634,13 Millionen Function Execution Units, die in der letzten Stunde verbraucht wurden. Dies sind jedoch nicht die oben genannten GB-Sekunden: Die Metrik ist in MB-Millisekunden angegeben. Um dies in GB-Sekunden umzuwandeln, dividieren Sie es durch 1.024.000. In diesem Fall verbrauchte meine Function App also 634.130.000 / 1.024.000 = 619 GB-Sekunden in der letzten halben Stunde.
Fassen Wir es zusammen
Schätzen wir die monatlichen Kosten der Anwendung basierend auf den oben genannten Kennzahlen. Wir beginnen mit der halbstündigen Berechnung:
Execution Count = 4,940 * 0.20 € / 1,000,000 = 0.000988 €
Execution Time = 634,130,000 / 1,024,000 * 16 € / 1,000,000 = 0.009908 €
30 Min Total = Execution Count + Execution Time = 0.010896 €
Wenn ich die gleiche durchschnittliche Serverbelastung über einen Monat beibehalte, werden die Kosten höher sein:
Monthly Cost = 30 Min Total * 2 * 24 * 30 = 15.69 €
Meine Bewerbung kostet etwa 2 Cent pro Stunde, oder 15 Euro im Monat.
Daniel Jordan
Fellow Consulting AG
If you have any question please contact me on this channels: