Przejdź do treści
juz-ide.pl blog
Wróć

Kiedy agregat staje się dwoma

Paweł G.
3 min czytania
Kiedy agregat staje się dwoma
Temat Technologia fundamenty

Dzień po zamknięciu v1 systemu weryfikacji adresu siadłem, żeby napisać następne zadanie. I zobaczyłem, że jeden obiekt robi zbyt dużo.

Trzymał historię adresów zamieszkania. I stan weryfikacji. I uprawnienia — co użytkownik może robić w związku z miejscem zamieszkania. I relacje z geograficzną lokalizacją (dzielnica, gmina).

Cztery różne odpowiedzialności w jednym miejscu. Za dużo.

Co to jest agregat i dlaczego granica ma znaczenie

W Domain-Driven Design agregat to klaster powiązanych obiektów traktowanych jako jedna jednostka przy zmianach. Ważne słowo: „jednostka przy zmianach”.

Pytanie do agregatu: co zmienia się razem?

Historia adresu zmienia się, gdy użytkownik przeprowadza się — raz na wiele miesięcy, starannie, z implikacjami prawnymi.

Zdolności (capabilities) zmieniają się, gdy zmienia się poziom weryfikacji — szybciej, automatycznie, w odpowiedzi na zdarzenia systemowe.

To dwie różne dynamiki. Jeśli trzymasz je razem, każda zmiana uprawnień wymaga zamrożenia i zaktualizowania całej historii adresowej. To zbędne — i źródło błędów przy równoczesnych operacjach.

Logiczna vs fizyczna separacja

Decyzja ta wprowadza rozróżnienie:

Logiczna separacja — dwa agregaty mają osobne tożsamości, własne reguły, własne zdarzenia. Jeden nie zna szczegółów drugiego.

Fizyczna separacja — tabele w bazie danych mogą być osobne albo wspólne — to szczegół implementacyjny. Logika domenowa nie powinna wiedzieć, jak są przechowywane.

To pozwala zmieniać sposób przechowywania danych niezależnie od logiki biznesowej. Dziś jedna baza, proste zapytania. Jutro osobne tabele albo inna baza — bez ruszania reguł domenowych.

Jak to wygląda w praktyce

Historia i weryfikacja adresu:

  • Aktualny adres zamieszkania i historia zmian.
  • Stan weryfikacji (niezweryfikowany, TERYT, instytucjonalny).
  • Reguły: limit czasu między zmianami adresu, ponowna weryfikacja po przeprowadzce.

Uprawnienia i lokalizacja (wcześniej: część tego samego obiektu):

  • Aktualne uprawnienia uzależnione od lokalizacji — co może robić w jakiej dzielnicy.
  • Powiązanie z lokalizacją geograficzną (dzielnica, gmina, województwo).
  • Zmienia się automatycznie gdy zmienia się status weryfikacji adresu.
Granice agregatów — reguła praktyczna

Dobry agregat:

  • Jest mały (3–7 encji to górna granica — nie chodzi o liczbę, ale o spójność)
  • Jego pola zmieniają się razem w odpowiedzi na jedną operację biznesową
  • Może być załadowany bez ładowania całego wykresu powiązanych obiektów

Sygnały, że agregat jest za duży:

  • Test jednej funkcji wymaga ustawienia pięciu niepowiązanych pól
  • Różne operacje modyfikują rozłączne podzbiory pól
  • Blokujesz cały agregat przy zmianie jednej małej rzeczy


Poprzedni wpis
Logi audytu poza główną operacją
Następny wpis
Geo-auth v1: dwa tygodnie do pierwszej wersji systemu weryfikacji