Azure Functions a skalowalność. Jak działa Application Insights i Live Metrics Stream

Azure Functions a skalowalność. Jak działa Application Insights i Live Metrics Stream

Na każdym blogu czy też w oficjalnej dokumentacji Microsoftu możemy przeczytać jak to Azure Functions potrafi się magicznie skalować. W tym wpisie pokaże wam jak sprawdzić czy wasza faktycznie się wyskalowała oraz ile serwerów postawiła.

 

Podczas tworzenia funkcji z portalu zaznaczmy opcję “Application Insights” i klikamy stwórz

Kolejnym krokiem będzie napisanie naszej pierwszej funkcji która będzie wrzucać do kolejki elementy. Naszym wyzwalaczem będzie zapytanie Http a zadaniem funkcji dodanie obiektu do Azure Storage. Nad samym kodem który wykonuje to dane zadanie nie będę się rozpisywał ponieważ wszystko jest dostępne na portalu 🙂 Dodając nowy output, macie możliwość konfigurować ustawienia danego zadania oraz macie dostęp do dokumentacji. Jest ona wystarczająca do stworzenia takiej funkcji. Do zapytania Http polecam użyć Postmana .

Dla tego zadania napisałem drobny kod w c# który pomógł mi w szybki sposób zapełnić kolejkę 200 tyś elementami.

 

Skoro mamy już naszą kolejkę zapełnioną to czas coś z niej ściągnąć. Do tego również użyjemy Azure Functions 🙂 Tworząc ją wybieramy “Queue trigger” jako nasz wyzwalacz. Już na samym stracie podpowiadają nam z jakiego “storage” chcemy pobierać wartości oraz z jakiej kolejki. Klikając new Azure sam zaproponuje nam dostępne magazyny danych. Niestety nazwę kolejkę musimy wpisać ręcznie.

Tak naprawdę to już koniec konfiguracji. Azure sam już zajmie się resztą i ściągnie elementy z kolejki. W tym wypadku nie dodajemy output-a ze względu na to, że chcemy sprawdzić jak skaluje się azure a nie wykonać jakąś akcję. Kiedy mamy już dodane elementy do kolejki i gotową funkcję przejdźmy do Application Insights. Co ważne, nie uruchamiajcie funkcji za w czasu ponieważ bardzo szybko znikną wam rzeczy z kolejki i nie zobaczycie efektu :D.

 

Application Insights pozwala nam podejrzeć statystyki naszej usługi. Podłączyć je możecie nie tylko pod Azure Functions ale również pod WebApp. Już na starcie dostajemy informację takie jak czas odpowiedzi serwera , błędy 500 czy też ilość requestów w danym czasie . To co nas najbardziej interesuje to “Live Metrics Stream”. Super usługa która pokazuje w czasie rzeczywistym co się dzieje z naszą aplikacją. Kiedy klikniemy na zaznaczony guzik ukaże się nam plansza która informuje, że coś nie działa. Spokojnie, teraz jest czas aby uruchomić naszą funkcję :).

W górnej części zdjęcia widzimy ilość serwerów online, natomiast w dolnej faktyczne zużycie danych przez konkretny serwer. Po prawej stronie mamy wpisane logi a w centrum dokładniejsze informacje od tych które były na pierwszej stronie.

Testując Azure pod względem skalowalności, stworzyłem kolejkę która miała ponad 200tyś elementów. Azure postawił mi wtedy 8 serwerów gdzie każdy ściągał około 250 requestów/s.  Co najlepsze nie zapłaciłem za to nic 🙂



Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *