Service Fabric, dzień 4 – Service/Actor API

Service Fabric udostępnia dwa frameworki do tworzenia mikroserwisów w swoim obrębie:

  • Reliable Service API – pozwala na bezpośredni dostęp do elementów Service Fabric jak połączenia czy stosy komunikacyjne,
  • Reliable Actor API – jednowątkowy, asynchroniczny model programowania z wykorzystaniem, a jakże, aktorów. Pozwala implementować aktora jak jednowątkowy singleton.

Różnią się przede wszystkim tym, że Actor API jest frameworkiem wyższego poziomu, operującym na wyższym poziomie abstrakcji.

Takie dwupoziomowe podejście to ciekawa opcja. Można wykorzystać bardziej przystępny, intuicyjny model do tworzenia nawet skomplikowanych projektów czy do sprawnego wykonania proof of concept albo użyć niższego poziomu jeśli chce się wycisnąć z usługi jej maksimum i przede wszystkim mieć pełną kontrolę nad wszystkim.

Blogging achievement

Nic nie zapowiadało małego napadu dumy. Po prostu otworzyłem feeda z ulubionymi blogami. Przeglądałem sobie tematy, które akurat mnie dotyczą, które lubię i które mnie interesują, aż tu nagle buch. Kto nie zna Scotta Hanselmana? Wszyscy znają. No i on właśnie napisał w ostatnią sobotę na swoim blogu o Azure Functions. Napisał obszernie, co zrobił, jak, ile czasu mu to zajęło, konkludując, że

So in just about 15 min with no idea and armed with just my browser, Postman (also my browser), Google/StackOverflow, and Azure Functions I’ve got a backend proof of concept.

– Scott Hanselman, www.hanselman.com

Wypisz wymaluj moje wrażenie stąd. Być dwa dni przed Scottem Hanselmanem. Achievement unlocked! 🙂

Historia jednego backslasha

Nie działa. No ale jak to? Specjalnie sprawdzałem na releasowym buildzie. Cóż, zdarza się. No to zaczynamy poszukiwania. Na początek monitoring – błędów aplikacji nie ma, błędów serwera nie ma. Ulubiony rodzaj bugów – nic się nie sypie, ale nie działa. Odpalamy loga – czysto. Podnosimy szczegółowość. O, coś jest, tzn. właściwie nie ma, a powinno. OK, to przynajmniej wiadomo, że raczej nie kod. No to zabieramy się za przeglądanie konfiguracji. Kawałek po kawałku, najpierw konfiguracja API, potem IIS. Nic podejrzanego. Hm. Musiałem przeoczyć coś. To jeszcze raz. Historia monitoringu, log, API, IIS, no nic tu nie ma, tylko prosty pattern. Prosty. Pattern. Facepalm.
Te dwie godziny sponsorowane były przez „unescaped slash”. A tyle ostatnio siedziałem w regexach, widać przesyt też nie jest dobry na jasność umysłu.

Czytania weekendowego cd.

Dziś zaległy (bardzo) numer czerwcowy i kilka tematów nieco bardziej obok stricte techu.
„Agile i Waterfall – wdrożenia a zapisy umowy” zainteresowało mnie pod kątem potencjalnego zastosowania wewnątrz organizacji, jako, że akurat nie pracuję w ani dla firmy tworzącej i wdrażającej rozwiązania dla swoich klientów.
„Nie ufamy chmurze” – warto się dowiedzieć jak to wygląda w przekroju całej branży bo moje tzw. najwyższe kierownictwo jest bardzo techniczne i problem nie występuje.
„Jak zdobyć mobilnego klienta i na nim zarobić” – OK, ten tytuł jest trochę zbyt szumny. Na co dzień blisko współpracuję z marketingiem i PR i mogę powiedzieć tylko tyle – That’s cute. Oczywiście przytoczone informacje są prawdziwe, ale to temat rzeka. Jest parę przykładów gier-hitów, ale „gra” to jest za szerokie określenie. Taktyki pozyskiwania i zatrzymywania klientów dramatycznie się różnią w zależności od gatunku i grupy docelowej.

Weekendowe lektury papierowe

Zabrałem się za małe nadrabianie lektury. Czasem lubię poczytać z papieru, tzn. ogólnie lubię, książka dobra rzecz, ale tym razem branżowo – to już zdarza mi się rzadziej. Tym razem sierpniowy numer IT professional.

Trochę przekartkowałem, trochę poczytałem dokładniej. Z jednej strony poczułem się lekko zbudowany, że na niektóre sprawy poruszone w tym numerze udało mi się z własnej inicjatywy zwrócić uwagę i odzwierciedlić to we wpisach tutaj. Być może moje postrzeganie branży nie jest tak chaotyczne jak mi się wydawało. Z drugiej z kolei znowu poczułem daleko idące braki w czasie na edukację, szczególnie po lekturze krótkiego, ale konkretnego Big Data as a Service. Mam nieodparte, graniczące z pewnością wrażenie, że osobie z moimi ambicjami i pomysłami na przyszłość wypada znacznie więcej wiedzieć o tej dziedzinie. W Azure, w którym na co dzień pracuję, jest to dla mnie wciąż tak biała plama, że aż wstyd…

No nic, zobaczymy, czy ten kolejny sygnał pozwoli mi lepiej się zmotywować do ogarnięcia tego kierunku.

 

Piąteczek z C# 7.0

Dziś na .NET Blogu pojawił się wpis podsumowujący wszystkie planowane nowinki nadchodzącego C# 7.0. Zmiany są różne, część to takie małe poprawki, dzięki którym kodzenie jest zwyczajnie wygodniejsze, ale jest też parę perełek. Mam wśród nich trzech swoich faworytów.

  • Pattern matching –  używam genericów często i gęsto i kolejny sposób wygodnego tworzenia uniwersalnych metod bardzo mi się przyda,
  • Tuples – koniec ze strukturami tworzonymi z powodu jednego użycia i jakimiś potworkami w legacy code, które trochę zwracają, a trochę przepychają przez refy, a trochę przekazują przez zmienne globalne – burn in hell,
  • Local functions – ja rozumiem, że raz napisany kod powinien być reusable, ale bywają miejsca, gdzie faktycznie jest to bez sensu.

Teraz tylko muszę doczekać przejścia na nowe VS w firmie.

Na ASAPy – Azure Functions

Co tu zrobić jak przychodzi szef i mówi:

– Dostaniesz zaraz kawałek gotowego kodu. Kod działa, do tej pory był wywoływany ręcznie, teraz chcę żeby to pracowało w tle i uruchamiało się samo pod koniec tygodnia roboczego. A, i chciałbym mieć możliwość szybkiego zrobienia sobie samodzielnie zmian, żebym z każdą poprawką nie musiał do Ciebie biegać. Na kiedy to może być gotowe?

Optymalnie byłoby:

– Wychodzisz, czy chcesz popatrzeć?

Funkcja uruchomiona w planie Dynamic, więc głębsze zastanawianie się nad wydajnością chwilowo można było odsunąć na przyszłość. Wybrany Time Trigger. Kopiuj, wklej, lekko popraw – najwięcej czasu zajęło dołożenie usingów i ogarnięcie potrzebnych paczek nugetowych, bo kod do użycia to faktycznie był wycinek ze środka większej klasy. Dodać application settings, connection strings. Ustawić czas. Go!

Jak mnie się ta usługa podoba!

Nowinki, nowinki…

Dwa istotne newsy z tego tygodnia, dwie funkcjonalności na różnych etapach życia:

Wsparcie dla formatu JSON w Azure SQL kończy Preview i wchodzi w fazę General Availability. Yay! W dobie kiedy serwisy często wymieniają między sobą dane za pomocą tego lekkiego formatu możliwość wyciągnięcia informacji z bazy lub zapisu do niej wprost z JSONa jest słodziutka. Będę korzystał tak bardzo…

Wchodzi też kolejna nowość – otóż do każdego service planu, a wręcz do każdego deployment slotu w Web Appie możemy utworzyć sobie bazę MySQL stojącą razem z www. Co prawda nie nadaje się to (przynajmniej na razie) do tworzenia elastycznych systemów bo nie obsługuje skalowania, ale nadal jest to wielki krok naprzód. Jak mi się nie chciało za bardzo kombinować tak teraz będę się poważnie zastanawiał nad przerzuceniem tego bloga do Azure. A co 🙂

Service Fabric, dzień 3 – Podstawowa terminologia

Krótko o podstawowych, najważniejszych terminach używanych w trakcie zajmowania się Service Fabric:

  • Node – węzeł – proces runtime usługi Service Fabric, w praktyce – pojedyncza maszyna (w przypadku Azure – wirualna),
  • Cluster – klaster – zestaw węzłów (o wysokiej dostępności, niezawodności itd…),
  • Application – aplikacja – zbiór usług, mikroserwisów,
  • Service – usługa, mikroserwis – jednostka dostarczająca jakieś konkretne funkcjonalności
  • Partition – partycja – usługa może posiadać wiele partycji, tzn. być uruchomiona w wielu instancjach w klastrze, ten mechanizm służy do zarządzania obciążeniem – load balancing pomiędzy wieloma instancjami tej samej usługi,
  • Replica – replika – redundancja w ramach instancji (partycji) usługi, mechanizm służy do zapewnienia ciągłości działania – płynne przełączanie pomiędzy Primary i Secondary zarówno w trakcie wyłożenia się procesu usługi jak i w przypadku deployowania updatu.

Tyle na razie. Do tych jeszcze wrócimy, nadejdzie też parę nowych.

Azure User Group live z Krakowa

Kiedy wczoraj pisałem o community zupełnie zapomniałem, że dziś jestem w Krakowie na spotkaniu Azure User Group!

Dzisiaj bardzo interesujące tematy: IoT, Service Fabric i Functions. Nie pamiętam kiedy agenda była tak w punkt z moimi zainteresowaniami.

Here we go!

[19:00] Grubo, fajne przykłady rozwiązań architekturalnych dla IoT oraz wstęp do Service Fabric uzupełniony demkiem. Muszę koniecznie zrobić taki eksperyment u siebie. A na deser Functions…

AUGPL KRK 3

[20:00] Functions też było super, parę ciekawych wykorzystań i obejść dla mechanizmów, które teoretycznie dostępne są tylko w wyższych planach cenowych.

Pisałem już, że warto wybierać się na spotkania community? Pisałem, wczoraj. No, to warto 😉

I jeszcze jedno – tacy Panowie mówili na takie tematy: agenda spotkania.