Adam Kukołowicz
Adam KukołowiczCo-founder @ Bulldogjob

Projektowanie mikroserwisów w stylu funkcyjnym

Dowiedz się, kiedy i dlaczego styl funkcyjny może być lepszy do projektowania mikroserwisów oraz w jakich przypadkach odradza się wybór takiego rozwiązania.
17.08.20203 min
Projektowanie mikroserwisów w stylu funkcyjnym

Już we wrześniu odbędzie się kolejna edycja Konferencji Infoshare 2020. W tym roku wyjątkowa, gdyż odbędzie się w wersji online. W dniach 23-25 oraz 28-30.09 uczestnicy zdalnie dołączać będą do streamów online, emitowanych prosto z Gdańska. Prelegentami będą polscy i światowi eksperci, którzy chętnie dzielą się wiedzą na scenie, jak i poza nią. 

Jako CTO Bulldogjob.pl, przeprowadziłem wywiad na temat projektowania mikroserwisów w stylu funkcyjnym z jednym z prelegentów - Uberto Barbinim.


Adam: Mikroserwisy są teraz wszędzie. Podejście to jest dobrze przetestowane, a większość programistów preferuje obiektowy styl programowania. Jakie wady programowania obiektowego widzisz, jeśli chodzi o tworzenie mikroserwisów?

Uberto: Zacznijmy od tego, że programowanie obiektowe to świetny paradygmat do radzenia sobie ze złożonością. Opiera się ono na idei ukrywania stanu wewnętrznego w obiektach i używania wiadomości do komunikacji.

Mamy obszary, w których działa to bardzo dobrze. Są to, na przykład, UI i Single Page Applications, ale z mojego doświadczenia wynika, że nie przekłada się to dobrze na mikroserwisy.

Jest to równia pochyła, przez którą kończymy z mocno powiązanymi i mętnymi mikroserwisami, które są trudne do zmodyfikowania i debugowania. Jest to również rzecz, na którą ludzie się najbardziej skarżą. 


W jakich aspektach programowanie funkcyjne jest bardziej odpowiednie dla mikroserwisów? Jakie są jego najważniejsze korzyści?

Wydaje mi się, że chodzi głównie o zmianę sposobu myślenia. Programowanie funkcyjne kładzie nacisk na przejrzystość stanu i niemutowalne dane. Zachowanie pojawia się dzięki połączeniu czystych funkcji.

Jest to również bardzo podobne do idealnej architektury opartej o mirkoserwisy: chcemy, aby pojedyncze mikroserwisy były proste i miały przejrzyste API, które nie opiera się na stanie innych usług.

Programowanie funkcyjne jest wspaniałym narzędziem do projektowania systemów w taki właśnie sposób.


Jeśli znasz jakieś rzeczywiste porównanie dwóch mikroserwisów, które robią to samo, ale używają różnych podejść, to jak porównać ich strukturę, łatwość utrzymania i złożoność?

Z mojego doświadczenia wynika, że końcowy wynik może być podobny, ale wysiłek potrzebny do zbudowania dobrej architektury mikroserwisów za pomocą programowania funkcyjnego jest niższy niż robienie tego samego z tradycyjnym programowaniem obiektowym.

W rzeczywistości wiele systemów godzi się na nieoptymalną architekturę tylko dlatego, że trudno jest coś dobrze zaprojektować za pomocą programowania obiektowego.


Przejdźmy teraz do event sourcingu i CQRS - dlaczego dobrze pasują one do programowania funkcyjnego? Czy jest to takie proste, że aż nie potrzebujesz frameworku?

Jest to, szczerze mówiąc, rzecz, która mnie zaskoczyła. Wdrażanie CQRS w ściśle funkcyjny sposób wydaje się za proste.

Tworzymy własne biblioteki w ciągu kilku tygodni i korzystanie z CQRS razem z event sourcingiem jest dla nas tak łatwe, że używamy go wszędzie. Jest to szybsze niż używanie tradycyjnej bazy danych "stateful" razem z niezgodnością paradygmatu, która próbuje utrwalać obiekty.


Kiedy odradzałbyś stosowanie podejścia funkcyjnego? Jakie wyzwania czekają w przypadku tworzenia mikroserwisów w stylu funkcyjnym?

Nie wszystko pasuje do programowania funkcyjnego. Wspomniałem już o SPA i UI. Inną kwestią jest zespół: muszą być jakieś wskazówki od osoby z doświadczeniem w takim typie programowania. W przeciwnym razie łatwo o błędy.

Nie znam też dobrej książki o budowaniu aplikacji przy użyciu programowania funkcyjnego, więc zacząłem ją pisać.

O prelegencie

Uberto jest programistą-poliglotą i zaangażowanym architektem oprogramowania z ponad 20-letnim doświadczeniem w projektowaniu i tworzeniu udanych produktów w wielu branżach. Jest on pełen pasji i niezłomny, jeżeli chodzi o sposób dostarczania wartości do biznesu nie tylko raz, ale też regularnie. Szczególnie interesuje się programowaniem funkcyjnym i obliczeniami rozproszonymi, ponieważ są one niezbędne we współczesnych wyzwaniach programistycznych.

Poza kodowaniem, uwielbia przemawiać publicznie, pisać i uczyć programowania. Obecnie pisze książkę o pragmatycznym funkcyjnym Kotlinie. Jego artykuły możesz przeczytać tutaj.



Infoshare 2020 Online - wirtualny festiwal społeczności napędzanej technologią!

Najnowsze trendy technologiczne, startupy, innowacje, wyzwania biznesu w czasach pandemii. To wszystko podczas Infoshare 2020. Największa konferencja technologiczna w Europie Środkowo-Wschodniej w formacie online, transmitowanym na cały świat z Gdańska potrwa 6 dni i odbędzie się w dniach 23-25 i 28-30 września. Na uczestników czeka aż 9 scen tematycznych z prelekcjami na żywo i niespotykane dotąd możliwości networkingu. 

Kup bilet już dziś!

<p>Loading...</p>