Fun with Functions – tanie schedulowanie

Jest taka usługa w Azure jak Scheduler. Usługa jak usługa – pozwala odpalać pewien zestaw akcji, zasadniczo przewidzianych pod kątem webjobów, via request HTTP (do tych ręcznie wywoływanych) albo via kolejka (do tych continuous) o zadanym czasie. Ma różne opcje i udogodnienia, ale ma też wady – przede wszystkim raczej proste ustawienie cyklu, ogarnia co prawda strefy czasowe, ale czas letni/zimowy już nie, w dodatku w opcji bezpłatnej wykonywać można najczęściej co godzinę.

Jeśli nie mamy większych wymagań (pierwszy plan po darmowym kosztuje już niespełna 12 EUR/mc) to użyjmy sobie Functions. Tam podobną operację zrobić jest niezwykle łatwo za pomocą funkcji czasowej (TimeTrigger) z wyrażeniem CRON. Dzięki temu mamy dość elastyczny sposób dobierania okresu w jakim funkcja będzie odpalała, a wywołanie joba (czy tam innej funkcji) via kolejka jest w funkcjach super-trywialne.

Co prawda tutaj już całkiem nie ma żadnego wsparcia dla strefy czasowej, wszystko mamy w UTC, no ale strefę da się przeżyć, a od reszty mamy kod, nie? Podstawowe rzeczy można w miarę łatwo nadrobić (czas letni/zimowy, zakres dat w jakich działamy). Jeśli funkcja posłuży tylko do uruchamiania np. webjobów, a nie będzie brała workloadu na siebie, to koszt powinien być znikomy. Jeśli nie wykorzystujemy funkcji na subskrypcji zbyt wiele to kosztu nie będzie wcale bo raczej zmieścimy się w bezpłatnej quocie.

Osobiście używam do odpalania zadań w określone dni tygodnia. Po pewnych początkowych problemach (jak ktoś jest dociekliwy to znajdzie gdzieś w archiwum moje marudzenie) obecnie działa jak złoto, zastrzeżeń z żadnej strony brak (tfu, odpukać).

Ogólnie temat podejścia do schedulowania i cyklicznego wywoływania różnego typu zadań w Azure to ciekawa sprawa. Można to rozwiązać na więcej sposobów. Weźmy takiego np. samoschedulującego się joba… Ale to może przy innej okazji 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.