DevTalk #138 – O Event-Driven Architecture z Tomaszem Stolarczykiem
Masz dosyć systemów, które sypią się jak domek z kart, gdy tylko jeden serwis złapie zadyszkę? Czas przestać trzymać usługi „za rękę" przez HTTP i pozwolić im żyć własnym życiem. Event-Driven Architecture (EDA) to przejście z trybu rozkazującego na reagowanie na fakty, więc zamiast mówić każdemu, co ma robić, po prostu ogłaszasz, co się stało.
W tym odcinku o EDA mówił Tomasz Stolarczyk, programista i konsultant z Arkency, specjalizujący się w ratowaniu systemów legacy. Po latach pracy z Javą, obecnie rozwija złożone systemy w Ruby. Jest współtwórcą i aktywnym developerem Rails Event Store: otwartoźródłowego narzędzia do obsługi zdarzeń i Event Sourcingu, na którym bazuje wiele jego wdrożeń. Tomasz opowiada, jak nie zgubić się w świecie bez stacktrace'ów i dlaczego programiści mogą czerpać garściami z EDA, nawet jeśli nie chcą (lub nie potrzebują) wdrażać pełnego Event Sourcingu.
Z tego odcinka dowiesz się:
- Czym charakteryzuje się Event-Driven Architecture i jak wytłumaczyć to nowej osobie w zespole;
- Czym różni się prawdziwe EDA od zwykłego „strzelania eventami" po akcji użytkownika;
- Co zapewnia wzorzec Outbox;
- Chude czy grube eventy i co wysłać w świat, żeby nie „zabić" bazy subskrybenta;
- Kiedy postawić na swobodną choreografię usług, a kiedy wprowadzić Process Managera;
- Jak działa komunikacja asynchroniczna w EDA;
- Jakie wyzwania niesie debugowanie systemu bez stacktrace'ów;
- Dlaczego Rails Event Store ułatwia monitoring systemów eventowych;
- Na czym polega magia Event Sourcingu i jak odtworzyć stan systemu sprzed pół roku;
- Jak przebudowywać modele odczytu z historycznych eventów;
- Jak wprowadzić eventy do starego kodu, korzystając z techniki Event Stormingu.
Rozdziały:
00:00 Powitanie i przedstawienie gościa
00:33 Kim jest Tomasz Stolarczyk
04:00 Różne rozumienie Event-Driven Architecture
07:37 Stare zdarzenia a nowoczesne EDA
09:15 Korzyści z decoupling i autonomii subskrybentów
11:50 Rola monitoringu, Correlation/Causation ID
15:15 Poziomy abstrakcji zdarzeń i ich nazewnictwo
17:55 Wykorzystanie Event Storming do wykrywania eventów
20:16 EDA zamiast zwykłych wywołań HTTP
22:42 Outbox Pattern
26:10 Choreografia a orkiestracja
30:15 Process Manager w modelowaniu procesów biznesowych
34:32 Projektowanie akcji kompensacyjnych w przypadku błędów
36:44 Eventual Consistency
42:08 Dane historyczne w systemach opartych na zdarzeniach
44:44 Tryby dostarczania wiadomości
48:16 Znaczenie idempotencji przy przetwarzaniu zdarzeń
52:41 Strategie wprowadzania elementów EDA do systemów legacy
57:03 Korzyści z analityki opartej na historii zdarzeń