Używanie AWS Step Functions w celu monitorowania choreografii serwisów

10 stycznia 2022

Firmy często potrzebują dostępu do szybkiego, wizualnego wglądu w stan złożonych przepływów pracy. Wiąże się to ze współpracą pomiędzy różnymi systemami. Jeśli Twój klient potrzebuje pomocy przy zamówieniu, potrzebujesz przeglądu procesu realizacji, w tym płatności, zasobów, wysyłki, pakowania i dostawy. Jeśli Twoje produkty są drogimi aktywami, takimi jak samochody, musisz nieustannie śledzić podróż każdego przedmiotu.

Nowoczesne aplikacje wykorzystują architektury sterowane zdarzeniami do obsługi złożoności integracji systemów na dużą skalę. Często używają choreografii do współpracy serwisowej. Zamiast bezpośrednio wywoływać systemy w celu wykonania zadań, usługi wchodzą w interakcję, wymieniając zdarzenia za pośrednictwem scentralizowanego brokera. Złożone przepływy pracy są wynikiem działań inicjowanych przez każdą usługę w odpowiedzi na zdarzenia generowane przez inne usługi. Usługi nie są bezpośrednio od siebie zależne. Zwiększa to elastyczność, szybkość rozwoju i odporność.

Jednak choreografia może wprowadzić dwa poważne wyzwania dla widoczności Twojego przepływu pracy.

  1. Przysłania to definicję workflow’u. Sekwencja zdarzeń emitowanych przez poszczególne usługi niejawnie definiuje przepływ pracy. Nie ma formalnego oświadczenia opisującego kroki, dozwolone przejścia i możliwe niepowodzenia.
  2. Może być trudniej zrozumieć status wykonań workflow’ów. Usługi działają niezależnie, w oparciu o zdarzenia. Możesz zaimplementować śledzenie rozproszone, aby zbierać informacje związane z pojedynczym wykonaniem w różnych usługach. Jednak uzyskanie wizualnych informacji ze śladów może wymagać niestandardowych aplikacji. Zwiększa to czas wprowadzenia produktu na rynek (TTM – time to market) i koszty.

Aby sprostać tym wyzwaniom, pokażemy Ci, jak używać funkcji AWS Step Functions do modelowania choreografii jako maszyn stanów. Rozwiązanie umożliwia uzyskanie wizualnego wglądu w wykonywanie workflowu, identyfikację awarii i rozwiązywanie problemów bezpośrednio z konsoli AWS Management Console.

Repozytorium GitHub zawiera instrukcje „Quick Start” i przykłady modelowania choreografii.

Choreografie modelowania z funkcjami Step Functions

Monitorowanie choreografii wymaga formalnej reprezentacji zachowania systemu rozproszonego, takiego jak maszyny stanowe. Maszyny stanowe to modele matematyczne reprezentujące zachowanie systemów poprzez stany i przejścia. Stany modelują sytuacje, w których system może działać. Przejścia określają, które wejście powoduje zmianę z bieżącego stanu na następny. Pojawiają się, gdy pojawi się nowe wydarzenie. Rysunek 1 przedstawia maszynę stanową modelującą workflow zamówienia.

Rysunek 1. Worflow zamówienia.

Rysunek 1. Worflow zamówienia.

Przedstawione rozwiązanie wykorzystuje Amazon State Language do opisania choreografii jako maszyny stanowej Step Functions. Maszyna stanowa pauzuje się, używając stanów zadań Task połączonych ze wzorcem integracji wywołań zwrotnych (callback integration pattern). Następnie czeka na opublikowanie kolejnego zdarzenia na brokerze. Stany wyboru kontrolują przejścia do następnego stanu, sprawdzając dane zdarzenia. Rysunek 2 pokazuje, w jaki sposób workflow na rysunku 1 przekłada się na maszynę stanową Step Functions.

Rysunek 2. Workflow zamówienia przełożony na maszynę stanu Step Functions.

