W dokumentacji Microsoft przeczytamy, że Azure Service Fabric to platforma wspomagająca tworzenie, deployment oraz zarządzanie skalowalnymi i niezawodnymi mikroserwisami. Definicja jest nieco zawiła i mało obrazowa dla osób które wcześniej nie pracowały z podobnym rozwiązaniem. Co to właściwie oznacza? No cóż, zacznijmy od końca, czyli od pojęć “skalowalny” i “niezawodny”.

Skalowalność oznacza możliwość łatwego powiększenia systemu, czyli najczęściej dołożenie kolejnych instancji serwisów. Załóżmy, że mamy prosty system w oparciu o mikroserwisy. Jeżeli wystawiłem kilka małych aplikacji webowych na moim serwerze IIS to skalowanie mogę osiągnąć poprzez dołożenie kolejnego serwera. Trudne, drogie i powolne. Uruchomienie nowych instancji aplikacji na tym serwerze nic nie da bo dalej będę ograniczony przez zasoby sprzętowe.

Lepiej ma się sytuacja jeśli buduję w oparciu o Azure AppServices. Tutaj mogę już łatwiej rozszerzyć aktualny App Service Plan aby dołożyć nowe instancje aplikacji na nowych maszynach wirtualnych (tak właśnie działa opcja “Scale out”). Jednak mimo ogromnej wygody takie rozwiązanie ma też swoje limity jak np. brak możliwości skalowania konkretnego serwisu. Czy to ma znaczenie? Tak. Dla przykładu w “Czarny Piątek” sklep internetowy musi być przygotowany na obsłużenie większej liczby użytkowników i transakcji, ale moduł historii transakcji lub resetowania hasła może zostać bez zmian i nie powinien marnować świeżutkich zasobów (nawet jeśli do przykładu można się przyczepić, to zasadę powinniście załapać).

Jeśli mowa o “niezawodności” to tu skupiamy się na tym aby system działał stabilnie a użytkownik nie doświadczał przerw w korzystaniu z usług.

2018-08-15_21-36-40.png

Zapewnienie tego na jednej maszynie jest niemożliwe do osiągnięcia – coś padnie, trzeba zrestartować serwer… a użytkownik w tym czasie dostaje błąd. Aby sprawić, że system działa stabilnie w razie awarii jednej z maszyn lub po prostu zawieszenia się jednej z aplikacji należy zaimplementować mechanizm przekierowywania ruchu na inną, “zdrową” instancję aplikacji. Znowu, Azure App Service powinno zapewniać lepszy poziom niezawodności jednak i tutaj zdarzają się sytuacje kiedy wymagany jest restart aplikacji, szczególnie po skalowaniu App Service Planu (nie mówiąc o tym, że samo skalowanie “pionowe”, czyli polepszenie specyfikacji serwera, zawsze związane jest z pewnymi przerwami w pracy aplikacji).

Idąc dalej, praca z mikroserwisami to też zmaganie się z wieloma nowymi problemami jak na przykład:
– komunikacja między serwisami, service discover
– obsługa stanu aplikacji w przypadku skalowania (dotyczy serwisów stanowych)
– security
– tworzenie paczek i przygotowanie do deploymentu
– wgranie nowej wersji aplikacji i zapewnienie, że na wszystkich maszynach wersja jest taka sama oraz ewentualny powrót do poprzedniej wersji w razie problemów.
– utrzymanie wielu wersji tej samej aplikacji (wsparcie dla A/B testing)

Do tego wszystkiego dochodzi jeszcze monitorowanie stanu zdrowia mikroserwisów (przecież zdarza się, że któraś instancja dostała w kość i przestała odpowiadać), zarządzanie infrastrukturą… Żeby to wszystko obsłużyć, trzeba się dobrze napracować. No, ale dobrze, żeby jeszcze było tanio 🙂

I tu właśnie wchodzi Azure Service Fabric (ASF, nie mylić z ASF-by-google) czyli platforma, która ma za zadanie rozwiązać wszystkie wymienione powyżej problemy. I rozwiązuję. “Jak” to już temat na osobne wpisy, które mam nadzieję ukażą się już wkrótce.

Z jednej strony Azure Service Fabric to część odpowiedzialna za infrastrukturę (zbudowanie klastra w którego skład wchodzą maszyny wirtualne, load balancery, sieci wirtualne, adresy IP i wiele innych elementów w zależności od docelowej architektury klastra), a także platforma aplikacyjna do monitorowania aplikacji i zapewnienia odpowiedniego sterowania klastrem (deployment, startowanie i przenoszenie serwisów między maszynami wirtualnymi, obsługa błędów, odpowiedni interfejs do podglądu stanu klastra, reverse proxy, które wspiera Service Discovery… i to oczywiście nie koniec).

Ponadto ASF dostarcza SDK dzięki któremu możemy w łatwy sposób nad tym wszystkim zapanować i wykorzystać jego dodatkowe supermoce jak na przykład doskonałe wsparcie dla skalowania serwisów stanowych czy programowanie w oparciu o model “Reliable Actors”.

asf

A czy ktoś z tego w ogóle korzysta?

Można powiedzieć, że ASF jest już technologią dojrzałą i sprawdzoną w akcji. Sam Microsoft oparł o nią swoje kluczowe usługi jak choćby CosmosDb, Azure SQL Databases, Cortana, Skype for Business, ale też wiele innych. W firmie, w której obecnie pracuję, budujemy nasz produkt w oparciu o Azure Service Fabric od ponad roku i muszę powiedzieć, że rozwiązało to całą masę problemów, z którymi zmagaliśmy się wcześniej. W tym czasie nie mieliśmy do czynienia z żadnym większym problemem ze strony platformy.

“Brzmi fajnie, ale to na pewno nie dla starych systemów”

Możesz myśleć, że to wszystko wymaga przepisania systemu od nowa, ale tak nie jest. ASF pozwala na uruchamianie aplikacji w wielu modelach – jako dedykowane serwisy stanowe/bezstanowe, serwisy ASP.NET Core, wspierany jest też model aktorowy. Ponadto możemy uruchamiać aplikacje w trybie “Guest executable” czyli odpalać pliki wykonywalne, a także uruchamiać kontenery zarówno Windowsowe jak i Linuxowe. Te dwa ostatnie dają nam ogromną elastyczność. To znaczy, że jeśli masz obecnie aplikację ASP.NET Core, to możesz ją łatwo przenieść do ASF. Node.js tak samo. Java też. Docker też. Ba, starą aplikację WebForms też można zapakować do kontenera i skalować dzięki ASF (… pojechałem z przykładem, ale widziałem już na sieci taką próbę).
A jeżeli nie ufasz tym całym chmurom i azurom, to pamiętaj, że Azure Service Fabric można zainstalować też w trybie on-premise na własnej infrastrukturze.

Podsumowanie

W skrócie Azure Service Fabric to platforma, która pozwalać tworzyć systemy mikroserwisowe “like a pro”. Jest wystarczająco dojrzałe, aby oprzeć na nim nowy projekt, ale nadaje się również do wdrożenia w istniejących projektach. W związku z tym, że skalowalność, niezawodność i inne zalety wynikające z zastosowania architektury mikroserwisowej jest na celowniku poważniejszych graczy, znajomość ASF otwiera Ci drzwi do bycia pożądanym i wysokoopłacanym ekspertem $-]

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s