Loading...
Skip to Content

Podcast Better Software Design

O dostarczaniu eventów w systemach rozproszonych z Michałem Ostruszką

Odcinek 96, 24 marca 2025

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.

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

Cytat odcinka

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

Ten podcast jest dostępny na platformach


Podcast Better Software Design

Warto także posłuchać...

Oskar Dudycz

O temporal modelingu i Event Sourcingu

Modelowanie domeny z użyciem Event Sourcingu wymaga wzięcia pod uwagę kilku czynników. Jednym z nich jest...
Odcinek 33
Oskar Dudycz

O Event Sourcingu z Oskarem Dudyczem

Event Sourcing nie jest nową i zaskakującą techniką, a jednak wciąż budzi wiele różnych emocji. Wspólnie z...
Odcinek 28
Jakub Pilimon

O wzorcach Saga i Process Manager z Kubą Pilimonem

Jak zapewniać spójność ostateczną i radzić sobie z przeprowadzaniem zmian w środowisku rozproszonym? Czym...
Odcinek 5

Potrzebujesz wsparcia w poprawie jakości projektu, architektury lub zwiększenia umiejętności w zespole?