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!
No i przechodzimy do drugiego przykładu modelowania domeny.
Będzie to domena e-commerce.
Jak wygląda taki model?
Mamy tutaj Value Object price, więc będziemy mieć tu jakąś cenę, która ma
pole amount i currency.
No i mamy tutaj konstruktor.
Mamy też walidację, która sprawia, że cena nie może być ujemna.
Porównywania nie mamy zaimplementowane, bo nie jest to nam potrzebne do
demonstracji tej logiki, tego modelu.
Przejdźmy do encji.
Mamy encje Customers są bardzo proste.
Encja jest to identyfikator i produkt, który ma jakiś stan i stanem tego produktu
jest stock, czyli liczba produktów w magazynie dostępnych
produktów, które możemy zmieniać za pomocą tej funkcji.
Update Stock.
Mamy repozytoria i interfejsy repozytoriów do pobierania klientów do operacji na
zamówieniach i do operacji na produktach. Więc co będziemy mieć?
No i przejdźmy dalej.
Mamy tutaj agregaty, agregat, zamówienia, które znasz już z poprzednich lekcji,
więc on wygląda bardzo podobnie.
Mamy tutaj agregat zamówienia, który może mieć nowe linie zamówienia, może mieć
status completed no i pobiera sobie total price i to operuje wszystko na tym
agregacie order item No i będziemy mieć serwisy dwa serwisy.
Pierwszy to jest Application Service, czyli ten główny nasz serwis, który
ma referencje, rozstrzygnięte zależności repozytoriów, no i przy tworzeniu
zamówienia on sobie będzie pobierał tutaj klienta z
repozytoriów, będzie sobie tworzył nowe zamówienie za pomocą naszego serwisu
nowego, będzie tworzył to zamówienie i zapisywał je z powrotem do repozytorium,
No i na końcu będzie je zwracał z tej metody.
Ten nasz eCommerce Service service aplikacyjny będzie miał też możliwość
dodawania produktów do zamówienia, czyli nowych linii zamówienia.
Mamy tutaj jakieś parametry i na podstawie tych parametrów będziemy
sobie tutaj budować i dodawać za pomocą znowu serwisu domen owego
do naszego agregatu order.
Kolejne produkty Jak wygląda nasz service domen owy Service domenowe pilnuje tutaj
logiki na wyższym poziomie niż agregat, więc tworzy nam zamówienie.
Odpowiada za to, żeby zamówienie miało odpowiedni numer identyfikacyjny i
podanego klienta i dodaje nam produkty.
Więc w momencie jeśli nie mamy produktu w magazynie to dostaniemy wyjątek.
I to wszystko obsługuje nam tutaj service domenowe, który także trzyma
pieczę nad nie zamiennikami biznesowymi.
Tworzy nam nową pozycję zamówienia dodaje.
No i zmienia też status produktu w magazynie.
I tutaj taka lampka się może zapalić.
Wprawdzie istnieje też klasyczny przykład domeny inventory kontekstu inventory,
który powinien obsługiwać właśnie ten przypadek aktualizacji liczby dostępnych
produktów w magazynie, ale to już jest bardziej zaawansowane zagadnienie.
Zapraszam Cię do kolejnego przykładu.
W następnej lekcji.