Implementacja Domain Driven Design - wzorce architektoniczne (część 2)

Warsztat ekspercki to coś więcej niż szkolenie. To praca w kontekście konkretnych problemów.

Kod: ddd-workshop-DDD-impl
Kategoria: Warsztaty eksperckie DDD
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 2
Grupa docelowa: developerzy
architekci

Pragmatyczne podejście do implementacji DDD w wybranej technologii: Java, .NET, PHP, RoR.



Zakres

Techniczne aspekty implementacji DDD
  • architektury aplikacji: zarządzanie złożonością dzięki rozwarstwieniu logiki,
  • architektury systemowej: integracja modułów, architektura zdarzeniowa zwiększająca responsywność i otwierająca na pluginy,
  • skalowania systemu - architektura CqRS,
  • konkretne techniki implementacji z wykorzystaniem popularnych stosów technologicznych,
  • najlepsze praktyki Clean Code i dbanie o wysokie testability.


Techniki modelowania problemów biznesowych

Techniki modelowanie DDD (wzorce strategiczne i taktyczne oraz techniki lingwistyczne i wizualne) są omawiane na szkoleniu DDD-modelowanie, które powinno nastąpić w pierwszej kolejności, przed szkoleniem z zakresu implementacji.

Forma

Szkolenie bazuje na modelu stworzonym podczas szkolenia z zakresu modelowania, które poprzedza niniejsze szkolenie.

Podczas wykładów trener omawia najlepsze praktyki implementacji wzorców architektury aplikacyjnej i Building Blocks DDD

Podczas warsztatów implementujemy dwa moduły systemu klasy ERP. Kolejne zadania polegają na przyrostowym dodawaniu nowych funkcjonalności w sposób ilustrujący zagadnienia teoretyczne poznane podczas poprzedzającego je wykładu.

Podczas dyskusji uczestnicy mają dostęp do wiedzy technicznej trenera oraz mają możliwość zweryfikowania swoich rozwiązań z wypracowanymi przez innych uczestników szkolenia.

W czasie warsztatów uczestnicy rozwiązują postawione przed nimi problemy pracując w parach (Pair Programming), zmieniając po każdym zadaniu role: Pilot i Driver. Technika ta ma za na celu umożliwienie spojrzenia na zagadnienia z różnych perspektyw, aktywując jednocześnie więcej zasobów kognitywnych.

W ramach szkolenia omawiamy oraz ćwiczymy w praktyce zarówno podstawowe jak i zaawansowane techniki DDD, takie jak: wzorce Building Blocks, wypracowanie Ubiquitous Language oraz zestaw technik Strategic Design.

Projekt referencyjny

Sprawdź naszą implementację przykładowego projektu DDD+CqRS: Sample Leaven.

Wyróżniki warsztatu

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Omówienie najczęstszych błędów w implementacji Agregatów
  • Najlepsze praktyki i pułapki podczas stosowania ORM i IoC
  • Nowoczesne architektury: CqRS, Event Driven, Event Sourcing

Program Warsztatu eksperckiego

Pobierz program w formacie PDF
  1. Architektura aplikacji - praktyczna implementacja koncepcji architektonicznych
    1. Wykorzystanie IoC przy projektowaniu z myślą o jakości - otwartość projektu na rozbudowę i testy
      1. Dependency Injection - pluginy zmieniające zachowanie systemu
      2. Zdarzenia - pluginy dodające nowe zachowanie
      3. AOP - aspekty ortogonalne (transakcje, bezpieczeństwo, audyty)
    2. Podejście warstwowe - rozmieszczenie building blocks na warstwach
      1. Strukturyzacja systemu
          Moduły - budowaniePakiety/namespaces
      2. Warstwa prezentacji
          Ochrona domeny przed wyciekaniem do UI
      3. Logika aplikacyjna
          Projektowanie API systemuProblem uczciwego API - wersjonowanie obiektów
      4. Logika domenowa (Building Blocks DDD)
          Widoczność klas - wykorzystanie zasięgu pakietowego
      5. Warstwa infrastruktury
          Wyzwania ORMPułapki architektury zdarzeniowej
  2. Architektura systemu
    1. SOA
      1. Zasada jednego źródła prawdy
      2. Unikanie antywzorce "Corporate Model"
      3. Hermetyzacja modeli domenowych poniżej Modelu Kanonicznego
    2. Event Driven Architecture
      1. Unikanie Single Point of Failure
      2. Event Broker vs Events Bus
      3. Eventual Consistency - strategie
    3. Problem transakcyjności zdarzeń
  3. Implementacja Wzorców Taktycznych - Building Blocks
    1. Encje
      1. Mapowanie ORM
      2. Klasy bazowe - wzorzec Layer Superclass
      3. Hermetyzacja
      4. Identyfikacja
    2. Agregaty
      1. Hermetyzacja i otwarcie na rozbudowę
      2. Wymuszanie określonej granicy agregatu
      3. Wstrzykiwanie zależności w Fabrykach
      4. Wyzwania ORM
          WersjonowaniePułapki Lazy LoadinguMapowanie kompozycji UML - unikanie tabel linkującychDobór odpowiedniego typu kolekcji: Set, Bag, ListKoszt (ilość operacji SQL) wykorzystania każdego z typów kolekcji
    3. Value objects
      1. Immutability
      2. Mapowanie ORM
    4. Serwisy Domenowe
      1. Zarządzanie przez IoC
    5. Repozytoria
      1. Wstrzykiwanie zależności
      2. Aspekty ORM
          Odczyt EAGER Agregatów o dobrze zaprojektowanej granicyKaskadowy zapis Agregatów o dobrze zaprojektowanej granicy3 podejścia do optymistycznego blokowaniaOdczyt agregatów: blokowanie READ w celu zabezpieczenia obiektów tworzonych na podstawie odczytywanych agregatówZapis agregatów: blokowanie WRITE korzenia agregaty w celi logicznej ochrony całego agregatu
      3. Izolacje transakcji
      4. Operacje na klasie bazowej agregatu
          WersjonowanieProblem identyfikacjiAudyty - wykorzystanie JPA: Callbacks i Listeners
    6. Fabryki
      1. Fabryki zarządzane przez IoC
      2. Wstrzykiwanie zależności do Agregatów
      3. Wsparcie dla testability
      4. Zarządzanie Couplingiem Agregatów
      5. Teoria Couplingu C3
          CallContainCreate
    7. Polityki (strategie)
      1. Dekorowanie
      2. Wstrzykiwanie polityk jako pluginów
    8. Zdarzenia biznesowe
      1. Podejście asynchroniczne
      2. Architektura pluginów
    9. Specyfikacje
      1. Modelowanie złożonych warunków biznesowych
      2. Filtrowanie danych w repozytoriach
      3. Dyskusja nad wydajnością
    10. Saga - model procesu biznesowego
      1. Projekt frameworka zarządzającego Sagą
      2. Pułapki techniczne
    11. Role Object
      1. Model ról - gdy system powinien zachowywać się (nie tylko wyglądać) inaczej w zależności od roli domenowej użytkownika
    12. Dodatkowe wzorce - rozszerzenia Building Blocks
      1. Dekoratory Polityk - Supple Design
      2. Agregat jako maszyna stanów
      3. Łańcuch odpowiedzialności
      4. Budowniczy
  4. Praktyczne aspekty implementacji projektów opartych o DDD (implementacja w wybranych technologiach: Seam, Spring, EJB)
    1. Building blocks – idea i implementacja w wybranych technologiach (Seam, Spring, EJB)
  5. Architektura Command-query Responsibility Segregation
    1. CqRS jako rozwinięcie architektury warstwowej
      1. Koncepcja intencjonalnego GUI
      2. Dwa stosy warstw
    2. Stos Write
      1. Zakres odpowiedzialności
      2. Modelowanie scenariuszy (orkiestracja obiektów domenowych)
      3. Aspekty techniczne (zależności, transakcje)
      4. Implementacje
          SerwisyCommand i CommandHandlerWykorzystanie noSQL - Bazy dokumentowe
    3. Stos Read
      1. Problemy z wydajnością klasycznych podejść
      2. Modelowanie kwerend
      3. Projektowanie modelu do odczytu
      4. Implementacja
          SQLWidoki zmaterializowaneOsobny modelUaktualnianie modelu do odczytunoSQL - bazy grafowe
    4. Event Sourcing
      1. Sekwencja zdarzeń jako model behawioralny
      2. Projekcje modelu behawioralnego na model do odczytu
      3. Pojęcie Eventual Consistency
      4. Implementacja Agregatów sterowanych zdarzeniami
  6. Testowanie automatyczne
    1. Strategia testowania - mapowanie piramidy testów na warstwy aplikacji
      1. UI - end-to-end systemowe
      2. Logika aplikacyjna - testowanie end-to-end komponentowe
      3. Logika domenowa - testowanie jednostkowe
          Testowanie niezmienników modelu
    2. Cel testowania
      1. Perfekcja i regresja - testy jednostkowe Building Blocks domenowych
      2. Akceptacje - testy API i UI
    3. Techniki
      1. Zaślepki
          Mock - metody typu commandStub - metody typu query
      2. Konstruktory Agregatów umożliwiające wprowadzenie ich w dowolny stan
      3. Fabryki Agregatów zwiększające testability
      4. Zarządzanie Couplingiem C3
    4. Wzorce
      1. Assembler - przygotowanie Agregatów
      2. Assert Object - hipotezy biznesowe Agregatów

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twój Warsztat.

Materiały związane z warsztatem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zapytaj o warsztat

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń