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 dni
Grupa docelowa: architekci
developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

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

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  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
        1. Moduły - budowanie
        2. Pakiety/namespaces
      2. Warstwa prezentacji
        1. Ochrona domeny przed wyciekaniem do UI
      3. Logika aplikacyjna
        1. Projektowanie API systemu
        2. Problem uczciwego API - wersjonowanie obiektów
      4. Logika domenowa (Building Blocks DDD)
        1. Widoczność klas - wykorzystanie zasięgu pakietowego
      5. Warstwa infrastruktury
        1. Wyzwania ORM
        2. Puł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
        1. Wersjonowanie
        2. Pułapki Lazy Loadingu
        3. Mapowanie kompozycji UML - unikanie tabel linkujących
        4. Dobór odpowiedniego typu kolekcji: Set, Bag, List
        5. Koszt (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
        1. Odczyt EAGER Agregatów o dobrze zaprojektowanej granicy
        2. Kaskadowy zapis Agregatów o dobrze zaprojektowanej granicy
        3. 3 podejścia do optymistycznego blokowania
        4. Odczyt agregatów: blokowanie READ w celu zabezpieczenia obiektów tworzonych na podstawie odczytywanych agregatów
        5. Zapis agregatów: blokowanie WRITE korzenia agregaty w celi logicznej ochrony całego agregatu
      3. Izolacje transakcji
      4. Operacje na klasie bazowej agregatu
        1. Wersjonowanie
        2. Problem identyfikacji
        3. Audyty - 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
        1. Call
        2. Contain
        3. Create
    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)
    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
        1. Serwisy
        2. Command i CommandHandler
        3. Wykorzystanie noSQL - Bazy dokumentowe
    3. Stos Read
      1. Problemy z wydajnością klasycznych podejść
      2. Modelowanie kwerend
      3. Projektowanie modelu do odczytu
      4. Implementacja
        1. SQL
        2. Widoki zmaterializowane
        3. Osobny model
        4. Uaktualnianie modelu do odczytu
        5. noSQL - 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
        1. 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
        1. Mock - metody typu command
        2. Stub - 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


Pobierz program w formacie PDF

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ń