Mentionsy Mentionsy
Better Software Design
Better Software Design

104. Clickbait Events - EDA /Anti/Patterns

28.05.2026 ·30 min 38 s · 7 rozdziałów

Kontynuujemy mini-serię o antywzorcach Event-Driven Architecture - ponownie z Oskarem Dudyczem. Tym razem jednak bierzemy na początek na warsztat puchnące zdarzenia: jedno “uniwersalne” zdarzenie, które próbuje zadowolić wszystkich naraz. Kolejne pole, kolejne ID “na wszelki wypadek”, aż w końcu wysyłamy w świat pół swojej bazy danych. Zupełnie jak w wierszyku o sznurku Jurka - ktoś dorzuci papierek, aż robi się góra śmieci. Jednak to tylko pretekst do tego, aby dotknąć właściwego tematu, czyli podziału między to, co publiczne, a to, co prywatne.

5:34 · Antywzorzec Clickbait Event 3

I powinniśmy wziąć pod uwagę również przy modelowaniu i wprost powiedzieć o tym, Co my faktycznie chcemy zrobić? Bo ja bardzo lubię podział Gregora Hoppe z Enterprise Integration Patterns. Tak, to jest ta gruba książka z półki wstydu każdego z nas. Ale on tam powiedział, że w zasadzie są według niego trzy rodzaje wiadomości, czyli komenda, zdarzenie i dokument. Dokument to inaczej można powiedzieć stan. Wiadomo, że w architekturach opartych na zdarzeniach preferowaną formą komunikacji są zdarzenia. Czyli ogłaszamy światu, że coś się wydarzyło i świat może na to zareagować.

Z relacyjnej do Elastica. Może mieć to sens. Ale to, co tutaj wynoszę, to jest, Oskar, to, że muszę zrozumieć, jaki jest typ tego zdarzenia, bo tutaj nawiązałeś troszeczkę do tej klasyfikacji, która mi jest bardzo bliska i bardzo mi tam, wiesz, siedzi w sercu, ta klasyfikacja Fullera z tego jego artykułu What Doesn't Mean Event Driven, gdzie właśnie Fuller pokazuje ten podział na trzy rodzaje wiadomości, czyli właśnie Event Carriage Stand Transfer, Notification Event i Event Sourcingowy. Czasem tam gdzieś widać w internecie, że ktoś jeszcze dodaje do tej klasyfikacji czwarty rodzaj, czyli taki delta event, często to jest nazywane, że nie przenoszę stanu, tylko przenoszę różnicę pomiędzy tym stanem. W praktyce to jest inna forma przeniesienia tego stanu. W zasadzie to, co powiedziałeś, te konwencje Fowlera się pokrywają z tym, co wspomniałem od Gregora Hoppe, intencją.

Tylko ja akurat wolę nazewnictwa Hoppe, bo według mnie jest bardziej wprost. Mówimy, co oczekujemy, ale jak najbardziej. No więc jeśli chodzi o przenoszenie stanu, to nie wiem, chyba w zasadzie jest to omówione. Czy jeszcze tutaj byś chciał coś dodać od siebie? Patrząc nawet na tę terminologię, to bardziej mnie zazwyczaj interesuje to, do czego ja tego użyję. Dokładnie, czyli jaka jest nasza potrzeba, co chcesz osiągnąć. Dokładnie, w tej sytuacji, kiedy tutaj zaczęliśmy, czyli mamy faktycznie kilku klientów, którzy muszą procesować dalej i działać w tym procesie biznesowym, bo się u mnie coś zadziało, moje myślenie jest takie, ok, to będzie event notyfikacyjny, ja znotyfikuję, że u mnie coś zaszło, prawdopodobnie to będzie jakiś event, który opisze jakąś fazę końcową mojego przetwarzania, spróbuje tam umieścić relatywnie mały pozbiór informacji, który będzie opisywał faktycznie faktem zakończenia, a jeżeli któryś z klientów będzie potrzebował danych więcej do przetwarzania, to za pomocą tego konceptu, powiedzmy, message enrichmentu, w momencie kiedy taka wiadomość dotrze na drugą stronę, to ten klient sobie to wzbogaci, dokona tego enrichmentu po to, żeby procesować to u siebie.

26:10 · Koncepty i modelowanie 2

No to prawdopodobnie tak będzie łatwiej jakby dowieźć funkcjonalność, ale inaczej się zachowam w momencie, kiedy moich klientów obsługiwałbym w modelu open host, czy jakimś tam innym koncepcie, no to inaczej. To może wtedy właśnie na przykład w ogóle to nie powinno być zdarzenie. Znowu przywoływany Łukasz Szydło ma świetną prezentację, nie pamiętam niestety tytułu, ale podeślemy ją w linkach pod artykułem. Gdzie Łukasz powiedział o tym odwróconym myśleniu, czyli zamiast na przykład moduł wyszukiwania, nasłuchiwać na zdarzenia z wielu miejsc, no to po prostu wystawia komendę, czyli weź mi z indeksu. I może jeżeli mamy open house, to w ogóle nie powinniśmy publikować zdarzenia, tylko wysłać komendę, czyli intencję zrobienia czegoś. Możeś zrobił klamrę do Gregora Hoppe i jego klasyfikacji, bo w tym wypadku zmieniam event na komendę.

No tak, ale to według mnie właśnie te koncepty się bardzo fajnie ze sobą spinają i polecam zresztą słuchaczom zrobić sobie taki właśnie prosty test, żeby wziąć swoje moduły, spróbować sobie wziąć ten kontekst mapy, nanieść I takie jakie są, bez wymyślania jak powinny być. Takie jakie są. I nanieść sobie komunikację, jakie wiadomości latają pomiędzy nimi i wtedy zastanowić się, czy faktycznie te relacje i typy tych zdarzeń, niezależnie czy podział Gregora Hoppe, czy Martina Fowlera, Czy widzą jakieś zależności albo czy widzą, że im coś nie gra? Oczywiście to ćwiczenie jest ryzykowne, bo może być, że nie jest tak jak trzeba, ale to jest bardzo ciekawe i pouczające według mnie ćwiczenie i to są takie narzędzia,

Pokazano wszystkie 5 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.