Koncepcja Domain-Driven Design

Book description

Domain-driven design, czyli projektowanie dziedzinowe, w skrócie DDD, jest zbiorem praktyk tworzenia architektury oprogramowania z uwzględnieniem dziedziny biznesu i jej problemów. W ten sposób logika biznesowa staje się sercem aplikacji. Wielu architektów jednak nie radzi sobie ze złożonością tworzonego oprogramowania. Nauczenie się zasad i wzorców DDD, przyswojenie technik dekompozycji dużego systemu, modelowania i projektowania integracji komponentów jest sposobem na zbudowanie systemu w pełni zgodnego z potrzebami i celami biznesowymi.

Ta książka zawiera opis podstawowych wzorców, zasad i praktyk przydatnych podczas analizy dziedzin biznesowych, ułatwiających zrozumienie ich strategii i dostosowanie architektury do potrzeb biznesu, aby umożliwić zbudowanie solidnej implementacji logiki biznesowej. Omówiono tu narzędzia i techniki podejmowania decyzji projektowych, a także istotniejsze wzorce projektowe. Dużo uwagi poświęcono kodowi i różnym sposobom implementacji logiki biznesowej systemu. Opisano również techniki i strategie stosowania DDD w rzeczywistych projektach. Ciekawym elementem jest zaprezentowanie związków projektowania dziedzinowego z innymi ważnymi metodologiami i wzorcami.\

W książce między innymi:

analiza dziedziny biznesowej firmy w kontekście architektury systemu
strategiczne i taktyczne narzędzia DDD
budowa wspólnego rozumienia dziedzin biznesowych
dekompozycja systemu na konteksty ograniczone
koordynacja pracy wielu zespołów
stopniowe wdrażanie technik DDD do projektów typu brownfield

DDD: praktyczny sposób na rozwiązanie problemów biznesowych!

Table of contents

  1. Opinie o książce Koncepcja Domain-Driven Design
  2. Słowo wstępne
  3. Przedmowa
    1. Dlaczego napisałem tę książkę?
    2. Kto powinien przeczytać tę książkę?
    3. Poruszanie się po książce
    4. Przykładowa Dziedzina: WolfDesk
      1. Konwencje stosowane w tej książce
    5. Korzystanie z przykładów kodu
    6. Podziękowania
  4. Wprowadzenie
  5. Część I Projektowanie strategiczne
  6. Rozdział 1. Analiza Dziedzin Biznesowych
    1. Co to jest Dziedzina Biznesowa?
    2. Co to jest Poddziedzina?
      1. Typy Poddziedzin
        1. Poddziedziny Podstawowe
        2. Poddziedziny Ogólne
        3. Poddziedziny Pomocnicze
      2. Porównywanie Poddziedzin
        1. Przewaga konkurencyjna
        2. Złożoność
        3. Zmienność
        4. Strategia rozwiązania
      3. Identyfikowanie granic Poddziedzin
        1. Poddziedziny Destylacyjne
        2. Poddziedziny jako spójne przypadki użycia
        3. Skoncentruj się na tym, co najważniejsze
    3. Przykłady analizy Dziedziny
      1. Gigmaster
        1. Dziedziny i Poddziedziny firmy
        2. Decyzje projektowe
      2. BusVNext
        1. Dziedziny i Poddziedziny firmy
        2. Decyzje projektowe
    4. Kim są eksperci dziedzinowi?
    5. Podsumowanie
    6. Ćwiczenia
  7. Rozdział 2. Odkrywanie wiedzy dziedzinowej
    1. Problemy biznesowe
    2. Odkrywanie wiedzy
    3. Komunikacja
    4. Co to jest Język Wszechobecny?
    5. Język biznesu
      1. Scenariusze
      2. Spójność
        1. Niejednoznaczne terminy
        2. Terminy synonimiczne
    6. Model Dziedziny Biznesowej
      1. Co to jest „model”?
      2. Skuteczne modelowanie
      3. Modelowanie Dziedziny Biznesowej
      4. Ciągły wysiłek
      5. Narzędzia
      6. Wyzwania
    7. Podsumowanie
    8. Ćwiczenia
  8. Rozdział 3. Zarządzanie złożonością Dziedziny
    1. Niespójne modele
    2. Co to jest Kontekst Ograniczony?
      1. Granice modelu
      2. Język Wszechobecny dokładniej
      3. Zakres Kontekstu Ograniczonego
    3. Konteksty Ograniczone a Poddziedziny
      1. Poddziedziny
      2. Konteksty Ograniczone
      3. Wzajemne oddziaływanie między Poddziedzinami a Kontekstami Ograniczonymi
    4. Granice
      1. Granice fizyczne
      2. Granice własności
    5. Konteksty Ograniczone w prawdziwym życiu
      1. Dziedziny semantyczne
      2. Nauka
      3. Kupowanie lodówki
    6. Podsumowanie
    7. Ćwiczenia
  9. Rozdział 4. Integracja Kontekstów Ograniczonych
    1. Kooperacja
      1. Partnerstwo
      2. Wspólne Jądro
        1. Wspólny zakres
        2. Implementacja
        3. Kiedy należy korzystać ze Wspólnego Jądra?
    2. Klient-Dostawca
      1. Konformista
      2. Warstwa Antykorupcyjna
      3. Usługa Otwartego Hosta
    3. Różne Drogi
      1. Problemy z komunikacją
      2. Poddziedziny Ogólne
      3. Różnice w modelach
    4. Mapa Kontekstu
      1. Utrzymanie
      2. Ograniczenia
    5. Podsumowanie
    6. Ćwiczenia
  10. Część II Projektowanie taktyczne
  11. Rozdział 5. Implementacja prostej Logiki Biznesowej
    1. Skrypt Transakcji
      1. Implementacja
      2. To nie jest takie proste!
        1. Brak zachowania transakcyjnego
        2. Transakcje rozproszone
        3. Niejawne transakcje rozproszone
      3. Kiedy używać Skryptu Transakcji
    2. Aktywny Rekord
      1. Implementacja
      2. Kiedy używać wzorca Aktywny Rekord
    3. Bądź pragmatyczny
    4. Podsumowanie
    5. Ćwiczenia
  12. Rozdział 6. Rozwiązywanie problemów ze złożoną Logiką Biznesową
    1. Historia
    2. Model Dziedziny
      1. Implementacja
        1. Złożoność
        2. Język Wszechobecny
      2. Bloki konstrukcyjne
        1. Obiekt Wartości
        2. Encje
        3. Agregaty
        4. Usługi Dziedziny
      3. Zarządzanie złożonością
    3. Podsumowanie
    4. Ćwiczenia
  13. Rozdział 7. Modelowanie wymiaru czasu
    1. Event Sourcing
      1. Wyszukiwanie
      2. Analiza
      3. Źródło prawdy
      4. Magazyn zdarzeń
    2. Model Dziedziny ze źródłem w postaci zdarzeń
      1. Zalety
      2. Wady
    3. Często zadawane pytania
      1. Wydajność
      2. Usuwanie danych
      3. Dlaczego nie mogę po prostu...?
    4. Podsumowanie
    5. Ćwiczenia
  14. Rozdział 8. Wzorce architektoniczne
    1. Logika Biznesowa a wzorce architektoniczne
    2. Architektura Warstwowa
      1. Warstwa Prezentacji
      2. Warstwa Logiki Biznesowej
      3. Warstwa Dostępu Do Danych
      4. Komunikacja między warstwami
      5. Odmiany
        1. Warstwa Usług
        2. Terminologia
      6. Kiedy używać Architektury Warstwowej?
    3. Porty i Adaptery
      1. Terminologia
      2. Zasada inwersji zależności
      3. Integracja komponentów infrastrukturalnych
      4. Odmiany
      5. Kiedy używać wzorca Porty i Adaptery?
    4. Segregacja Odpowiedzialności za Polecenia i Zapytania
      1. Modelowanie poliglotyczne
      2. Implementacja
        1. Model Wykonywania Poleceń
        2. Modele Odczytu (projekcji)
      3. Projekcje Modeli Odczytu
        1. Projekcje synchroniczne
        2. Projekcje asynchroniczne
      4. Wyzwania
      5. Segregacja modeli
      6. Kiedy używać CQRS?
    5. Zakres
    6. Podsumowanie
    7. Ćwiczenia
  15. Rozdział 9. Wzorce komunikacji
    1. Tłumaczenie modelu
      1. Bezstanowe tłumaczenie modelu
        1. Komunikacja synchroniczna
        2. Komunikacja asynchroniczna
      2. Stanowe tłumaczenie modelu
        1. Agregowanie danych przychodzących
        2. Ujednolicanie wielu źródeł
    2. Integracja Agregatów
      1. Skrzynka Nadawcza
        1. Pobieranie nieopublikowanych zdarzeń
      2. Saga
        1. Spójność
      3. Menedżer Procesu
    3. Podsumowanie
    4. Ćwiczenia
  16. Część III Zastosowanie DDD w praktyce
  17. Rozdział 10. Heurystyki projektowe
    1. Heurystyka
    2. Konteksty Ograniczone
    3. Wzorce implementacji Logiki Biznesowej
    4. Wzorce architektoniczne
    5. Strategia testowania
      1. Piramida Testowania
      2. Romb Testowania
      3. Odwrócona Piramida Testowania
    6. Drzewo decyzyjne projektu taktycznego
    7. Podsumowanie
    8. Ćwiczenia
  18. Rozdział 11. Zmieniające się decyzje projektowe
    1. Zmiany w Dziedzinach
      1. Podstawowa na Ogólną
      2. Ogólna na Podstawową
      3. Pomocnicza na Ogólną
      4. Pomocnicza na Podstawową
      5. Podstawowa na Pomocniczą
      6. Ogólna na Pomocniczą
    2. Problemy projektu strategicznego
    3. Problemy projektu taktycznego
      1. Skrypt Transakcji na Aktywny Rekord
      2. Aktywny Rekord na Model Dziedziny
      3. Model Dziedziny na Model Dziedziny ze źródłem w postaci zdarzeń
      4. Generowanie przeszłych przejść
      5. Modelowanie zdarzeń migracji
    4. Zmiany organizacyjne
      1. Partnerstwo na Klient-Dostawca
      2. Klient-Dostawca na Różne Drogi
    5. Wiedza dziedzinowa
    6. Rozwój
      1. Poddziedziny
      2. Konteksty Ograniczone
      3. Agregaty
    7. Podsumowanie
    8. Ćwiczenia
  19. Rozdział 12. EventStorming
    1. Co to jest EventStorming?
    2. Kto powinien wziąć udział w warsztatach EventStorming?
    3. Czego potrzebujesz do zorganizowania sesji EventStorming?
    4. Przebieg warsztatów EventStorming
      1. Krok 1. Nieustrukturyzowana eksploracja
      2. Krok 2. Osie czasu
      3. Krok 3. Możliwe problemy
      4. Krok 4. Kluczowe zdarzenia
      5. Krok 5. Polecenia
      6. Krok 6. Reguły
      7. Krok 7. Modele Odczytu
      8. Krok 8. Systemy zewnętrzne
      9. Krok 9. Agregaty
      10. Krok 10. Konteksty Ograniczone
    5. Odmiany
    6. Kiedy korzystać z warsztatów EventStorming?
    7. Wskazówki dotyczące facylitacji
      1. Obserwuj dynamikę
      2. Zdalne sesje EventStorming
    8. Podsumowanie
    9. Ćwiczenia
  20. Rozdział 13. Projekt oparty na Dziedzinie w praktyce
    1. Analiza strategiczna
      1. Opis Dziedziny Biznesowej
        1. Poddziedziny Podstawowe
        2. Poddziedziny Ogólne
        3. Poddziedziny Pomocnicze
      2. Poznaj aktualny projekt
        1. Oceń projekt taktyczny
        2. Oceń projekt strategiczny
    2. Strategia modernizacji
      1. Modernizacja strategiczna
      2. Modernizacja taktyczna
      3. Pielęgnuj Język Wszechobecny
        1. Wzorzec Figowiec Dusiciel
        2. Refaktoryzacja taktycznych decyzji projektowych
    3. Praktyczny projekt DDD
    4. Promowanie projektu DDD
      1. Ujawnij metodologię DDD
        1. Język Wszechobecny
        2. Konteksty Ograniczone
        3. Taktyczne decyzje projektowe
        4. Model Dziedziny ze źródłem w postaci zdarzeń
    5. Podsumowanie
    6. Ćwiczenia
  21. Część IV Związki z innymi metodologiami i wzorcami
  22. Rozdział 14. Mikrousługi
    1. Co to jest usługa?
    2. Co to jest „mikrousługa”?
      1. Metoda jako usługa: czy to doskonałe mikrousługi?
      2. Cel projektu
      3. Złożoność systemu
      4. Mikrousługi jako usługi głębokie
      5. Mikrousługi jako moduły głębokie
    3. Projektowanie DDD a granice mikrousług
      1. Konteksty Ograniczone
      2. Agregaty
      3. Poddziedziny
    4. Kompresowanie publicznych interfejsów mikrousług
      1. Usługa Otwartego Hosta
      2. Warstwa Antykorupcyjna
    5. Podsumowanie
    6. Ćwiczenia
  23. Rozdział 15. Architektura sterowana zdarzeniami
    1. Architektura sterowana zdarzeniami
    2. Zdarzenia
      1. Zdarzenia, Polecenia i Komunikaty
      2. Struktura
      3. Rodzaje zdarzeń
        1. Powiadomienie o zdarzeniu
        2. Zdarzenia przenoszące stan
        3. Zdarzenie Dziedziny
        4. Zdarzenia Dziedziny a Powiadomienia o Zdarzeniach
        5. Zdarzenia Dziedziny a zdarzenia przenoszące stan
        6. Typy zdarzeń: przykład
    3. Projektowanie integracji sterowanej zdarzeniami
      1. Rozproszona Wielka Kula Błota
      2. Sprzężenie czasowe
      3. Sprzężenie funkcjonalne
      4. Sprzężenie implementacji
      5. Refaktoryzacja kodu integracji sterowanej zdarzeniami
      6. Heurystyka projektu sterowanego zdarzeniami
        1. Załóż najgorszy scenariusz
        2. Wykorzystuj zdarzenia publiczne i prywatne
        3. Ocena wymagań dotyczących spójności
    4. Podsumowanie
    5. Ćwiczenia
  24. Rozdział 16. Siatka danych
    1. Analityczny model danych a transakcyjny model danych
      1. Tabela faktów
      2. Tabela wymiarów
      3. Modele analityczne
    2. Platformy zarządzania danymi analitycznymi
      1. Hurtownia danych
      2. Jezioro danych
      3. Wyzwania związane z architekturami hurtowni danych i jeziora danych
    3. Siatka danych
      1. Dekompozycja danych wokół Dziedzin
      2. Dane jako produkt
      3. Zadbaj o autonomię
      4. Zbuduj ekosystem
      5. Łączenie siatki danych z projektowaniem DDD
    4. Podsumowanie
    5. Ćwiczenia
  25. Posłowie
    1. Problem
    2. Rozwiązanie
    3. Implementacja
    4. Dalsza lektura
      1. DDD dla zaawansowanych
      2. Wzorce architektoniczne i integracyjne
      3. Modernizacja systemów odziedziczonych
      4. EventStorming
    5. Podsumowanie
  26. Dodatek A Zastosowanie DDD: studium przypadku
    1. Pięć Kontekstów Ograniczonych
      1. Dziedzina Biznesowa
      2. Kontekst Ograniczony numer 1: Marketing
        1. To jakaś magia!
        2. Wczesna wizja projektu opartego na Dziedzinie
      3. Kontekst Ograniczony numer 2: CRM
        1. Więcej „Agregatów”!
        2. Projekt rozwiązania: podejście numer dwa
        3. Wieża Babel 2.0
        4. Szersze zrozumienie projektowania opartego na Dziedzinie
      4. Kontekst Ograniczony numer 3: Żonglery Zdarzeń
      5. Kontekst Ograniczony numer 4: Prowizje
        1. Projekt: podejście drugie
        2. Język Wszechobecny
        3. Klasyczne rozumienie projektowania opartego na Dziedzinie
      6. Kontekst Ograniczony numer 5: Centrum Marketingowe
        1. Mikro co?
        2. Prawdziwy problem
    2. Wnioski
      1. Język Wszechobecny
      2. Poddziedziny
        1. Mapowanie decyzji projektowych na Poddziedziny
        2. Nie ignoruj problemów
      3. Granice Kontekstów Ograniczonych
    3. Podsumowanie
  27. Dodatek B Odpowiedzi na pytania
    1. Rozdział 1.
    2. Rozdział 2.
    3. Rozdział 3.
    4. Rozdział 4.
    5. Rozdział 5.
    6. Rozdział 6.
    7. Rozdział 7.
    8. Rozdział 8.
    9. Rozdział 9.
    10. Rozdział 10.
    11. Rozdział 11.
    12. Rozdział 12.
    13. Rozdział 13.
    14. Rozdział 14.
    15. Rozdział 15.
    16. Rozdział 16.
  28. Bibliografia
    1. O autorze
    2. Kolofon

Product information

  • Title: Koncepcja Domain-Driven Design
  • Author(s): Vlad Khononov
  • Release date: August 2022
  • Publisher(s): Helion
  • ISBN: 9788328392632