Obserwuj

Odcinek 96

Rozpraszanie systemu na szereg działających niezależnie od siebie usług, przy wszystkich oczywistych korzyściach dla ogólnej architektury i współpracy pomiędzy zespołami, niesie za sobą kilka istotnych konsekwencji. Przykładowo, dostarczenie zdarzenia czy innego komunikatu pomiędzy serwisami przestaje być już tak oczywiste i bezproblemowe, jak to jest w przypadku monolitycznych aplikacji komunikujących się wewnątrz in-memory.

Sieć ze swojej natury bywa zawodna, przerwa w dostarczaniu wiadomości, czy też dostarczanie ich do konsumentów w losowej kolejności nie są sytuacjami czysto hipotetycznymi. Wcześniej czy później taka sytuacja przydarzy się w systemie, pytanie brzmi tylko “kiedy”…

Warto przy tym od razu postawić jednocześnie drugie pytanie o wpływ takiego zjawiska na działanie konkretnego systemu. Choć pozornie brzmi to irracjonalnie, ale nie każda wiadomość musi dotrzeć do miejsca przeznaczenia, czy zostać tam przetworzona tylko i wyłącznie jeden raz. W wielu przypadkach pominięcie aktualizacji widoku w asynchronicznej projekcji czy brak zwiększenia metryki zapewniającej observability aplikacji nie wydaje się większym problem… Oczywiście pod warunkiem, że są to sytuacje wyjątkowe, a przetwarzanie kolejnych zdarzeń przywróci właściwy stan.

Michał Ostruszka w dzisiejszej rozmowie zarysowuje kilka wzorców w kwestii gwarancji dostarczania wiadomości, które obok Outbox Pattern warto mieć w swojej architektonicznej skrzynce z narzędziami.

Spójrz na diagram architektury systemu, usuń strzałkę z komunikacją i zobacz, co się zadzieje

Ostruszka Michał

W tym odcinku usłyszysz m.in. o...

  • eventach wartych przesyłania pomiędzy usługami w systemie
  • identyfikatorach wiadomości i finger printingu komunikatów
  • problemach związanych z wykorzystaniem wzorców Transactional Outbox / Inbox
  • wzorcu Change Data Capture i przesyłaniu zmian z poziomu bazy danych
  • wzorcu Listen To Yourself i problemach związanych z zachowaniem spójności przy jego wykorzystaniu
  • zapewniania sekwencyjności zdarzeń po stronie konsumenta
  • prostym ćwiczeniu architektonicznym, dzięki któremu można wykryć potencjalne problemy na warstwie komunikacyjnej systemu

Materiały dodatkowe

PODCAST JEST DOSTĘPNY NA PLATFORMACH