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!
Na koniec, w kontekście jeszcze tych teoretycznych podstaw dotyczących
budowania architektury oprogramowania w Domain Driven Design
porozmawiajmy o granicach kontekstów.
Definiowanie granic kontekstów jest jedną z podstawowych technik umiejętności,
które pozwalają nam efektywnie pracować z domeną i z jej granicami.
W pierwszej kolejności musimy dokonać przeglądu języka.
Konieczne jest tutaj sprawdzenie, aby język był spójny wewnątrz kontekstu i
zdefiniować te cechy, którymi ten język będzie się różnił pomiędzy kontekstami.
Więc szukamy wspólnych pojęć.
Szukamy wspólnego rozumienia zagadnień, Szukamy wspólnego zrozumienia domeny,
kontekstów i całej logiki biznesowej, która w skład wchodzi, tak, aby ta część
biznesowa zespołu, część inżynierska i programistyczna rozumiała się
mówiąc tym samym językiem.
Analiza zależności pomoże zminimalizować zależności czy zminimalizować
przepływ danych między kontekstami.
Większe zależności jeśli jeden kontekst bardziej zależy od drugiego,
mogą wskazywać na to, że granice są źle wyznaczone.
Jeśli mamy jakiś odczyt danych w trakcie jednej operacji w danym kontekście,
który konieczny jest do wykonania z innych kontekstów, będzie to dla nas taki znak,
że coś tutaj zostało źle wyznaczone.
Konieczne jest też zbieranie feedbacku od zespołów, opinii od developerów i biznesu,
tak aby wyłapywać wszelkie niejasności w rozumieniu pojęć w rozumieniu języka
i niejasności w projekcie.
W samym modelu domenowych, które mogą wskazywać na te właśnie niejasne granice.
A to z kolei doprowadza nas do oceny modelu biznesowego,
aby upewnić się, że granice wspierają cele biznesowe i procesy.
Jeśli granice tylko utrudniają realizowanie rozwoju systemu,
oznacza to, że coś trzeba przerobić, jeśli chodzi o sam model kontekstów.
No i wreszcie tak jak domena się zmienia, system się zmienia, konieczne są iteracje,
regularny przegląd i dostosowywanie granic w miarę ewolucji projektu i organizacji,
więc będziemy mieć do czynienia z przenoszeniem klas, ze zmianą interfejsów,
może ze zmianą nawet struktur danych, czy przenoszenie jednych tabel
do drugiego kontekstu.
To wszystko będzie żyło w miarę jak nasz system będzie się rozwijał.