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!
Porozmawiajmy teraz o odkrywaniu domen.
O co chodzi w odkrywaniu domen?
Kluczem w odkryciu naszej domeny, wydzieleniu kontekstów, zrozumieniu na
czym polega problem, nad którym pracujemy.
Problem biznesowy, który rozwiązuje system.
Potrzebne nam jest zrozumienie biznesu i właśnie to odkrywanie domen
prowadzi nas do zrozumienia biznesu.
W jaki sposób to zachodzi?
Przede wszystkim są to rozmowy z interesariuszami.
A kto to jest Interesariuszy? Interesariuszy.
To jest osoba odpowiedzialna za biznes, odpowiedzialna za ficzer,
odpowiedzialna za pewną część logiki.
Analizujemy dokumentację biznesową, szukamy jak zachodzą procesy.
Stosujemy oczywiście event story, o którym mówiłem.
I kluczem do sukcesu w odkrywaniu domeny, w zrozumieniu biznesu
jest rozmowa i analiza.
Konieczny jest dialog i praca z danymi, praca z tym, co
zastajemy w systemie, co potrzebujemy.
Potrzebujemy głęboko zrozumieć potrzeby, a co za tym idzie zrozumieć problemy
biznesowe, które musimy rozwiązać.
I identyfikujemy domenę poprzez rozpoznanie kluczowych obszarów
biznesowych, kluczowych fragmentów.
Można to porównać do działów w firmie.
Kiedy mamy firmę.
W każdej firmie będziemy mieć prawdopodobnie jakiś dział księgowości,
jakiś dział marketingowy, jakiś dział sprzedaży.
To są pewne obszary biznesowe.
Tak samo będzie w naszym biznesie.
W domenie będą obszary odpowiedzialne za notyfikacje, obszary odpowiedzialne może
za katalog produktów, może za składanie zamówień.
I dążymy tutaj do wyróżnienia głównych funkcjonalności, które właśnie płyną z
tych poszczególnych obszarów biznesowych i szukamy odpowiedzi na pytanie
co jest sercem biznesu?
Sercem biznesu e-commerce będzie składanie zamówień.
Sercem biznesu typu booking będzie rezerwacja hoteli.
Sercem biznesu do zarządzania zadaniami będzie kwestia budowania projektów.
Szukamy takich funkcji, które możemy przedstawić w trakcie
pitch deck, a w windzie.
Gdy ktoś nas zapyta, czym zajmuje się aplikacja, nad którą
pracujesz, możemy powiedzieć pracujemy nad kalendarzem do umawiania
spotkań i zarabiania na nich.
I mamy odpowiedź, czym jest Zen.
KAL Na przykład, Więc szukamy tych funkcji, które wyróżniają firmy.
Przechodzimy następnie do modelowania domeny.
Kiedy już mamy tę analizę wykonaną, jakiś dialog zaszedł.
Musimy modelować.
Tworzymy sobie modele domenowe, tworzymy agregaty, szukamy zależności.
Budujemy diagramy obrazujące relacje, więc korzystamy z modeli, z diagramów i chcemy
zobrazować relacje i procesy biznesowe.
Tutaj mocno wjeżdża właśnie Event Touring.
Event Streaming jedzie też dalej Przez wyszukiwanie granic band kontekstów musimy
określić granice kontekstów i ustalić język wszechobecny.
Taki język, który jest wspólny dla całego zespołu, Język, którymi posługiwać się
będą i programiści, i programiści, i też osoby odpowiedzialne za produkt
czy też osoby biznesowe.
Żeby jedno pojęcie krążyło między zespołem technicznym, a nawet CEO.
Szukamy tych pojęć, szukamy wspólnego rozumienia języka do
wyznaczenia granicy kontekstu.
Szukamy i definiujemy agregaty i encje.
Jak się definiuje agregaty i encje?
O tym powiem później w kolejnych materiałach.
Szukamy value obiektów, szukamy encji, definiujemy agregaty, zbieramy operacje
logiczne w pewną całość, nie zamienniki.
Kupujemy je, budujemy sobie solidne fundamenty do wydzielenia domeny.
Bo agregaty, encje, value obiekty to są można powiedzieć kluczowe składniki
modelu tego relacyjnego już na końcu.
No i event termik to muszą być zdarzenia domenowe, więc wyodrębnienie tych zdarzeń
domenowych z mapowanie ich i poszukanie komend pozwoli nam na praktycznie
stworzenie sobie planu na implementację.
Domena ewoluuje jak biznes, ewoluuje, więc musimy cały czas czuwać nad zmianami i
cały czas być na bieżąco, więc warto weryfikować nasz model z interesariuszami.
Iteracyjne poprawki i usprawnienia to tak jak wygląda cykl życia programu, Tak też
wygląda cykl życia domeny, więc będziemy mieć nowe ficzery.
Biznes się zmienia, świat się zmienia, domena też może
ewoluować i w takim realnym użyciu będziemy mieć też testowanie modelu.
Ten model będzie testowany właściwie przez wykorzystanie przez jego użycie.
Ważne, żeby mieć otwartą głowę na zmiany i na to, żeby się nie murować w pierwszym
rozwiązaniu, ale czuć te ewolucyjne domeny.
No i na koniec potrzebujemy dokumentować nasze prace.
Domena.
Wydzielenie granic domeny powinno być udokumentowane i dokumentacja w Domain
Driven Design odgrywa dużą rolę.
Może to być dokumentacja w formie diagramów, w formie
pisanej w formie video. Jakakolwiek.
Ważne, żeby to była dokumentacja, która jest punktem odniesienia dla wszystkich
pracujących nad danym systemem.
Skoro mamy już zamontowaną domenę, wiemy w jaki sposób do tego dochodzi.
Przejdźmy teraz do zagadnienia modelowania subdomen.