Zrozumienie biznesu to klucz do sukcesu programisty
1 godz. 30 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosZgłębimy podstawy Domain Driven Design, skupiając się na zrozumieniu, czym jest domena i jakie role pełnią subdomeny w rozumieniu biznesu i projektowaniu oprogramowania. Dowiesz się, jak identyfikować i definiować domenę oraz subdomeny w kontekście biznesowym, co jest kluczowe dla efektywnego modelowania i implementacji systemów.
Skoncentrujemy się na jednym z kluczowych aspektów Domain Driven Design - definiowaniu granic kontekstów (Bounded Contexts). Nauczysz się, jak precyzyjnie wyznaczać te granice, co pozwala na lepszą separację i integrację różnych części systemu. Omówimy, jak wyznaczone granicę wpływają na jasność komunikacji w zespole oraz jak ułatwiają zrozumienie modelu biznesowego.
Spojrzymy na strategiczne wzorce DDD, skupiając się na kluczowych konceptach takich jak Subdomena i Bounded Context. Zrozumienie i umiejętność ich identyfikacji w strukturach biznesowych to podstawowa umiejętność w projektowaniu domenowym. Nie pominiemy też tematów pobocznych jak kontekst schizofreniczny czy Prawo Conwaya. Każdy z tych elementów pomoże Ci lepiej zrozumieć zastosowanie Domain Driven Design w praktyce.
Wzorce taktyczne są fundamentalne dla praktycznego modelowania i implementacji oprogramowania. O ile wzorce strategiczne wyrażają koncepcję, to wzorce taktyczne dotykają, tego, co kochają programiści i programistki czyli kodu. Zobaczysz jak i po co je stosować i jak mogą wspomagać spójność oraz transakcyjność danych.
Wszystko fajnie z tym DDD, ale jak to poukładać? Na to też znalazło się miejsce w kursie. Cały moduł poświęcimy na zapoznanie się z przykładową strukturą, organizacją plików i folderów aplikacji opartej o Domain Driven Design. Nie musisz się już zastanawiać, gdzie upchnąć Twoje klasy. Wszystko stanie się przejrzyste, intuicyjne i oczywiste.
Kurs powstał z myślą o programistach, architektach, liderach technicznych, a także ludziach biznesu, którzy potrzebują pogłębić swoją wiedzę o projektowaniu oprogramowania skoncentrowanego na domenie biznesowej. Niezależnie od tego, czy jesteś na początku drogi z DD, czy masz już trochę doświadczenia i chcesz usystematyzować lub odświeżyć wiedzę - ten kurs jest dla Ciebie!
Domena jest bardzo ogólnym pojęciem, ale żeby można było lepiej wyrazić model
domenowe potrzebujemy podzielić tą domenę na mniejsze części i te mniejsze
części to właśnie subdomeny.
Więc czym jest subdomena?
Otóż subdomena jest to mniejsza, wydzielona część domeny, zajmująca
się już bardziej konkretnym aspektem.
O ile domena definiuje cały kontekst biznesowy, subdomena będzie się zajmowała
już pojedynczym, konkretnym aspektem całej domeny, więc definiujemy specyficzne
aspekty w ramach tej subdomeny i subdomena odciąża nam złożoność całej domeny.
Czyli tutaj mamy ten moduł ecommerce i subdomeny.
Moduł ecommerce jest faktoring, jest np.
zarządzanie produktem tzw. product catalog.
To będą już subdomeny tego całego modułu ecommerce i obciążamy w ten
sposób złożoność domeny.
Możemy się skupić na pojedynczych aspektach i umożliwia nam to z
kolei niezależny development.
Skupiamy się tak jakby na mniejszym projekcie w ramach wielkiego projektu, bo
wtedy faktoring tworzenie faktur będzie już projektem, osobnym projektem, już w
ramach dużego systemu w ramach całego systemu, który z kolei wyraża potrzeby
naszej domeny i subdomena obrazuje strukturę biznesu.
Może inaczej subdomeny obrazują strukturę biznesu.
Subdomeny połączone ze sobą obrazują strukturę organizacji, często strukturę
firmy, strukturę problemów biznesowych i są w zgodzie z biznesową strukturą.
Mogą wyznaczać kierunki w podziale zespołów, mogą wyznaczać kierunki w
doborze technologii, mogą wyznaczać też kierunki w architekturze całego systemu.
Czy to będzie modularny monolit?
Te moduły w mianowicie lub mikro serwisy.
Subdomena jest takim punktem wyjścia dla zespołów, dla budowania systemu już
dla architektury jest konkretnym punktem wyjścia.
O ile domena jest pewnym wyznacznikiem, zbiorem zasad, to subdomena jest już
konkretnym zbiorem konkretnych, konkretną podgrupą funkcjonalności
operacji logicznych.