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!
Zdarzenia domenowe to kolejny istotny element Domain Driven Design.
Wyobraźmy sobie taką analogię, że idziemy na koncert, idziesz na koncert i w
momencie, kiedy na scenę wchodzi Twój ulubiony zespół,
to jest to pewien wyjątkowy moment dla Ciebie.
Koncert Metalliki i zmienia to doświadczenie tego wydarzenia.
Może grać wcześniej support na tym koncercie i nie będziesz go tak przeżywać
jak w momencie, gdy wejdzie ten ulubiony zespół i to wydarzenie.
Zespół wszedł na scenę, będzie nam komunikował, że wydarzyło się
coś ważnego na scenie dla Twojego życia.
I taką rolę właśnie pełnią zdarzenia domenowe w systemie.
One informują nas o ważnych wydarzeniach, ważnych momentach w logice, we flow całego
systemu, które są istotne dla logiki biznesowej, dla biznesu,
dla operacji biznesowych.
Informują inne części systemu o sytuacjach, które mogą wymagać
odpowiedzi lub reakcji.
Więc kiedy będziemy mieć publikowane jakieś zdarzenie, będziemy mieć też
konsumentów, którzy będą nasłuchiwać na te zdarzenia i reagować na nie.
Jakie zdarzenia możemy mieć w systemie?
W e-commerce możemy mieć klasyczny Order Summit, gdzie będziemy mieć informacje o
nowym zamówieniu i na te informacje musi zareagować magazyn i odczyta to zdarzenie,
żeby zaktualizować stan magazynu.
Będzie reagować logistyka, żeby przygotować wysyłkę i
będzie też reagować np.
dział powiadomień, moduł powiadomień, który będzie musiał
wysłać powiadomienie do klienta o zmianie statusu.
Możemy mieć bankową transakcję zatwierdzoną Transaction Conference.
Takie pomyślne zakończenie transakcji i w konsekwencji tego zdarzenia
będziemy wysyłać potwierdzenie do klienta, aktualizować stan konta, rejestrować
transakcje w historii konta.
Kolejne zdarzenie to Cart Item added.
Taki przykład to aplikacja znów e-commerce.
Dodanie produktu do koszyka.
Będziemy mieć aktualizację koszyka.
Będzie musiał zareagować na to moduł rekomendacji produktów i podpowiedzi,
apeli, ale także aktualizacja statystyk i analityki.
Więc zdarzenia to dla nas takie punkty, które wyzwalają dalsze
kroki procesów biznesowych.
I teraz prosty kod.
Przykład takich zdarzeń to przygotowałem zdarzenie Order Replace.
Zamówienie zostało złożone.
Jak widzisz, to zdarzenie ma bardzo prostą strukturę, bo pilnujemy też, żeby
atrybutami tego zdarzenia się nie przeładowywać, żeby ono zawierało zawsze
tylko te parametry, te atrybuty, te dane, które są koniecznie potrzebne
do skonsumowania tego zdarzenia.
Więc tu mamy ID zamówienia, które zostało złożone i data, kiedy to
zamówienie zostało złożone.
I teraz Consumer będzie mógł sobie pobrać wszystkie informacje z agregatu tego
zamówienia na podstawie tego numeru ID.
A data może służyć do tego na przykład, że dział logistyki ma 24 godziny od momentu
złożenia zamówienia na rozpoczęcie wysyłki będzie się już
odliczał jakiś timer, jakiś upływ czasu właśnie na podstawie tego, że to
zamówienie zostało złożone, więc zdarzenia informują nas o ważnych momentach w logice
biznesowej i w działaniu naszej aplikacji, ale są to takie zdarzenia.
Musisz pamiętać, że są takie zdarzenia, które mają wpływ na biznes,
mają wpływ na domenę.
Dlatego mówimy o tych zdarzeniach jako zdarzenia domenowe.