dla Architektów Oprogramowania
2 godz. 1 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosZanurzymy się w definiowanie strategicznych wzorców Domain Driven Design, które stanowią fundament efektywnego zrozumienia problemów biznesowych. Omówimy kluczowe koncepty takie jak Subdomena czy Bounded Context.
Wzorce taktyczne to praktyczne aspekty DDD, które są kluczowe dla każdego architekta oprogramowania. W tej sekcji mocniej spojrzymy na kod. Dowiesz się, jak stosować i testować wzorce takie jak Value Object, Encja czy Agregat.
Bazy danych to serce wielu systemów, a ich prawidłowe użycie w kontekście DDD jest kluczowe. Omówimy najlepsze praktyki związane z integracją domeny i kontekstów z tabelami bazodanowymi. Poznasz techniki, które pozwolą Ci zachować integralność danych i spójność modelu domenowego, niezależnie od wybranej technologii bazodanowej.
Teoria jest ważna, ale praktyka czyni mistrza. Przejdziemy przez konkretne przykłady implementacji DDD w rzeczywistych projektach. Zobaczysz krok po kroku zastosowanie wzorców, zamodelowanie domeny i implementację. Praktyczne przykłady pomogą Ci zrozumieć, jak stosować DDD w codziennej pracy i jak wpływa to na komunikację z interesariuszami biznesowymi.
Każdy architekt oprogramowania spotkał się z systemami, które były nieczytelne i trudne do utrzymania - tak zwanymi "Big Ball of Mud". Nauczysz się, jak za pomocą DDD przeprowadzić refaktoryzację takiego systemu, przekształcając go w dobrze zorganizowane i zarządzalne struktury.
Kurs powstał z myślą o programistach aspirujących do roli architektów, architektach oprogramowania oraz liderach technicznych, którzy chcą pogłębić swoją wiedzę i umiejętności w zakresie stosowania Domain Driven Design. To materiał idealny dla tych, którzy znają już podstawy DDD i chcą podnieść swoje umiejętności na wyższy poziom, aby projektować złożone i skalowalne systemy. Niezależnie od tego, czy pracujesz nad dużymi projektami, chcesz usprawnić komunikację z zespołem i interesariuszami, czy szukasz nowych strategii na rozwiązywanie skomplikowanych problemów biznesowych - ten kurs jest dla Ciebie!
Domain Driven Design opiera się w dużej mierze
na odkrywaniu właściwych domen, właściwych granic, kontekstów,
na których będziemy modelować.
Techniką, która pozwala odkryć te granice w prosty sposób jest event Story.
Co to takiego jest Event Storm?
Event Storm Week to taka metoda warsztatowa, która pozwala
spojrzeć na system z góry, Taki inwestor spotykają się.
Część techniczna Programiści, Część biznesowa, analitycy biznesowi,
eksperci biznesowi.
Twórcą event storytellingu jest Alberto Brand.
Do linii Włoch.
Polecam Ci przejrzeć materiały od Alberto Brand do niego na jego oficjalnej
stronie dotyczącej event streamingu.
Z polskich nazwisk najsłynniejszy jest Mariusz Gil,
ale też spotkasz takie osoby jak np.
Radek Marynarka, Sławek Sobótka czy Kuba Pelikan, którzy też w temacie
event tradingu działają.
Jak wygląda taki event?
Storm Ring w swojej oryginalnej postaci?
Event Starting potrzebuje ściany i małych karteczek samoprzylepnych w różnych
kolorach, takich sticky knotów.
I tutaj na tym zdjęciu widzisz jak wygląda taki przykładowy event Storm Ring.
Event Storm Ink przeprowadza się na żywo w sali warsztatowej lub online.
Jedna taka sesja trwa kilka godzin, w zależności od tego,
jak złożona jest domena biznesowa, jak złożony jest system,
który trzeba za modelować.
Taki event Storm Ring.
Już mówiąc bardziej teoretycznie, to jest pewna technika modelowania biznesu,
która ma połączyć cały zespół.
Ale zespół w rozumieniu nie tylko ten team, który pracuje nad kodem,
ale zespół w rozumieniu biznesu i osób rozwijających produkt.
Więc spotyka się cały zestaw ludzi, który pracuje nad danym problemem.
W każdej dziedzinie i więc to ujawnia złożoność biznesu.
W trakcie wypisywania zdarzeń na tablicę będziemy widzieć, jak wiele rzeczy
zachodzi w biznesie, w logice aplikacji.
Ułatwia także identyfikację problemów i rozwiązań, bo jeśli widzimy złożoność, to
te problemy też będziemy tutaj widzieć.
Główną cechą event z terminu jest aspekt wizualny i współpraca.
Taki event streaming polega na tym, że zespół spotyka się i
w swobodnym, swobodnej burzy mózgów.
Stąd też możemy zobaczyć nazwę Event Store porównanie z Brain Store Bing.
Burzę mózgów. Tutaj mamy burzę eventów.
Wypisują zdarzenia, jakie zachodzą w aplikacji.
O tych zdarzeniach opowiem za chwilę.
W trakcie event streamingu nie skupiamy się na kodzie i implementacji.
Programiści mają dużą tendencję do tego, żeby każdy problem rozważać od razu pod
kątem implementacji nazw, tabel itd itd.
Nie, to nie jest ten moment.
Tutaj mówimy tylko o zdarzeniach biznesowych, zdarzeniach domenowych
i w efekcie jeden sterownik pomoże nam zmapować i zrozumieć procesy,
które zachodzą w aplikacji.
Jeśli chodzi o elementy event surfingu, to duże znaczenie mają
tutaj karteczki i kolory. A dlaczego?
Oto dlaczego pomarańczowymi karteczkami oznacza się zdarzenia biznesowe.
Niebieskimi. Komendy, które do tych zdarzeń prowadzą.
Żółtymi najczęściej określa się aktora, aktora, czyli
system bądź użytkownika, który daną komendę wywołuje, więc będziemy
mieć taki oto ciąg różnych zestawów kartek, gdzie mamy aktora
wywołującego komendę, a efektem tej komendy może być zdarzenie
biznesowe zdarzenie domenowe.
Te wszystkie zdarzenia komendy łączą się w agregaty.
Pewne zasięgi i zakresy operacji. Reguł.
Biznesowych, które pozwalają nam zdefiniować niezmienne dziki i biznesowe.
Jak może wyglądać taki przykładowy efekt i termin?
A w ten sposób mamy tutaj taki bardzo uproszczony UNC
w formie i dotyczący aplikacji Pomodoro.
Więc w efekcie naszego warsztatu zapisaliśmy sobie szereg eventów, szereg
zdarzeń, więc mamy Session started.
Sesja została, wystartowała, sesja została zakończona, może
zostać zafałszowane lub wznowiona.
Tutaj mamy część konfiguracyjny, gdzie sesja może mieć ustawiony czas.
Pauza może mieć ustawiony czas.
Możemy zapisać sobie sesję i zobaczyć historię naszej sesji pracy w Pomodoro.
I to jest szereg eventów.
Każde z tych zdarzeń jest wywoływane przez konkretną
komendę, więc najpierw pojawia się komenda, a następnie pojawi się zdarzenie,
czyli start session zostanie wywołane przez Session started,
czyli session started zostanie wywołane przez komendę start session itd itd.
Jak zapewne zauważyłeś, mamy tutaj szereg komend i zdarzeń, które odpowiadają
konkretnym zakresem operacji i za te zakresy operacji odpowiadają te zielone
karteczki, które symbolizują tutaj agregaty.
Więc widzisz, że mamy jakiś agregat pomodoro, który będzie trzymał nie
zamienniki dotyczące wystartowania sesji, zatrzymania i całego cyklu życia sesji.
Mamy tutaj zakres agregatu configuration, gdzie konfigurujemy sobie czas dla sesji,
czas dla pauzy i mamy historię jak i zestaw analityki.
coś co możemy przeglądać, czyli zapisywanie sesji do tej historii
i odczytywanie historii.
Mamy też różnych aktorów, których możemy mieć w systemie, więc na pewno użytkownik
może nam wystartować taką sesję.
Ale już system tę sesję może zakończyć.
System lub użytkownik, bo możemy wcisnąć fizyczny przycisk STOP
lub czas sesji może upłynąć i w ten sposób mniej więcej przebiega taki warsztat.
Event scoringu w tej swojej podstawowej formie.
Oczywiście event w terminie jest dużo bardziej złożonym, złożoną metodologią.
To co ja tu pokazałem to coś w rodzaju hype picture event streaming, czyli
taki bardzo ogólny level time.
Z terminu mapowania tych eventów jest np.
Domain Level Modeling.
Jest na przykład jeszcze Domain Level Modeling itd itd.
Więc o szczegóły.
O więcej informacji.
Przejrzyj sobie materiały Alberto Brandon Giniego.
Ja tutaj daję sygnał, że coś takiego istnieje i jest to super wygodna metoda
nie tylko do mapowania bardzo złożonych systemów, ale tych prostych.
Możesz też korzystać prywatnie z event terminu, np.
pracując nad jakimś ćwiczeniem, masując sobie kontekst.
Bardzo to pomaga.
Dobrze wiedzieć, że coś takiego jest i jest to pewne narzędzie każdego
architekta, które pomaga lepiej zrozumieć domenę, lepiej zrozumieć system.
Jeśli chodzi o rodzaje karteczek, które mamy i jak zapisujemy te zdarzenia, to
pierwszą taką karteczką, pierwszym kolorem karteczki jest Domain Event zdarzenie
domenowe i to jest zdarzenie, które nie jest zdarzeniem implementacji.
Innym zdarzeniem w kodzie typu rekord został zapisany, ale jest to
zdarzenie istotne dla ekspertów, czyli np.
zamówienie zostało złożone.
Nie będziemy to mieć zamówienie stworzone, utworzone w bazie nie.
Zamówienie złożone, więc musi mieć znaczenie biznesowe.
Zdarzenia zapisujemy zawsze w czasie przeszłym, no bo to jest
coś, co się wydarzyło.
Musimy o tym mówić zawsze w czasie przeszłym i w tej pierwszej
fazie, więc to jest takie swobodne licytowanie zdarzeń
burza mózgów, niebieska karteczka, komenda.
Tak jak mówiłem wcześniej, to jest czynność, która prowadzi do zdarzenia i
dla nas zwykle komenda jest podstawą do implementacji metody.
Więc często te niebieskie karteczki z even stringu przenosimy na kod i
odwzorowuje my w metodach.
Komenda będzie miała tryb rozkazujący, więc kiedy zdarzenie będzie wyrażone jako
złożone zamówienie, to komenda będzie tutaj.
Złóż zamówienie.
Żółte kartki jak mówiłem, to są aktorzy, czyli inicjatorzy komend,
czyli te osoby, te czynniki, które wywołują system,
wyzwalacze zdarzeń to jest dobre określenie.
No i mamy wreszcie agregaty.
To jest powiązane zgrupowane komendy i zdarzenia w jednej jednostki logiczne
i jest to właściwie podstawa do implementacji w kodzie
do zbudowania klas w systemie.
Więc mamy agregaty, które trzymają pieczę nad nie zamiennikami biznesowymi.
Dzięki mapowaniu eventów jesteśmy w stanie wydzielić sobie granice kontekstów.
Możemy wyłapać cechę języka wszechobecnego i ustalić właśnie granice
powiązanych ze sobą agregatów.
Będziemy to widzieć na szerszym obrazie, więc treningu.
Na takim pełnym warsztacie jesteśmy w stanie wychwycić,
gdzie przebiegają granice kontekstu.
Można powiedzieć, że na tym naszym przykładzie te granice są dość
jasne, bo mamy Pomodoro session.
To może być jakiś jeden kontekst, który ma jeden agregat.
Mamy konfigurację i mamy historię.
Mamy trzy konteksty, które są reprezentowane przez trzy agregaty.
W następnej lekcji przejdziemy już do kwestii modelowania domeny.