Rysunek 2. Workflow zamówienia przełożony na maszynę stanu Step Functions.

Rysunek 3 przedstawia architekturę monitorowania choreografii za pomocą Step Functions.

Rysunek 3. Monitorowanie choreografii za pomocą AWS Step Functions

  1. Usługi zaangażowane w choreografię publikowanych zdarzeń w Amazon EventBridge. Istnieją dwie skonfigurowane reguły. Pierwsza reguła pasuje do pierwszego zdarzenia sekwencji, Order Placed w przykładzie. Druga reguła pasuje do każdego innego zdarzenia w sekwencji. Payload’y zdarzeń zawierają identyfikator korelacji correlation id (order_id), aby pogrupować je według instancji workflow’u.
  2. Pierwsza reguła wywołuje funkcję AWS Lambda, która rozpoczyna nowe wykonanie maszyny stanów choreografii. Identyfikator korelacji jest przekazywany w parametrze name, dzięki czemu można szybko zidentyfikować wykonanie w AWS Management Console.
  3. Maszyna stanów używa stanów zadań (task states) z integracją usług AWS SDK, aby bezpośrednio wywoływać Amazon DynamoDB. Taski są konfigurowane za callback pattern. To one wydają token, który jest przechowywany w DynamoDB z nazwą wykonania. Następnie workflow zostaje wstrzymany.
  4. Usługa publikuje kolejne zdarzenie w magistrali zdarzeń.
  5. Druga reguła wywołuje inną funkcję Lambda z payload’em zdarzenia.
  6. Funkcja używa ID korelacji, aby otrzymać token zadania z DynamoDB.
  7. Funkcja wywołuje funkcję Step Functions SendTaskSuccess API, z tokenem oraz payload’em zdarzenia jako parametrami.
  8. Maszyna stanowa wznawia wykonywanie i używa stanów Choice do przejścia do następnego stanu. Jeśli definicja choreografii oczekuje odebranego payload’u zdarzenia, wybiera następny stan, a proces zostanie zrestartowany od kroku 3. Maszyna stanowa przechodzi w stan Fail, gdy odbierze nieoczekiwane zdarzenie.

Lepsza widoczność dzięki konsoli Step Functions

Modelowanie choreografii usług jako Standard Workflows pracy Step Functions zwiększa widoczność dzięki gotowym do użycia funkcjom.

1. Możesz centralnie śledzić zdarzenia wytworzone przez rozproszone komponenty. Step Functions rejestruje pełną historię przez 90 dni po zakończeniu wykonywania. Będziesz mógł uzyskać szczegółowe informacje o wejściu i wyjściu każdego stanu, w tym o payloadach zdarzeń. Dodatkowo maszyny stanowe integrują się z Amazon CloudWatch w celu publikowania logów i metryk wykonania.

2. Możesz wizualnie monitorować choreografie. Konsola Step Functions wyświetla listę wykonań z takimi informacjami, jak id wykonania, status i data rozpoczęcia (patrz Rysunek 4).

Rysunek 4. Pulpit procesów w Step Functions

Po wybraniu procesu, wyświetlany jest inspektor wykresów (patrz rysunek 5). Pokazuje on stany, przejścia i oznacza poszczególne stany kolorami. Pozwala to na pierwszy rzut oka zidentyfikować pomyślnie zakończone zadania, niepowodzenia i zadania, które są nadal w toku.

Rysunek 5. Inspektor wykresów w konsoli Step Functions

3. Możesz wdrożyć automatyzację sterowaną zdarzeniami. Step Functions umożliwia przechwytywanie zmian stanu wykonania poprzez wysyłanie zdarzeń bezpośrednio do EventBridge (patrz Rysunek 6). Dodatkowo AWS daje możliwość emitowania zdarzeń poprzez ustawianie alarmów bazujących na Step Functions publikuje je w CloudWatch. Możesz reagować na zdarzenia, podejmując działania naprawcze, wysyłając powiadomienia lub integrując się z rozwiązaniami innych firm, takie jak systemy zgłoszeń.

