Wielką zaletą usług w chmurze jest możliwość ich wyłączenia lub zeskalowania, w momencie, kiedy z nich nie korzystamy. Taki zabieg pozwala zaoszczędzić koszty i przeznaczyć je na bardziej potrzebne rzeczy. Samo skalowanie można wykonać z poziomu portalu czy Powershell’a. Oczywiście – aby wszystko działało zgodnie ze sztuką, powinniśmy zautomatyzować zarówno włączanie/wyłącznie, jak i skalowanie usług. Do tego celu można wykorzystać Runbooki. I to właśnie o nich opowiem w dzisiejszym artykule!
Określ czego potrzebujesz
Zwykle, podczas rozwijania systemu BI, będziemy wykorzystywać co najmniej 2 środowiska – deweloperskie i produkcyjne. Jeśli chodzi o środowisko produkcyjne, to ono najprawdopodobniej powinno być uruchomione cały czas. Natomiast środowisko deweloperskie jest wykorzystywane jedynie w godzinach pracy zespołu. Rzadko spotykamy się z tym, że deweloperzy pracują 24/7, zwykle są to określone godziny, 5 dni w tygodniu. Spójrzmy teraz na to od strony kosztów i dla uproszczenia przyjmijmy, że środowisko deweloperskie ma dokładnie takie same parametry, jak produkcyjne.
Jeśli za produkcję płacimy miesięcznie 1000 €, to całościowy koszt samego systemu wynosi nas 2000 €. I tutaj pojawia się pole do optymalizacji kosztowej. Skoro nasi deweloperzy pracują 5 dni w tygodniu, w godz. 7:00-19:00, to możemy całe środowisko włączać o 7:00, a włączać o 19:00. Oszczędzimy dzięki temu połowę funduszy. Biorąc pod uwagę wolne weekendy – będzie to jeszcze więcej! Oprócz tego możemy także rozważyć odpowiednie skalowanie zasobów. Na przykład jeśli produkcyjna hurtowania danych, oparta o Azure Synapse Analytics, ma być dostępna przez cały czas, ale intensywnie korzystać z niej będziemy tylko w godzinach biznesowych, to również możemy rozważyć wyskalowanie w dół (na czas, w którym użycie jest niższe).
Czy to rozwiązanie jest idealne?
Jak pewnie się domyślasz, skalowanie oraz ciągłe włączanie i wyłączanie usługi ma pewne wady. Po pierwsze, podczas skalowania wertykalnego (scale-up) zasoby są niedostępne. Zwykle taka niedostępność trwa około 10-15 minut, ale jednak może to być problematyczne. Mogą zdarzyć się także sytuacje, w których ktoś będzie jednak pracował dłużej i nagłe wyłączenie zasobu przerwie mu pracę. Dlatego ważne jest aby cały zespół miał świadomość, kiedy zasoby są skalowane/wyłączane.
Jak zautomatyzować włączanie i wyłączanie usług?
Najprostszym sposobem jest skorzystanie z Automation Account i utworzenie w Runbooka, w którym uruchomimy kod Powershell’owy. Takie rozwiązanie ma dużo zalet. Przede wszystkim do tak prostego zadania, jak wyłączanie i włączanie usług, sprawdzi się idealnie. Nie musimy martwić się o autoryzację, jest ona realizowane przez Automation Account. Po drugie, jednym poleceniem w Powershell’u możemy wykonać wszystkie niezbędne czynności administracyjne. W przypadku tak prostych rzeczy jak włączenie czy wyłączenie usługi, ogarniemy to jedną komendą. Trzecim powodem jest możliwość wybrania czasu, w którym nasz Runbook będzie się uruchamiał. Jeśli chcemy codziennie o 19:00 wyłączać usługę, nie ma problemu! Kolejna zaleta to ogromna galeria gotowych skryptów, które wystarczy zaimportować. Całość można bardzo szybko przygotować. Jak? Zapraszam do dalszej części artykułu.
Do dzieła!
- Pierwszym krokiem jest utworzenie Automation Account. Nie jest to skomplikowane, ale należy pamiętać o zaznaczeniu opcji Create Azure Run As account.
2. Aby nasze skrypty Powershell’owe zadziałały, potrzebujemy kilku modułów. Musimy je więc doinstalować. Mi będą potrzebne dwa – Az.Accounts i Az.AnalysisServices. W zależności od operacji jakie chcemy wykonywać, może być potrzeba doinstalowania innych modułów.
3. Teraz utworzymy Runbooka. Kod źródłowy dostępny jest tutaj. Skrypt przyjmuje 3 parametry:
– nazwę RG, w której znajduje się Analysis Services,
– nazwę instancji AS,
– typ akcji którą chcemy wykonać (będzie to włączenie lub wyłączenie usługi).
Oczywiście, na potrzeby demonstracyjne, skrypt jest bardzo uproszony. Już w tym momencie możemy Runbooka odpalić ręcznie, ale nie to jest naszym celem.
4. Dodajmy harmonogram. Dzięki temu nasz skrypt będzie uruchamiany codziennie o konkretnej godzinie. Najpierw skonfigurujmy opcję Schedule, a następnie podajmy parametry.
Potrzebujesz więcej?
W galerii mamy znacznie więcej Runbooków, które można wykorzystywać do wyłączania maszyn wirtualnych, skalowania baz itd. Dokumentacja dostępna jest tutaj. Warto pamiętać, że podane przeze mnie rozwiązanie to tylko przykład. W zależności od projektu, podejście do wyłączania nieużywanych zasobów może być różne. W mojej opinii wykorzystanie Runbooków jest proste i skuteczne, ale to tylko punkt widzenia dewelopera BI.