Orkiestracja mikroserwisami w procesie biznesowym: zapanować nad chaosem

21/01/2021

Mikroserwisy na dobre zagościły już w wielu rozwiązaniach. Jak każdy styl architektury systemów IT mają swoje wady i zalety, ale z pomocą przychodzi orkiestracja mikroserwisami. Czym tak naprawdę jest mikroserwis czy mikrousługa?

W skrócie jest to niezależna aplikacja, która odpowiada za realizowanie konkretnej funkcji biznesowej. Aby stworzyć proces realizujący mniej lub bardziej złożone operacje potrzebujemy tych aplikacji kilka, czasem nawet kilkanaście. Jeśli założymy, że nasz system to więcej niż jeden proces, może się okazać, że takich aplikacji będzie dużo więcej. Z jednej strony jest to problem, ale z drugiej takie podejście daje nam dużo większą elastyczność w rozwoju aplikacji, dzięki czemu możemy dużo szybciej dostarczać wartość biznesową. Każda usługa może być rozwijana i wdrażana niezależnie, przez dedykowany zespół specjalistów, który ma swobodę doboru narzędzi i technologii najlepiej pasujących do rozwiązywanego przez nich problemu.

W dalszej części artykułu chcę skupić się na tym, w jaki sposób przy pomocy niezależnych usług możemy realizować złożone procesy biznesowe, na jakie problemy natrafimy i jak można próbować nim zaradzić. W celu lepszego zrozumienia tematu przyjmijmy, że będziemy rozpatrywać działanie systemu w firmie realizującej naprawy sprzętu telekomunikacyjnego. Sprzęt dostarczany jest do firmy za pośrednictwem firmy kurierskiej. Poniżej znajduje się przyjęty podział na usługi oraz proces obsługi sprzętu.

Komunikacja bezpośrednia 

Mikroserwisy realizują powierzone im zadania. W tym celu komunikują się z innymi usługami, by pozyskać niezbędne do realizacji dane lub podzielić się wynikiem. Wszystko po to, by zrealizować zadanie i przejść do kolejnego kroku w procesie.

Jednym ze sposobów komunikacji pomiędzy usługami jest komunikacja synchroniczna z wykorzystaniem RESTa. Większość zespołów wykorzystuje takie podejście do tworzenia warstwy komunikacji w usługach, ponieważ jest to sposób relatywnie najprostszy, najlepiej znany i wymagający najmniej planowania. Niestety serwisy wykorzystujące jedynie ten sposób komunikacji są ze sobą ściśle powiązane (tight coupling), przez co bardzo mocno uzależniają się od siebie.

Duża ilość usług powoduje, że tworzymy sieć komunikacyjną pomiędzy nimi. Zmiana procesu biznesowego okazuje się być bardzo kosztowna, ponieważ wprowadzenie dodatkowego mikroserwisu może spowodować konieczność modyfikacji wszystkich innych, które będą się z nim komunikować. W jaki sposób unikać takich problemów? 

Rozwiązań jest co najmniej kilka. Na początek należy zastanowić się, co chcemy osiągnąć. W pierwszej kolejności należy skupić się na: 

Choreografia, a orkiestracja mikroserwisami

Rozwiązaniem części problemów może być zmiana sposobu podejścia właśnie do komunikacji. Zamiast tworzyć sieć usług komunikujących się ze sobą synchronicznie i bezpośrednio, można zastanowić się nad przejściem na luźniejszą formę komunikacji, tzw. zdarzenia (event). 

Usługa, która zrealizuje polecenie, komunikuje ten fakt innym usługom. Komunikacja pomiędzy usługami nie jest bezpośrednia (usługa -> usługa) – zdarzenie nie jest wysyłane do każdej z usług, ale na tzw. kolejkę. Dzięki takiemu podejściu nie ma sztywnego powiązania pomiędzy serwisami. Główną formą komunikacji jest wysyłanie i odbieranie zdarzeń z „kolejki”, a same mikroserwisy nie wiedzą, kto dokładnie jest odbiorcą naszej wiadomości. Wprowadzenie lub wyłączenie usługi odbywa się dużo niższym kosztem, ponieważ nie są wymagane zmiany w innych usługach.

Odpowiedzialność za wysoką efektywność, dostępność i niezawodność komunikacyjną przenosimy na zewnętrzny system („kolejka”). Rozwiązanie to ma jednak kilka wad. Wprowadzenie kolejki powoduje, że staje się ona głównym miejscem wymiany zdarzeń, tym samym okazuje się, że nasz system ma Single Point Of Failure. Awaria tego jednego elementu może spowodować, że system utraci zdolność realizowania procesu biznesowego. Dodatkowo musimy coraz więcej myśleć nad takimi zagadnieniami jak eventual consistency, czy też compensation events.

Przechodzimy na komunikację asynchroniczną, czyli każda usługa realizuje swoje zadanie po odebraniu konkretnego zdarzenia, ale w najlepszym dla siebie momencie. Przy takim podejściu bardzo łatwo o kłopoty. Łatwość tworzenia nowych usług powoduje, że szybko dokładamy nowe kroki w procesie, ale zaczynamy tracić z oczu widok całego procesu.

To, co wcześniej było zaplanowaną choreografią, zaczyna przypominać występ indywidualności. Kwestią czasu jest, aż któraś z mikrousług wyjdzie przed szereg i zacznie psuć proces i dane.

Rola orkiestratora

W tym momencie pojawia się rola orkiestratora. Jedna z usług może przyjąć funkcję polegającą na nadzorowaniu całego procesu. W uproszczeniu to orkiestrator wysyła komendę (command). Po otrzymaniu zdarzenia o zakończeniu wykonuje kolejną czynność i wysyła nową komendę do kolejnej usługi. Orkiestrator pilnuje również, by każda z usług wykonała poprawnie swoje zadanie, a w razie problemów potrafi odpowiednio „posprzątać”.

Usługi nadal są niezależne i nie wiedzą o swoim istnieniu. Wysyłają zdarzenia na kolejkę i tam również na nie oczekują. Główna różnica jest taka, że komendy inicjujące wykonanie funkcji wysyła jeden mikroserwis. Odpowiedzialność za prawidłowe wykonanie się całego procesu spada na jedną usługę. Wcześniej omówiony problem znika.

Rozwiązanie, jak każde inne również nie jest idealne. W momencie powołania orkiestratora równocześnie tworzymy kolejne wąskie gardło w systemie. Paraliż jednej usługi powoduje zatrzymanie całego procesu. 

Dodawanie nowych mikrousług wymaga wkomponowania ich w sam proces – należy pamiętać o zmianach w orkiestratorze. Tracimy elastyczność. Posiadanie kilku wersji tego samego procesu mocno komplikuje proces wytwórczy i same wdrożenia. Nie wystarcza już włączenie lub wyłączenie danej usługi. Należy pamiętać o implementacji kilku ścieżek procesu i zapewnić by każdy działał, jak zostało to zaplanowane.

Orkiestracja mikroserwisami a silniki „workflow”

Nawet orkiestracja mikroserwisami potrzebuje czasami wsparcia. Z pomocą przychodzą nam systemy implementujące silniki „workflow” . Dbają one o wysoką niezawodność, pozwalają monitorować proces oraz wdrażać kolejne jego wersje, bez likwidowania poprzednich. Dzięki narzędziom do zarządzania procesem biznesowym w bardzo łatwy sposób można wykorzystać kolejną usługę, wpinając ją w ścieżkę. Wszystko odbywa się z użyciem wizualnych narzędzi, a sam proces bardzo często definiowany jest przy pomocy standardów tj. BPMN 2.0.

Rozwiązania takie pozwalają zapanować nad chaosem powstałym w wyniku niekontrolowanego rozwoju procesu biznesowego.

Zeebe

Jednym z takich narzędzi jest Zeebe – darmowy, o otwartym kodzie silnik do zarządzania orkiestracją mikroserwisów oferujący: 

Orkiestracja mikroserwisami i rozwiązanie problemów z nią związanych – oto cel, jaki został postawiony przez twórców Zeebef. Udało się to osiągnąć dzięki: 

Śledzenie i monitorowanie

W przypadku bardzo dużych systemów migracja może okazać się bardzo kosztowna, wręcz nieopłacalna. W takim przypadku, zamiast przerabiać cały proces i generować duże koszty można skupić się na rozpoczęciu monitorowania procesu biznesowego.

Wykorzystując do tego celu Zeebe można w łatwy sposób zintegrować zaimplementowane usługi z silnikiem przepływów i „na żywo” monitorować proces biznesowy. Rozwiązanie jest na tyle nieinwazyjne, że nie wymaga dużych nakładów pracy, a sam silnik bardzo dobrze współpracuje z „kolejkami”.

Zdarzenia konsumowane przez Zeebe z kolejki mogą posłużyć do stworzenia map cieplnych (ang. heat map) ujawniających wąskie gardła w systemie.

Orkiestracja mikroserwisami

Dużo lepsze efekty można uzyskać wdrażając rozwiązanie w pełni oparte o Zeebe. Jednym z nich jest wykorzystanie silnika Zeebe do orkiestracji mikroserwisami. Poza monitorowaniem zyskujemy możliwość wizualnego definiowania przepływów w procesie. Dodanie nowej mikrousługi jest nieinwazyjne. Jej użycie definiowane jest w konkretnej wersji procesu, a w razie problemów można przywrócić poprzedni sposób działania. Wszystko przy zachowaniu wysokiej wydajności i bezpieczeństwie.

Podsumowanie

Zarządzanie mikroserwisami w celu realizowania procesu biznesowego jest skomplikowaną procedurą. Podchodząc do tego nieumiejętnie, możemy trafić na wiele problemów, a sam rozwój naszej aplikacji może w pewnym momencie okazać się nieopłacalny. Bardzo często najlepszym wyborem może być skorzystanie z gotowego rozwiązania, np. omawianego Zeebe.

Zeebe według twórców jest wydajny i niezawodny. Pozwala w łatwy sposób modyfikować proces i tworzyć jego różne wersji. W każdej chwili możemy również wrócić do konkretnego rozwiązania, nie generując dodatkowych kosztów. Skupiamy się na celu, a nie zadaniach dookoła.

W kolejnym artykule postaram się pokazać na przykładach jak w łatwy sposób można wykorzystać Zeebe do zarządzania procesem biznesowym.

Marcin Kociakowski, Wiodący Programista
Altkom Software & Consulting

 

 

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

 

Watch for free

Enter your contact details to receive a link to the recording:

I voluntarily consent to the processing of my personal data for the purposes of the application process (show more) by Altkom Experts sp. z o.o. and Altkom Software & Consulting sp. z o.o. (51 Chłodna Street, 00-867 Warsaw), in accordance with Regulation 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of individuals with regard to the processing of personal data and on the free movement of such data ("RoDO"). I am aware that providing the above personal data is voluntary, but necessary to handle the request, and that I have the right to access the content of my data and the possibility of correcting it, and that my consent may be revoked at any time. Please contact the Altkom Data Protection Officer: iodo@altkom.pl.

I voluntarily consent to the processing of my personal data for marketing purposes (show more)by Altkom Experts sp. z o.o. and Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warsaw) and receiving commercial information by electronic means to the e-mail address and telephone number provided by me, in accordance with Regulation 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of individuals with regard to the processing of personal data and on the free movement of such data ("RODO"), and the Act of 18 July 2002 on the provision of electronic services. I am aware that providing the above personal data is voluntary and that I have the right to access and correct my data and that my consent may be revoked at any time. Please contact the Altkom Data Protection Officer: iodo@altkom.pl.

 

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

 

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

 

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl