Dobra, zamiast Google teraz będzie Azure a Google będzie później. Cieszę się bo z Azure chcę się pobawić. Microsoft zrobił to tak prosto, że nawet nie potrafiąc programować jestem wstanie stworzyć funkcję i ją odpalić. Ale do tego tematu chyba jeszcze kiedyś wrócę. Tak czy siak zaczynamy zabawę z Azure Functions. Ze względu na niski próg wejścia w Azure Functions, pójdziemy na początku od najmniejszej linii oporu – opcji Try.

Opcja Try umożliwia nam bez zakładania konto w Azure stworzenie funkcji i jej przetestowanie. Przy czym umożliwi nam ona przejście przez proces tworzenia funkcji z poziomu UI jak i pokazuje co możemy zrobić z poziomu UI. Jak pamiętacie w AWS Lambda (część 3) nie dało się tam za dużo nic zrobić. Tutaj wręcz przeciwnie.

Try

By rozpocząć wchodzimy na link Azure Functions i klikamy Try It For Free:

Azure Functions - Wybór testowych funkcji
Azure Functions – Wybór testowych funkcji

Następnie wybieramy rodzaj trigerra który wykona naszą funkcję – Webhook + API to na przykład odwołanie się do jakiegoś HTTP Endpoint. Timer to uruchomienia funkcji po jakimś czasie lub co jakiś czas. Data processing zaś umożliwia wykonanie naszej funkcji jak wydarzą się jakiś konkretne zdarzenia na danych – w tym przypadku będzie to dodanie elementu do kolejki. Jeżeli chcemy mieć super przejrzysty kod to opcje Timer i Data processing będą najlepsze – gdyż będą jedno-lijkowe. Jednak nie przejmujcie się jaką opcję wybierzecie, w edytorze będziecie mogli dodawać kolejne funkcje i je sobie testować.

Ja wybrałem Webhook + API. Po utworzeniu pokazuje nam się edytor, tak edytor, w którym możemy pisać zarówno w C# jak i w JavaScript jak i w innych językach. To nie jest to samo co AWS. Microsoft ma projekt opensource który się zwie Monaco – jest to edytor kodu osadzony w przeglądarce a i także jest to edytor, który wspiera VS Code. Więc jak chcecie edytor do aplikacji, to nie musicie go daleko szukać (MIT lic). Podgląd i demo edytora można zobaczyć tutaj.

Azure Functions - Edytor Monaco jako edytor funkcji
Azure Functions – Edytor Monaco jako edytor funkcji

Kilka rzeczy, na które warto z miejsca zwrócić uwagę:

  • Na górze istnieje przycisk Get function URL – a to znaczy, że możemy wziąć sobie taki URL i go wklejać w przeglądarkę i będzie nam to działało. Taki url zawiera odpowiednią wersję klucza (patrz sekcja Manage);
  • Po lewej stronie mamy grupowanie funkcji, dzięki czemu nasze jedno rozwiązanie może składać się z kilku lub kilkunastu funkcji i być deployowane jako jedna całość. Bardzo przydatne, kiedy pracujemy nad jakimś konkretnym rozwiązaniem który składa się z 20 funkcji;
  • Sekcja integration umożliwia nam określić odpowiednie triggery (doprecyzować domyślne ustawienia), określić jakie dane są danymi wejściowymi oraz co jest daną wyjściową jeżeli cokolwiek jest;
  • Manage umożliwia włączenia i wyłączanie funkcji oraz zarządzanie kluczami które zwiększają zabezpieczeni, więcej można poczytać w dokumentacji.
  • Monitoring umożliwia proste monitorowanie funkcji – informacja jaka funkcja została wywołana z jakimi parametrami i jaki był wynik wykonania. Jeżeli zaś chcemy mieć coś bardziej zaawansowanego możemy wykorzystać Azure Application Insights;
  • Po prawej stronie mamy dwie sekcje o których zaraz View files i Test;
  • Oraz jak to w VS konsolę z logami.

Tak jak przy prostych zabawach lewe menu raczej nie będzie nam potrzebne tak już prawe menu jest dość interesujące. Skoncentrujmy się najpierw na sekcji Test.

Test

