Mentionsy

Better Software Design
Better Software Design
09.09.2025 23:00

98. O agregatach, eventach i Dynamic Consistency Boundary z Pawłem Pacaną

W świecie Domain-Driven Design, Agregat jest powszechnie uznawany za jeden z fundamentalnych wzorców odpowiedzialnych za spójność danych. To on wyznacza granicę transakcyjną, wewnątrz której pilnujemy niezmienników biznesowych, gwarantując integralność naszego modelu. Ale co w sytuacji, gdy ta z góry zdefiniowana, statyczna granica staje się pewnym ograniczeniem?

Czy w każdym procesie biznesowym potrzebujemy dokładnie tego samego, silnego poziomu spójności i czy sztywny podział na agregaty zawsze idealnie odzwierciedla dynamiczną naturę problemu, który modelujemy?

Okazuje się, że możemy podejść do tego zagadnienia w bardziej elastyczny sposób. W tym odcinku, wraz z moim gościem, Pawłem Pacaną z firmy Arkency, dokładnie przyjrzymy się koncepcji Dynamic Consistency Boundary. Porozmawiamy o tym, jak można myśleć o spójności nie jako o statycznej, raz ustalonej granicy, ale jako o koncepcji, która dopasowuje się do kontekstu konkretnej operacji biznesowej.

W tym odcinku usłyszysz między innymi o:

trudnościach w projektowaniu i długoterminowym utrzymaniu agregatów w systemieDynamic Consistency Boundary i czym ten wzorzec różni się od klasycznego podejścia z agregatemtagowaniu i linkowaniu zdarzeń pomiędzy strumieniamiwymaganiach dla event-store, aby stosowanie Dynamic Consistency Boundary było w ogóle możliwe pułapkach, na które należy zwrócić szczególną uwagę, by wykorzystanie DCB nie stało się problem

Materiały dodatkowe do tego odcinka znajdują się na stronie tego odcinka na bettersoftwaredesign.pl.

YouTube Alert! Odcinki podcastu są także dostępne na moim kanale na YouTube. Warto zasubskrybować, aby być na bieżąco z kolejnymi odcinkami.

Szukaj w treści odcinka

Znaleziono 18 wyników dla "DCB"

Czyli to DCB pojawiło się właśnie jako jeden z tematów, które sobie analizowaliśmy, przegadaliśmy, skonfrontowaliśmy.

Przy DCB moglibyśmy, przynajmniej takie są jego założenia, tę granicę płynnie zmieniać, zmniejszać.

Event Store musiałby być zmodyfikowany właśnie w taki sposób, żeby wspierać DCB.

W samym DCB pojawia się koncepcja właśnie takiego tagowania, czyli zdarzenie może przynależeć, może mieć wiele tagów i tymi tagami opisujemy, że jest istotne w przykładzie z kursami i studentami dla jakiegoś konkretnego studenta albo dla jakiegoś konkretnego kursu.

Natomiast do mnie ten argument do refaktoryzacji, która jest łatwiejsza, z DCB nie trafiał, bo my już w Age Event Store mieliśmy taki design, że można było linkować zdarzenia do różnych strumieni i tak naprawdę zmiana granic tego agregatu, jak on się mógł zmieniać w czasie, to było trochę przelinkowanie zdarzeń do innego strumienia i później zmiana kodziku, który sobie te zdarzenia czytał i operował na tym nowym strumieniu.

Wydaje się, że przy tym DCB mamy taką pokusę, że teraz mamy młotek, w którym możemy rozwiązywać problemy w sposób ściśle spójny, bo teraz zrobimy sobie taką dynamiczną granicę, żeby na pewno... Taką, jaką potrzebujemy w tym momencie, żeby na pewno to rozwiązać w taki sposób, żeby właśnie...

Natomiast zgodzę się co do tego, że trochę spekulujemy, jak dobre będzie to DCB, albo jakie problemy natrafimy, a dowiemy się dopiero za jakiś czas.

W DCB nie nazwałem tego strumieniami, tylko to są tagi, ale powiedzmy, że tak, pod tytułem student1.

Nie dlatego, że zrobiliśmy je dla DCB, po prostu tak kiedyś zaprojektowaliśmy event store i okazało się, że mamy bardzo dużo wspólnego z DCB.

Natomiast już dzisiaj, jeżeli chcemy poeksplorować same przykłady DCB na takim systemie, który nie jest produkcyjny i problemy ze współbieżnością tam nie będą występować, no to sam problem, który Sara Pelegirni używa do przedstawienia konceptu dynamic consistency boundary, czyli studenci i kursy,

jest zaimplementowany w TypeScriptie na stronie dcb-events.

Wydaje mi się, że kuszące byłoby poeksplorowanie DCB tam, gdzie musielibyśmy koordynować ze sobą dwa agregaty.

To jest też ciekawe w DCB, że trochę może nam się zmienia optyka, bo patrzymy już na taki wycinek, na jedną klatkę.

Trochę też takie na brzegach spektrum, żeby może bardziej uwypuklić jakieś problemy i zastanowić się, czy coś na tych brzegach spektrum DCB robi lepiej.

I też coś w środku, coś bardzo bliskiego od DCB.

DCB Events.

Trochę klaruje nam, czym jest DCB i ma bardzo bogatą listę przykładów, jak takie typowe problemy właśnie z zapewnianiem unikalności, czyli słynny przykład z kursami i studentami, jak jest implementować DCB.

W zasadzie możemy chyba powiedzieć, że Axon ma już wsparcie dla DCB.