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!
Inną odmianą serwisów w Domain Design w naszych wzorcach taktycznych
są serwisy domenowe.
Wyobraź sobie sytuację, w której organizujesz jakąś imprezę i zlecasz
poszczególne elementy tej imprezy swoim znajomym.
Jeden ma przynieść chipsy, ktoś ma przygotować grilla, ktoś
ma zadbać o napoje i o muzykę.
Każdy ma jakieś specjalne zadania i serwis domenowe.
To jest taki właśnie pomocnik, który ma konkretne zadania biznesowe.
Więc tutaj w odróżnieniu od serwisów aplikacyjnych, które orkiestrą są nam
przepływ operacji, to serwis domenowe będzie już zawierał
jakąś logikę biznesową.
Tam musi być logika, bo wykonujemy konkretne zadania.
I ta logika będzie opakowana właśnie w serwisy domenowe.
To jest taka logika, która nie pasuje naturalnie do encji wielu obiektów.
Czy jest zbyt złożona na agregat i nie pasuje tak naprawdę do agregatu,
bo musimy orkiestrowej np.
kilkoma agregaty albo wykonać jakiś szereg sekwencję
kroków na konkretnym agregacie i nasz np.
serwis aplikacyjny byłby już zbyt duży, więc możemy wydzielić taką
część logiki takich operacji logicznych do serwisu domowego.
To są operacje, które mogą być zbyt złożone dla agregatu, ale są bardzo ściśle
związane z logiką biznesową, nie z flow, z operacjami, ale z logiką biznesową,
więc będziemy mieć tutaj walidację reguł biznesowych.
I takie przykłady serwisów domenowych.
To może być serwis, który dotyczy zarządzania promocjami.
Jest bardzo specyficzny jeśli chodzi o domain Design,
jeśli chodzi o aplikacja komiksową i mamy tu możemy mieć zniżki, promocje w
zależności jakie kategorie i profile klienta mamy.
Serwis do przelewów już będzie.
Ten serwis bankowy bardziej ograniczony, dotyczący transferów
pieniężnych między bankami, walidacji i kursami wymiany i wszystkim
co jest związane właśnie z tym aspektem.
Możemy mieć też serwis zarządzanie urlopami w takiej aplikacji HR owe, gdzie
będą wnioski, zatwierdzanie, odrzucanie tych wniosków urlopowych.
Jak to wygląda w kodzie, to zapraszam Cię.
Teraz pokażę przykłady.
Więc przygotowałem takie dwa przykłady serwisów pierwsze Service as Layout i
Points, drugi serwis Everywhere Credit Card i zobacz jak tutaj
wygląda ten serwis.
Więc mamy tu agregat Customer lub encje Customer
i w zależności od tego jaki stan ten encji to musimy wykonać odpowiednią
operację lub rzucić wyjątkiem.
Ten serwis ma bardzo wąską działkę logiki biznesowej, którą wykonuje.
2. Umożliwiamy tutaj lepsze testowanie.
kości. Ten kod jest bardziej czytelny.
Zgodnie z zasadą separatora w koncepcji Single Responsibility Principle
i w ogóle całym SOLID em.
Mamy czysty kod.
Tak samo będziemy w kredycie, mamy jakąś kartę kredytową, agregat,
karty kredytowej.
Sprawdzamy, czy ona jest poprawna, czy ma wystarczająco dużą
kasę, żeby wykonać taką operację.
I tak żyjemy tą kartę, czyli ściągamy odpowiednią kwotę z karty.
Serwisy domenowe operują logiką, która jest zbyt złożona
dla agregatu, ale ciągle to jest logika biznesowa.
Mamy tutaj reguły biznesowe, mamy reguły biznesowe.
To nie są jakieś porównywarki, jakieś magic numbers.
Mamy konkretne reguły biznesowe, więc metody, które mają bardzo
znaczące nazwy, tym się zajmują.
Serwisy domenowe.