Domain-Driven Design w praktyce

Opis

Tworzenie złożonych systemów wymaga uporządkowanego podejścia zarówno w sferze technicznej jak i sferze modelów dziedzinowych. Domain-Driven Design przychodzi z pomocą w postaci całego zestawu wzorców strategicznych i taktycznych, dzięki którym zespoły mogą w zarządzalny sposób strukturyzować system w zbalansowane moduły a następnie w bloki budujące. DDD to sprawdzone podejście, które umocniło swoją pozycje w świecie coraz powszechniejszych ostatnio Microservices jako jedna z głównych praktyk projektowych.

Wymagane umiejętności

  • Uczestnik ma za sobą minimum 2-letnie doświadczenie realizacji systemów informatycznych.
  • Uczestnik zna zagadnienia projektowania i programowania obiektowego na poziomie średniozaawansowanym.

Szkolenie zamknięte jest prowadzone głównie w językach Java i C#. Po wcześniejszych ustaleniach szkolenie może być zrealizowane w innych językach np. PHP, C++, Python.

Podstawowy program

Moduł. 1
Wprowadzenie do Domain-Driven Design
Moduł. 2
Destylacja dziedziny
Moduł. 3
Model dziedziny
Moduł. 4
Architektura aplikacji
Moduł. 5
Komunikacja pomiędzy Bounded Contextami (BC)
Moduł. 6
Wzorce taktyczne DDD
Moduł. 7
Event Sourcing
Moduł. 8
CQRS
Moduł. 9
Command i Query w praktyce

Szczegółowy program

Moduł. 1
Wprowadzenie do Domain-Driven Design
  • Główne wyzwania w tworzeniu oprogramowania
  • Anemiczne modele
  • Praktyki i zasady DDD
  • Czy nie jest DDD
  • Język dziedzinowy
  • Ubiquitous Language
  • Osadzenie DDD w różnych stylach architektonicznych
  • DDD a Microservices
  • Wyzwania stojące przed zespołem rozpoczynającym prace z DDD
  • Dobre praktyki związane z wdrażaniem DDD
Moduł. 2
Destylacja dziedziny
  • Klaryfikacja wiedzy o dziedzinie i współpraca z ekspertem dziedzinowym
  • Wykorzystywanie istniejących modeli
  • Jak uchwycić esencję problemu?
  • Core Domain
  • Poddziedziny i ich wpływ na kształt systemu
  • Czy każda część systemu musi być dobrze zaprojektowana?
Moduł. 3
Model dziedziny
  • Czym jest model dziedziny?
  • Model-Driven Design
  • Rola Ubiquitous Language w analizie
  • Jak tworzyć dobre modele?
  • Założenia implementacyjne związane z warstwą dziedzinową
  • Wzorce warstwy dziedzinowej
  • Czy jeden model to dobry kierunek?
  • Używanie Bounded Contextu
  • Strategie implementacyjne związane z Bounded Contextami
  • Mapa rzeczywistości
  • Zależności pomiędzy Bounded Contextami
  • Efektywne wykorzystanie Context Map
Moduł. 4
Architektura aplikacji
  • Architektura aplikacji
  • Usługi aplikacyjne
  • Klienty aplikacji
  • UI a DDD
Moduł. 5
Komunikacja pomiędzy Bounded Contextami (BC)
  • Strategie integracji BC
  • Strategie integracji BC w środowisku rozproszonym
  • SOA oraz reaktywne DDD
  • Integracja poprzez messaging
  • Integracja poprzez HTTP REST i RPC
Moduł. 6
Wzorce taktyczne DDD
  • Wzorce ułatwiające modelowanie dziedziny
  • Wzorce związane z cyklem życia
  • Value Objects
  • Entities
  • Domain Services
  • Domain Events
  • Agregaty
  • Fabryki
  • Repozytoria
  • Moduły
  • Transakcje w DDD
Moduł. 7
Event Sourcing
  • Wady przechowywania stanu w postaci zrzutu (Snapshot)
  • Stan jako strumień zdarzeń
  • Agregaty oparte o zdarzenia
  • Tworzenie Event Store
  • CQRS a Event Sourcing
  • Wady i zalety Event Sourcing
Moduł. 8
CQRS
  • Kiedy jeden model to za mało
  • Model Command
  • Model Query
  • Strategie implementacyjne
Moduł. 9
Command i Query w praktyce
  • Odróżnianie logiki aplikacyjnej i dziedzinowej
  • Wzorce usług aplikacyjnych
  • Testowanie usług aplikacyjnych
  • Raportowanie w obszarze Bounded Contextu
  • Raportowanie dla wielu Bounded Contextów

Parametry szkolenia

Czas trwania
3 x 8h
Forma zajęć
Ćwiczenia - 60%, wykład - 40%
Kod
DDD
Wielkość grupy
do 10 osób

Jak zamówić

« lista szkoleń