Die Windows Azure Platform – “Wie viel kostet mich das Ganze nun unterm Strich?”
Das Preismodell von Azure gibt immer wieder Anlass zu Diskussionen. Nachdem die Abrechnung deutlich anders als bei Microsofts klassischen Client- und Serverprodukten ist, fällt es immer wieder schwer, genau zu beziffern, welche Kosten unterm Strich für den Anwender anfallen. Ausschlaggebend für diese Kosten ist nämlich nicht – wie im klassischen Software-Business üblich – eine einfache Preisliste, aus der man die finalen Kosten unmittelbar ablesen könnte, sondern die Nutzungsdauer und Nutzungsintensität. Diese muss der Anwender im Vorfeld abschätzen können, um eine Vorstellung von den Kosten zu erhalten. Wenn man so will, ist dies die Kehrseite des Versprechens der Cloud, dass Kosten nutzungsabhängig anfallen. Viel Nutzung, hohe Kosten, wenig Nutzen, niedrige Kosten.
In diesem Blog-Artikel möchte ich die Zusammensetzung der für die Azure-Nutzung anfallenden Kosten diskutieren und damit einen besseren Überblick über die Kostenarten geben. Letztlich soll dies einem potenziellen Azure-Anwender helfen, die Kosten für die Nutzung besser abschätzen zu können. Hierzu soll schrittweise ein Berechnungsdiagramm aufgebaut werden, mit dessen Hilfe die Kosten für Azure ermittelt werden können.
Wichtig: in diesem Beitrag wird ausschließlich das rein verbrauchsabhängige Abrechnungsmodell betrachtet. Für konkrete Projekte muss in jedem Fall berücksichtigt werden, dass sich durch Verwendung von Abo-Angeboten (Development Accelerator etc.) zum Teil massive Kosteneinsparungen realisieren lassen. Abo-Modelle werden in einem Folge-Blog betrachtet.
Grundlegendes
Abb 1: Kosten für die Bereithaltung und Kosten für die Nutzung
Grundsätzlich gibt es wie bei fast allen derzeit auf dem Markt befindlichen Cloud-Angeboten zwei Arten von Kosten, die anfallen (siehe Abb 1) :
- Kosten für die Bereithaltung
Hierunter fallen alle Kosten, die allein dafür anfallen, dass die gewünschten Ressourcen vorgehalten werden und für einen Zugriff zur Verfügung stehen. Die Bereithaltungskosten sind also unabhängig davon, ob tatsächlich ein Anwender auf die Ressourcen aktiv zugreift. Wer also weiß, dass zu bestimmten Zeiten keine aktive Nutzung der Ressourcen erfolgt, sollte prüfen, ob in diesen Zeiten eine Bereithaltung erforderlich ist. - Kosten für die aktive Nutzung
Nutzungskosten fallen immer dann an, wenn Anwender aktiv mit den bereitgehaltenen Ressourcen arbeiten. Dazu gehören sowohl die direkten Zugriffe (z.B. das Auslesen von Daten) als auch abgesetzte – ggf. asynchron ausgeführte – Arbeitsaufträge (z.B. die Ausführung von Rechenoperationen).
Bei diesen beiden Kostenarten darf Bereithaltung nicht mit Bereitstellung verwechselt werden. Letztere bezieht sich auf einen Zeitpunkt bzw. kurzen Zeitraum, in dem die gewünschten Cloud-Ressourcen installiert und konfiguriert werden, aber noch nicht für eine aktive Nutzung zur Verfügung stehen. Für diesen fallen, wie im Cloud-Kontext üblich, keine Kosten an.
Die Kosten für Azure setzen sich aus der Summe von Bereithaltungs- und Nutzungskosten zusammen. Wie aber setzen sich nun diese beiden Kostenarten zusammen?
Abb 2: Grundsätzliche Zusammensetzung von Bereithaltungs- und Nutzungskosten
Die Bereithaltungskosten sind das Produkt aus
- tBereithaltung (= die Dauer der Bereithaltung der betreffenden Cloud-Ressource)
- nBereithaltung (= die Menge der bereitgehaltenen Cloud-Ressource)
- KBereithaltung Azure-Ressource (= Kosten pro Zeiteinheit pro Mengeneinheit der bereitgehaltenen Ressource)
Um die Bereithaltungskosten so gering wie möglich zu halten, sollte also die Bereithaltungsdauer minimiert werden (also in Zeiten, in denen keine Zugriffe erfolgen, die Ressourcen ggf. deaktiviert werden) und die Menge der bereitgehaltenen Ressourcen minimiert werden. Letzteres ist dank der flexiblen Skalierbarkeit der Cloud sehr einfach möglich.
Die Nutzungskosten fallen bei aktiver Nutzung der bereitgehaltenen Ressourcen an und sind das Produkt aus
- nNutzungsfall (= Zahl der Aktionen, die zur Ausführung bereitgehaltene Cloud-Ressourcen nutzen)
- KNutzungsfall (= Kosten, die pro Nutzungsfall anfallen)
Um die Nutzungskosten so gering wie möglich zu halten, sollte also die Zahl der Nutzungsfälle (z.B. Speichertransaktionen, Datenübertragungen etc.) minimiert werden.
Bereithaltungs- und Nutzungskosten am Beispiel der Windows Azure Platform
Was sich nun im einzelnen hinter Bereithaltungs- und Nutzungskosten verbirgt, hängt vom jeweiligen Dienst der Cloud-Plattform ab.
Abb 3: Zusammensetzung der Bereithaltungs- und Nutzungskosten aus den Kosten für die einzelnen Azure Services
Die Kosten berechnen sich jeweils als Summe aus den Einzelkosten für (siehe Abb 3) :
- Windows Azure Compute
- Windows Azure Storage
- SQL Azure
- Windows Azure AppFabric
- Sonstigen Kosten (z.B. Datentransfer)
Kostenart | Azure Service | Kosten berechnen sich als Produkt aus… |
---|---|---|
Bereithaltung | Compute |
|
Storage |
|
|
SQL Azure |
|
|
AppFabric |
|
|
Sonstiges | N/A, keine weiteren Bereithaltungskosten |
|
Nutzung | Compute | N/A, keine Nutzungskosten beim Compute Service |
Storage |
|
|
SQL Azure | N/A, keine Nutzungskosten bei SQL Azure |
|
AppFabric |
|
|
Sonstiges |
|
Tabelle 1: Bereithaltungs- und Nutzungskosten der Windows Azure Platform
In das in den Abbildungen 1-3 aufgebaute Diagramm eingezeichnet, ergibt sich für Azure unter Berücksichtigung der in Tabelle 1 aufgeführten Kostenblöcke, folgende Darstellung:
Abb 4: Konzeptionelle Berechnung von Bereithaltungs- und Nutzungskosten in der Windows Azure Platform
Damit ist die konzeptionelle Berechnung der Kosten für Azure bereits vollständig dargestellt. Jetzt soll dieses Berechnungsmodell noch um die tatsächlichen Kostenbeträge ergänzt werden.
Tatsächliche Kosten für Azure (bei rein verbrauchsabhängiger Abrechnung)
Was nun im Berechnungsdiagramm noch fehlt, sind die tatsächlichen Kosten für die einzelnen Azure-Posten. Diese Kosten können der Kostenübersicht auf der Azure-Homepage entnommen werden. In das Berechnungsdiagramm eingetragen ergibt sich mit den Abrechnungsbeträgen folgendes Bild:
Abb 5: Berechnung von Bereithaltungs- und Nutzungskosten
Dieses Berechnungsdiagramm berücksichtigt jetzt alle Kostenposten, die bei der Verwendung von Azure anfallen können. In dieser Form ist das Ganze tatsächlich recht komplex. Zu bedenken ist allerdings, dass natürlich nicht in allen Szenarien auch wirklich alle Kosten zum Tragen kommen. In zwei kleinen Beispielszenarien soll die Berechnung der monatlichen Kosten (und die Vereinfachung des Diagramms) erläutert werden.
Beispielszenario: einfache Web-Anwendung mit SQL Azure
Im ersten Beispiel soll eine wie folgt entworfene Anwendung betrachtet werden:
- Die Anwendung besteht aus einer Web Role
- Diese Web Role wird in 2 Instanzen, die jeweils die Größe “small” haben, ausgeführt
- Für die Datenspeicherung kommt SQL Azure zum Einsatz
- Der Datentransfer (sowohl eingehend als auch ausgehend) beträgt im Monat weniger als 1 Gigabyte
Die Berechnung gestaltet sich wie in Abbildung 6 skizziert. Zur Vereinfachung wird angenommen, dass der betrachtete Monat 30 Tage hat.
Abb 6: Beispielberechnung für eine einfache Web-Anwendung
Für Azure fallen also in dem betrachteten Monat folgende Kosten an:
- Bereithaltungskosten für die Web Role-Instanzen: 30 Tage * 24 h/Monat * 2 * 0,0852€ / h = 122,69 €
- Bereithaltungskosten für SQL Azure: 30 Tage * 1 * 7,09€/Monat = 7,09 €
- Datentransfer eingehend: 0,07 €
- Datentransfer ausgehend: 0,11 €
- Summe: 122,69€ + 7,09€ + 0,07€ + 0,11€ = 129,96 €
Für die Ausführung der skizzierten Anwendung auf Azure fallen monatlich also Kosten in Höhe von ca. 129,96 € an.
Beispielszenario: Ersatz von SQL Azure durch Windows Azure (Table) Storage
Gegenüber dem ersten Szenario sollen an der Anwendung folgende Änderungen vorgenommen werden:
- Anstelle von SQL Azure soll Windows Azure Table Storage verwendet werden
- Dadurch fallen Kosten für SQL Azure weg
- Für den im Table Storage belegten Speicher (< 1GB) fallen Bereithaltungskosten an
- Für die Zugriffe (angenommen 1.000 pro Tag) fallen Speichertransaktionskosten an
Die Berechnung sieht nun wie folgt aus:
Abb 7: Beispielberechnung für eine Web-Anwendung mit Table Storage
Für Azure fallen folgende Kosten an:
- Bereithaltungskosten für die Web Role-Instanzen: 30 Tage * 24 h/Monat * 2 * 0,0852€ / h = 122,69 €
- Bereithaltungskosten für den Speicher: 30 Tage * 1 * 0,11€/Monat = 0,11 €
- Transaktionskosten für den Speicher: 30.000 * 0,0071€ / 10.000 = 0,02 €
- Datentransfer eingehend: 0,07 €
- Datentransfer ausgehend: 0,11 €
- Summe: 122,69€ + 0,11€ + 0,02€ + 0,07€ + 0,11€ = 123,00 €
Durch Ersatz von SQL Azure durch Windows Azure Storage können die Kosten also geringfügig reduziert werden. Für einfache Datenmodelle, kann dies lohnenswert sein. Zu berücksichtigen ist allerdings, dass mit SQL Azure ein deutlich erweiterter Funktionsumfang (Views, Stored Procedures, mehrere Schlüsselattribute auf Tabellen etc.) zur Verfügung steht.
Fazit: Hinweise zur Kostenoptimierung
Die Kosten der Verwendung von Azure setzen sich aus reinen Bereithaltungskosten (die auch ohne aktive Nutzung durch Anwender anfallen) und Nutzungskosten zusammen. Für beide Kostenbestandteile können Hinweise zur Kostenoptimierung gegeben werden:
- Die Zeiträume für die Bereithaltung der Ressourcen sollten so klein wie möglich gehalten werden. Sind Zeiten bekannt, in denen keine Bereithaltung erforderlich ist, kann die Anwendung z.B. heruntergefahren werden.
- Menge der bereitgehaltenen Ressourcen sollte so gering wie möglich gehalten werden. Durch die leichte Skalierung von Cloud Anwendungen können beispielsweise immer so wenige Rechenkerne wie möglich und so viele wie nötig bereitgehalten werden.
Wichtig: bei Windows Azure Compute fallen unabhängig von der aktiven Nutzung allein durch die Bereithaltung von Rechenkernen Kosten an. - Die Zahl der Nutzungsfälle (z.B. Speichertransaktionen, Datentransfers) sollte so gering wie möglich gehalten werden.
Obige Ausführungen haben bewusst Subscriptions (MSDN Premium, Development Accelerators etc.) ausgeklammert. Durch deren Einsatz können die Kosten zum Teil nochmals erheblich reduziert werden. Hierzu allerdings mehr in einem Folge-Blog.
Weitere Informationen