Rysunek 6. Automatyzacja przy użyciu Step Functions, EventBridge oraz alarmów CloudWatch

Rysunek 6. Automatyzacja przy użyciu Step Functions, EventBridge oraz alarmów CloudWatch

Włączanie dostępu do konsoli AWS Step Functions

Użytkownicy potrzebują bezpiecznego dostępu do konsoli Step Functions. Wymaga to mechanizmów uwierzytelniania użytkowników oraz autoryzacji dostępu typu read-only do określonych workflow’ów funkcji Step Functions.

Uwierzytelnia użytkowników z wykorzystaniem AWS Single Sign-On poprzez bezpośrednie zarządzanie tożsamościami lub przez federację. SSO obsługuje federację z Active Directory oraz SAML 2.0 compliant external identity providers (IdP). Użytkownicy uzyskują dostęp do maszyn stanowych Step Functions, przypisując odpowiedni zestaw uprawnień, który jest zbiorem polityk AWS Identity and Access Management (IAM). Dodatkowo za pomocą zestawów uprawnień można skonfigurować stan relay, który jest adresem URL przekierowującym użytkownika po pomyślnym uwierzytelnieniu. Możesz uwierzytelnić użytkownika za pośrednictwem wybranego dostawcy tożsamości i natychmiast wyświetlić konsolę AWS Step Functions z już wyświetloną maszyną stanów. Rysunek 7 przedstawia ten proces.

Rysunek 7. Dostęp do maszyny stanów Step Functions za pomocą AWS SSO

Rysunek 7. Dostęp do maszyny stanów Step Functions za pomocą AWS SSO

  1. Użytkownik loguje się poprzez wybranego dostawcę tożsamości.
  2. Portal użytkownika SSO wykorzystuje punkt końcowy SSO do wysłania odpowiedzi z poprzedniego kroku. Logowanie jednokrotne używa usługi AWS Security Token Service (STS) w celu uzyskania tymczasowych danych uwierzytelniających w imieniu użytkownika. Następnie tworzy adres URL logowania do konsoli przy użyciu tych damych i stanu relay. Na koniec odsyła adres URL jako przekierowanie.
  3. Przeglądarka przekierowuje użytkownika do konsoli Step Functions.

Jeśli dostawca tożsamości nie obsługuje SAML 2.0, logowanie SSO nie jest możliwe. W takim przypadku możesz utworzyć adres URL z tokenem logowania, aby użytkownicy mogli bezpiecznie uzyskiwać dostęp do konsoli AWS Management Console. To podejście wykorzystuje STS AssumeRole do uzyskania tymczasowych danych uwierzytelniających. Następnie używa tych danych, aby uzyskać token logowania z punktu końcowego federacji AWS. Na koniec tworzy adres URL dla konsoli AWS Management Console, która zawiera token, a następnie rozprowadza do użytkowników, aby udzielić dostępu. Jest to podobne do procesu logowania SSO. Wymaga to jednak niestandardowego kodu.

Podsumowanie

W tym wpisie opisaliśmy, w jaki sposób możesz zwiększyć widoczność choreografowanych procesów biznesowych za pomocą funkcji AWS Step Functions. Rozwiązanie zapewnia szczegółowe informacje wizualne bezpośrednio z konsoli AWS Management Console, bez konieczności tworzenia niestandardowego interfejsu użytkownika. Zmniejsza to czas wprowazdenia produktu na rynek oraz koszty.

Aby dowiedzieć się więcej:

Case Studies
Referencje

Bardzo istotną zaletą jest szybkie i fachowe wsparcie techniczne Hostersów, którzy wiedzą, że każda chwila przerwy technicznej w dostępie do serwisów WWW oznacza poważny uszczerbek na wizerunku każdej firmy, zwłaszcza instytucji państwowej, jaką jest Instytut Pamięci Narodowej.

Sebastian Górkiewicz
Kierownik Samodzielnej Sekcji ds. Serwisów Internetowych
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.