Es ist bereits über ein Jahr her, dass Fabric allgemein verfügbar wurde, und immer mehr Unternehmen migrieren auf Microsofts neue All-in-One-Datenanalyseplattform. Was neue Nutzer, insbesondere solche mit kleineren Projekten, abschrecken könnte, ist das Preismodell und die Unsicherheit in Bezug auf die Vorhersehbarkeit der Kosten und Nutzung von Fabric. Tatsächlich wurde jedoch die Vorhersagbarkeit der Kosten durch das Kapazitätsmodell im Vergleich zu Diensten wie Azure Data Factory erheblich vereinfacht.
In diesem Artikel zeigen wir, wie du deine Kapazität automatisch steuern und sogar während der Nacht oder am Wochenende abschalten kannst. So wird Fabric auch für kleinere Projekte erschwinglich.
Fabric Capacities
Lass uns kurz erklären, was Kapazitäten sind. Wenn du diesen Artikel liest, weisst du vermutlich bereits, was Fabric ist. Hier eine kurze Definition von Microsoft:
"Microsoft Fabric ist eine End-to-End-Analytics- und Datenplattform für Unternehmen, die eine einheitliche Lösung benötigen. Sie umfasst Datenbewegung, -verarbeitung, -eingabe, -transformation, Echtzeit-Event-Routing und Berichtserstellung."
Im Gegensatz zu anderen Cloud-Diensten von Microsoft wie Azure Data Factory (ADF) oder Synapse Analytics, die ein nutzungsbasiertes Abrechnungsmodell verwenden, basiert Microsoft Fabric auf Kapazitäten.
Eine Kapazität ist eine Einheit für reservierte Rechenleistung, die deinem Fabric-Arbeitsbereich zugewiesen wird. Kapazitäten haben einen festen Preis für eine bestimmte Rechenleistung. Da Kapazitäten pausiert werden können und du den benötigten Rechenaufwand deines Projekts abschätzen kannst, weisst du genau, welche Kosten auf dich zukommen.
Die Kosten für jede Kapazität findest du im Azure Preisrechner: Microsoft Fabric - Pricing | Microsoft Azure
Wir werden in diesem Artikel nicht tief ins Thema Kapazitäten eintauchen. Es gibt viele weitere Konzepte wie CUs, Bursting oder Smoothing. Eine ausführliche Erklärung dazu findest du in diesem Video von Covenant:
Start small
Für dieses Beispiel nutzen wir die kleinste F2-Kapazität. Der aktuelle Monatspreis liegt bei etwa 300 €. Wenn du die Lösung jedoch nur während der Arbeitszeit (z. B. 160 Stunden im Monat) nutzen möchtest, kannst du Fabric bereits für etwa 70 € im Monat betreiben – ein guter Preis für das, was Fabric bietet!
In der Azure-Portalseite kannst du die Fabric-Kapazität einfach durch „Pause“ anhalten.
Dadurch wird die reservierte Kapazität freigegeben, und der Stundenpreis sinkt auf 0.- € Beachte jedoch, dass bei pausierter Kapazität keine Ressourcen im Arbeitsbereich – einschliesslich Power BI – verfügbar sind.
Achtung: Beim Stoppen und Neustarten der Kapazität können Cache- und Optimization-Probleme auftreten. Für kleine Projekte sind diese jedoch meist nicht relevant. Details findest du im zuvor erwähnten Video.
Do it once, do it twice, automate it
Microsoft bietet derzeit keinen integrierten Scheduler, um Kapazitäten automatisch zu starten, zu skalieren oder zu stoppen. Dafür können jedoch Logic Apps verwendet werden. Wir erstellen einen Flow, der jede Stunde ausgeführt wird und den Status der Kapazität überprüft. Je nach Zeitplan wird die Kapazität gestartet oder pausiert. Dies lässt sich weiter optimieren, sodass der Flow nur zu relevanten Zeiten ausgeführt wird, doch darauf gehen wir hier nicht ein.
Vorbereitung. Folgende Informationen benötigst du:
Ressourcengruppenname der Kapazität
Die Subscription-ID
Name der Fabric-Kapazität
Aktiviere zunächst die managed identity für die Logic App unter Settings > Identity.
Dies ermöglicht eine sichere Authentifizierung ohne zusätzliche Zugangsdaten.
Gib der verwalteten Identität die Contributor-Rolle:
Öffne die Fabric-Kapazität im Azure-Portal.
Gehe zu IAM (Rollenverwaltung).
Wechsle zur Contributor-Rolle und füge die Identität hinzu.
Erstellen wir nun den Logic-App Flow.
Trigger hinzufügen: Wähle den Trigger Wiederkehrend und stelle ihn auf ein stündliches Intervall ein.
Status abrufen: Füge eine HTTP GET-Aktion hinzu. Verwende folgende URL (Mit eigene Daten ergänzen):
Managed Identity muss aktiviert werden für diesen Step:
Status speichern: Initialisiere eine Variable mit dem Status der Kapazität
body('Get_current_status').properties.state
Der Status ist entweder „Aktiv“ oder „Pausiert“.
Bedingung hinzufügen: Überprüfe mit UTC-Zeit, ob die aktuelle Zeit innerhalb der Arbeitsstunden liegt:
Hier sind die Formeln, die in den Ausdrücken verwendet werden. Beachte, dass diese UTC-Zeiten verwenden. Vergiss nicht, sie an deine lokale Zeitzone anzupassen:
int(formatDateTime(utcNow(), 'HH')) # Time
dayOfWeek(utcNow()) # Day of the week
Auf der True-Seite der Bedingung prüfen wir, ob der Kapazitätsstatus „Aktiv“ oder „Pausiert“ ist. Ist die Kapazität bereits aktiv, muss nichts unternommen werden. Andernfalls starten wir sie.
Um die Kapazität zu starten, kopiere die erste HTTP GET-Anfrage und ändere sie ab. Setze die Methode auf POST und verwende folgende URL:
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric/capacities/{capacityName}/resume?api-version=2022-07-01-preview
Beachte das „resume“ am Ende der URL.
Auf der False-Seite der Bedingung verfährst du genauso, ersetzt jedoch das „resume“ durch „suspend“. Damit wird deine Kapazität pausiert.
Das war’s! Hier ist eine Übersicht über den vollständigen Flow:
Comments