Wprowadzenie
W dzisiejszych czasach efektywne zarządzanie zasobami w chmurze jest kluczowe dla optymalizacji kosztów i wydajności. Microsoft Fabric oferuje elastyczne możliwości skalowania i zarządzania pojemnością, ale co zrobić, gdy potrzebujemy automatyzacji tych procesów?
Dlaczego warto automatyzować?
Automatyczne startowanie i stopowanie pojemności w Microsoft Fabric może przynieść wiele korzyści, w tym:
- Zmniejszenie kosztów: płacisz tylko za to, czego używasz.
- Zwiększenie produktywności: automatyzacja rutynowych zadań pozwala zespołom skupić się na ważniejszych zadaniach.
Jak to działa?
Automatyzacja w Microsoft Fabric może być realizowana za pomocą różnych narzędzi i usług Azure, takich jak Azure Data Factory (ADF) czy Azure Logic Apps. Proces ten zazwyczaj obejmuje następujące kroki:
- Konfiguracja usługi: Ustawienie parametrów i warunków dla automatyzacji.
- Wykorzystanie API REST Azure: Skrypty i zadania, które wykorzystują API do zarządzania pojemnością.
- Monitorowanie i logowanie: Śledzenie działania i ewentualnych błędów w procesie.
Przykład użycia Azure Logic Aps
Azure Logic Aps umożliwia tworzenie złożonych przepływów pracy, które mogą automatycznie zarządzać np. pojemnością w Microsoft Fabric. Oto przykładowy przepływ pracy, mający na celu zapewnienie dostępności developerskiej pojemności od poniedziałku do piątku w godzinach 8-16:

Aby stworzyć taki przepływ, należy w https://portal.azure.com uruchomić Logic Apps, np. przez wyszukanie w belce,

dodać nową aplikację,

a następnie podać wymagane nazwy, wskazać lub utworzyć nową Resource Group oraz wskazać region, w którym zostanie powołana usługa. Jeśli nie korzystaliśmy jeszcze z Logic apps, w Plan type wybieramy Consumption – koszty miesięczne wyniosą kilka centów.

Po ukończeniu wizarda, przechodzimy do nowoutworzonej aplikacji,

i uruchamiamy Logic app designer

oraz klikamy:

W polu wyszukiwania wpisujemy „recurrence” aby wybrać wyzwalacz, wybieramy Schedule-> Recurence.

Uzupełniamy dane.

Następnie klikamy w plusik oraz Add an action

W polu wyszukiwania wpisujemy „current time”

i wybieramy:

Ponownie plusik oraz Add an action.

Dodamy akcję, która wykona konwersję czasu systemowego i da nam pewność, że system działa w godzinach naszej strefy czasowej. W polu wyszukiwania wpisujemy „convert time”

i wybieramy:

W polu Base Time klikamy błyskawicę,

by wskazać wcześniej stworzony „Current time”.

W polu Time Unit wybieramy custom value i wpisujemy:

a finalnie:

Ponownie klikamy Add an action.

W polu wyszukiwania podajemy „odczytaj zasób” lub „read a source”.

Następnie zostanie uruchomiony kreator do konfiguracji poświadczeń, na których będą wykonywane działania (odczyt stanu usługi Fabric), do wyboru mamy OAuth, Service Principal, Managed Identity.

Po zalogowaniu należy skonfigurować parametry:
- Subskrypcję
- Grupę zasobów, z usługą Fabric
- W Dostawca Zasobów wybieramy Microsoft.Fabric
- W Krótki Identyfikator Zasobu wpisujemy capacities/nazwa zasobu z Fabric:

5. Wersja interface API Klienta: 2023-11-01:

Ponownie klikamy add an action,

a w polu wyszukiwania wpisujemy „condition”.

W nowym kreatorze klikamy błyskawicę, wybieramy Converted Time i wpisujemy warunki wg uznania,

np.:

Przechodzimy do definiowania zadania dla warunku pozytywnego (chcemy sprawdzać czy pomiędzy 8-16 usługa Fabric jest włączona), w tym celu klikamy Ad dan action przy warunku True.

Ponownie wybieramy Condition i definiujemy warunek klikając na pole funkcji.

W polu funkcji wpisujemy:
body(’Odczytaj_zasób’)?[’properties’]?[’state’]
w warunku „Paused” i klikamy Add.

Taki sam warunek definiujemy dla pola False.
Następnie dodajemy akcję dla odpowiedzi True pierwszego warunku.

W polu wyszukiwania wpisujemy „wywołaj operację zasobu”.

Następnie konfigurujemy akcję analogicznie do wcześniejszego kroku,

po czym dodajemy akcję dla odpowiedzi False drugiego warunku

zgodnie z poniższym schematem:

Zapisujemy aplikację logiczną

co wywoła triger do uruchomienia, wchodzimy w Run History i sprawdzamy status.

Po kliknięciu w wykonany job, możemy prześledzić jego wykonanie.

Weryfikujemy też skutek bezpośrednio na usłudze Fabric.

Podsumowanie
Automatyzacja startowania i stopowania pojemności w Microsoft Fabric to potężne narzędzie, które może znacząco przyczynić się do optymalizacji kosztów, a także efektywności operacyjnej. Wykorzystując możliwości Azure i odpowiednie skrypty, możemy osiągnąć znaczne ulepszenia w zarządzaniu zasobami chmurowymi.