17.08.20203 min

Adam KukołowiczCTO

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.

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>

Powiązane artykuły

Dziel się wiedzą ze 160 tysiącami naszych czytelników

Zostań autorem Readme

Simple SA

Java Developer (Mid/Senior)

medium

7 000 - 15 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Dobrze
JavaSpringSpring Boot

Amsterdam Standard Sp. z o.o.

PHP Developer

medium

10 000 - 16 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 13.03.2022

Bardzo dobrze
PHPSymfony
Dobrze
JavaScriptTypeScriptVueJS

Affirm

Software Engineer (Python)

medium

13 600 - 16 100 PLN

Umowa o pracę

Warszawa

Praca zdalna 100%

Ważna do 26.02.2022

Dobrze
PythonReact
Początkująco
AWSKubernetesSpark

Sapiens Software Solutions Poland Sp. z o.o.

Java Developer

medium

Znamy widełki

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Bardzo dobrze
JavaJava script

Polcode Sp. z o.o.

Go Developer

medium

18 500 - 28 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Bardzo dobrze
Go
Dobrze
MicroservicesMySQL / MariaDBUnix

DataArt

verified

Full Stack/Back-end (Ruby + AWS) Software Engineer, Data Warehouse

medium

Do 19 000 PLN

Umowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Dobrze
RubyRuby on RailsAWS

DataArt

verified

Full Stack (Ruby + React) Engineering Manager, Data Warehouse

senior

Do 24 000 PLN

Umowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Bardzo dobrze
RubyRuby on RailsReact
Dobrze
JavaScriptAWS

DataArt

verified

Ruby Developer, Art Business App

medium

Do 22 000 PLN

Umowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Dobrze
rubyRuby on RailsReact

DataArt

verified

Ruby Developer (AWS), E-commerce Solutions

medium

Do 19 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Dobrze
RubyAWSRuby on Rails

DataArt

verified

Full Stack (Ruby + React.js) Developer

medium

Do 19 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 26.02.2022

Dobrze
ReactRuby on RailsMS SQL