Test umożliwia nam zdefiniowanie parametrów testowych w tym zarówno sposobu w jaki my będziemy wywoływać funkcję jak i z jakimi parametrami. Dla przykładu HTTP ma domyślnie ustawioną metodę na POST. Zmieńmy to na GET i dodajemy query parametr o nazwie name. Dlaczego name? Bo kod się do niego odwołuje i nie trzeba go zmieniać. Jeżeli wszystko się udało to po Run otrzymamy taki wynik:

Azure Functions - Okno testowania funkcji
Azure Functions – Okno testowania funkcji

Jeżeli chcemy by metoda była POST to możemy zmienić metodę na POST i wtedy będziemy mogli edytować Request body. Warto zwrócić uwagę, że zgodnie z kodem, querystring ma pierwszeństwo.

View Files

Ta sekcja zaś jest BARDZO interesująca. To jest coś czego nie byliśmy wstanie zrobić w AWS. Mianowicie możemy wgrać dodatkowe pliki które są niezbędne do tego by nasza funkcja działała! Na przykład plik graficzny który będziemy zwracać, dodatkowy kod, zależności. COKOLWIEK co potrzebujemy by nasza funkcja działała poprawnie (oczywiście w Try jest to ograniczone). Do tego możemy tworzyć nowe pliki/klasy. Mamy tak jakby mini edytor online całego rozwiązania a nie tylko JEDEN funkcji:

Azure Functions - Okno zarządzania plikami
Azure Functions – Okno zarządzania plikami

Co dalej?

Mamy łącznie 60 minut na zabawę. Można się więc pobawić i potworzyć nowe funkcje zobaczyć co one nam dają. Zarówno jak to wygląda z poziomu C# jak i JavaScript. W tym celu klikamy na + przy Functions po lewej:

Azure Functions - Okno wyboru szablonu funkcji
Azure Functions – Okno wyboru szablonu funkcji

Ekran przypomina ten z AWS prawda? Trochę tak. Dla zabawy wybierzmy sobie JavaScript i GitHubWebHook-JavaScript. Po wyborze trzeba nadać nazwę funkcji (czasami jeszcze jakieś inne parametry jak na przykład częstotliwość powtarzania wykonania funkcji przez timer) i kliknąć Create. TYLE. Mamy już funkcję, która działa i robi za GitHubWebHook. Wystarczy, że teraz wejdziemy w GitHub i dodamy sobie webhook do naszego repro. I za każdym razem jak coś wykonamy odpowiednie dane zostaną wysłane do naszej funkcji. Proste? BANALNE.

Fajnie jest to, że też możemy od razu przetestować – bez konieczności tworzenia niczego po stronie GitHub. Wystarczy odpalić test tak jak poprzednio i koniec, w sensie, nie musi być hook by móc sprawdzić czy endpoint nam zadziała

Teraz jak już jesteśmy obeznani trochę z interfejsem i wiemy co i jak możemy zrobić warto pobawić się Azure Functions za pomocą wyzwań dostępnych na stronie Azure. Te wyzwania przeprowadzą nas przez kilka funkcjonalności Azure oraz przez pewne scenariusze wykorzystania FaaS. Nie są one trudne do implementacji, ale dają dobry i ciekawy pogląd na sprawy.

Podsumowanie

Jak widać wejście w Azure Function nie jest TRUDNE, wręcz jest BANALNIE proste. Trzeba tylko klikać. Do tego dowiedzieliśmy się, że UI jest dużo bardziej przyjazne dev i dające więcej możliwości niż taki AWS. Nie było tutaj nic super ciężkiego i niezrozumiałego. Zarówno kod C# jak i JavaScript był dość przejrzysty.

Testowaliście już Azure Functions? Coś wam zapadło w pamięć?

2 KOMENTARZE

  1. Super Gutek! :)
    Warto tez pamiętać o narzędziach dla VS 2017 – https://blogs.msdn.microsoft.com/webdev/2017/05/10/azure-function-tools-for-visual-studio-2017/ – dzięki czemu można pisać i testować Functions lokalnie z poziomu VS, a dodatkowo o Azure Functions Runtime – https://docs.microsoft.com/en-us/azure/azure-functions/functions-runtime-overview – co umożliwia uruchamianie Functions w lokalnej infrastrukturze :)

    I na koniec zapraszam na Build Tour – https://buildtour.microsoft.com/ – gdzie będę miał sesje właśnie o Azure Functions :)

ZOSTAW KOMENTARZ