W kontekście architektury mikrousług termin „Saga mikrousług” odnosi się do rozproszonego wzorca transakcji, który umożliwia utrzymanie spójności danych w wielu luźno powiązanych usługach w systemie. Głównym celem wzorca Saga jest sprostanie wyzwaniom wynikającym z zarządzania transakcjami w systemie opartym na mikroserwisach, gdzie poszczególne mikroserwisy odpowiadają za własne dane i posiadają własne bazy danych. Termin „Saga” wywodzi się z dziedziny systemów zarządzania bazami danych, gdzie został po raz pierwszy wprowadzony przez Hectora Garcię-Molinę i Kennetha Salem w 1987 roku w odniesieniu do sekwencji operacji wykonywanych w ramach długotrwałej transakcji.
Architektura mikrousług zyskała na popularności dzięki swojej zdolności do zwiększania elastyczności, skalowalności i odporności podczas tworzenia oprogramowania. Jednakże, jak w przypadku każdego podejścia do architektury oprogramowania, istnieją kompromisy. Godnym uwagi wyzwaniem w architekturze mikrousług jest utrzymanie spójności danych między usługami, szczególnie gdy pojedyncza operacja biznesowa obejmuje wiele mikrousług. Problem ten dodatkowo pogłębia fakt, że każda mikrousługa zazwyczaj posiada swój odpowiedni magazyn danych, co skutkuje oddzielnymi granicami transakcyjnymi dla każdej usługi.
Aby sprostać temu wyzwaniu, wzorzec Microservices Saga proponuje rozwiązanie, które łączy serię transakcji lokalnych, przy czym każda transakcja jest własnością pojedynczej mikrousługi. Transakcje te są koordynowane za pomocą komunikatów lub zdarzeń w sposób asynchroniczny, zastępując tradycyjne transakcje rozproszone, które opierają się na protokołach zatwierdzania dwufazowego. We wzorcu Saga po każdej lokalnej transakcji następuje zdarzenie, które wyzwala następną lokalną transakcję w sekwencji lub wyzwala transakcję kompensacyjną w przypadku niepowodzenia. Transakcje kompensacyjne to zasadniczo operacje „cofnięcia”, których celem jest przywrócenie zmian wprowadzonych w poprzednich transakcjach lokalnych, aby w przypadku wystąpienia problemu zachować spójność danych między usługami.
Sagę mikrousług można wdrożyć przy użyciu dwóch głównych wzorców: choreografii i orkiestracji. W choreografii każda mikrousługa jest odpowiedzialna za zrozumienie, na jakie zdarzenia musi zareagować i jakie działania musi w odpowiedzi wykonać. Po zakończeniu transakcji lokalnej mikrousługa emituje zdarzenie, a inne mikrousługi nasłuchują tego zdarzenia i podejmują odpowiednie działania. Główną zaletą tego podejścia jest to, że promuje zdecentralizowaną kontrolę i wymaga niewielkiej lub żadnej centralnej koordynacji.
We wzorcu orkiestracji centralny komponent zwany orkiestratorem jest odpowiedzialny za koordynację wykonywania transakcji lokalnych w sadze mikrousług. Koordynator odbiera zdarzenia z poszczególnych usług i wysyła do nich polecenia w celu wykonania transakcji lokalnych. To scentralizowane podejście pozwala na efektywną obsługę wyjątków i zwiększa wgląd w ogólny proces. Może jednak wprowadzić potencjalne wąskie gardła i może wymagać dodatkowej infrastruktury i działań konserwacyjnych.
W AppMaster, potężnej platformie no-code, wdrażanie wzorców Microservices Saga zostało ułatwione dzięki wizualnemu Projektantowi Procesów Biznesowych (BP), który umożliwia tworzenie aplikacji backendowych, mobilnych i internetowych z w pełni interaktywnymi elementami. Platforma generuje kod źródłowy, testy, skrypty migracji i wiele więcej dla każdego projektu, co płynnie wpasowuje się w architekturę mikrousług, zapewniając spójność danych i wydajną realizację transakcji rozproszonych. Co więcej, podejście AppMaster eliminuje dług techniczny poprzez regenerację aplikacji przy każdej modyfikacji, umożliwiając nawet indywidualnym programistom skuteczne i efektywne tworzenie kompleksowych rozwiązań programowych.
Jako przykład rozważ platformę e-commerce oferującą oddzielne usługi w zakresie zapasów, płatności i wysyłki. Po złożeniu zamówienia inicjowana jest Saga Mikrousług, która obejmuje rezerwację zapasów z usługi magazynowania, obciążanie klienta za pośrednictwem usługi płatności i generowanie przesyłki za pośrednictwem usługi wysyłkowej. Jeśli którykolwiek z tych kroków zakończy się niepowodzeniem, wykonywane są transakcje kompensacyjne, które cofają wszelkie wcześniej pomyślne operacje, zapewniając spójność danych w całym systemie. Wdrażając wzorzec Microservices Saga, ta platforma e-commerce może zapewnić niezawodne zarządzanie transakcjami w ramach swojej architektury mikrousług, ostatecznie promując odporność i usprawnione operacje.
Podsumowując, Saga Mikrousług to rozproszony wzorzec transakcji, który odpowiada na wyzwania związane z utrzymaniem spójności danych w systemach opartych na mikrousługach. Umożliwia koordynację serii lokalnych transakcji w wielu usługach poprzez asynchroniczne przesyłanie wiadomości lub zdarzeń, zastępując tradycyjne transakcje rozproszone i zapewniając bardziej elastyczną, skalowalną i odporną architekturę oprogramowania. Wdrożenie wzorców Microservices Saga za pomocą platformy AppMaster no-code umożliwia szybsze i opłacalne tworzenie aplikacji bez obciążeń technicznych, umożliwiając programistom tworzenie kompleksowych rozwiązań programowych zgodnych z praktykami nowoczesnej architektury oprogramowania.