Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Cover
Über dieses Buch
Titel
Impressum
Inhalt
Grußwort
Vorwort
Einleitung
Teil I Strategisches Design
1 Fachdomänen analysieren
Was ist eine Fachdomäne?
Was ist eine Subdomain?
Arten von Subdomains
Subdomains vergleichen
Grenzen von Subdomains ermitteln
Beispiele für eine Analyse der Fachdomäne
Gigmaster
BusVNext
Wer sind die Domänenexperten?
Zusammenfassung
Übungen
2 Domänenwissen ermitteln
Fachliche Probleme
Erlernen von Fachwissen
Kommunikation
Was ist eine Ubiquitous Language?
Sprache der Domänenexperten
Szenarien
Konsistenz
Modell der Fachdomäne
Was ist ein Modell?
Effektives Modellieren
Die Fachdomäne modellieren
Kontinuierliche Arbeit
Werkzeuge
Herausforderungen
Zusammenfassung
Übungen
3 Die Komplexität einer Domain im Griff behalten
Inkonsistente Modelle
Was ist ein Bounded Context?
Modellgrenzen
Verbesserte Ubiquitous Language
Gültigkeitsbereich eines Bounded Context
Bounded Contexts versus Subdomains
Subdomains
Bounded Contexts
Die Verbindung zwischen Subdomains und Bounded Contexts
Grenzen
Physische Grenzen
Zuständigkeitsgrenzen
Bounded Contexts in der Realität
Semantic Domains
Wissenschaft
Einen Kühlschrank kaufen
Zusammenfassung
Übungen
4 Bounded Contexts integrieren
Kooperation
Partnership
Shared Kernel
Customer/Supplier
Conformist
Anticorruption Layer
Open-Host Service
Separate Ways
Kommunikationsprobleme
Generic Subdomains
Modellunterschiede
Context Map
Wartung
Einschränkungen
Zusammenfassung
Übungen
Teil II Taktisches Design
5 Einfache Business-Logik implementieren
Transaction Script
Implementierung
So einfach ist es nicht!
Wann man ein Transaction Script verwendet
Active Record
Implementierung
Wann sollte Active Record genutzt werden?
Seien Sie pragmatisch
Zusammenfassung
Übungen
6 Komplexe Business-Logik angehen
Geschichte
Domain Model
Implementierung
Bausteine
Komplexität managen
Zusammenfassung
Übungen
7 Die zeitliche Dimension modellieren
Event Sourcing
Suche
Analyse
Source of Truth
Event Store
Event-Sourced Domain Model
Vorteile
Nachteile
Häufige Fragen
Performance
Daten löschen
Warum kann ich nicht einfach …?
Zusammenfassung
Übungen
8 Architektur-Patterns
Business-Logik versus Architektur-Patterns
Schichtenarchitektur
Presentation Layer
Business Logic Layer
Data Access Layer
Kommunikation zwischen den Schichten
Variation
Wann Schichtenarchitektur genutzt werden sollte
Ports & Adapters
Terminologie
Dependency Inversion Principle
Integration von Infrastrukturkomponenten
Varianten
Wann man Ports & Adapters verwendet
Command-Query Responsibility Segregation
Polyglot Modeling
Implementierung
Read Models projizieren
Herausforderungen
Model Segregation
Wann CQRS verwendet wird
Scope
Zusammenfassung
Übungen
9 Kommunikations-Patterns
Model Translation
Stateless Model Translation
Stateful Model Translation
Aggregates integrieren
Outbox
Saga
Process Manager
Zusammenfassung
Übungen
Teil III Domain-Driven Design in der Praxis umsetzen
10 Designheuristiken
Heuristik
Bounded Contexts
Implementierungs-Patterns für Business-Logik
Architektur-Patterns
Teststrategie
Testpyramide
Testdiamant
Umgekehrte Testpyramide
Entscheidungsbaum für taktisches Design
Zusammenfassung
Übungen
11 Evolution von Designentscheidungen
Änderungen an Domains
Core nach Generic
Generic nach Core
Supporting nach Generic
Supporting nach Core
Core nach Supporting
Generic nach Supporting
Strategische Designaspekte
Taktische Designaspekte
Transaction Script nach Active Record
Active Record nach Domain Model
Domain Model nach Event-Sourced Domain Model
Alte Übergänge generieren
Migrationsevents modellieren
Organisationsänderungen
Partnership nach Customer/Supplier
Customer/Supplier nach Separate Ways
Domänenwissen
Wachstum
Subdomains
Bounded Contexts
Aggregates
Zusammenfassung
Übungen
12 EventStorming
Was ist EventStorming?
Wer sollte am EventStorming teilnehmen?
Was brauchen Sie zum EventStorming?
Der EventStorming-Prozess
Schritt 1: Unstrukturiertes Erforschen
Schritt 2: Zeitachsen
Schritt 3: Pain Points
Schritt 4: Pivotal Events
Schritt 5: Commands
Schritt 6: Policies
Schritt 7: Read Models
Schritt 8: Externe Systeme
Schritt 9: Aggregates
Schritt 10: Bounded Contexts
Varianten
Wann Sie EventStorming einsetzen
Tipps für das EventStorming
Achten Sie auf die Dynamik
Remote EventStorming
Zusammenfassung
Übungen
13 Domain-Driven Design in der Praxis
Strategische Analyse
Die Fachdomäne verstehen
Das aktuelle Design untersuchen
Modernisierungsstrategie
Strategisches Modernisieren
Taktisches Modernisieren
Eine Ubiquitous Language kultivieren
Pragmatisches Domain-Driven Design
Domain-Driven Design schmackhaft machen
Undercover Domain-Driven Design
Zusammenfassung
Übungen
Teil IV DDD und andere Methodiken und Patterns
14 Microservices
Was ist ein Service?
Was ist ein Microservice?
Method as a Service: Perfekte Microservices?
Designziel
Systemkomplexität
Microservices als tiefe Services
Microservices als tiefe Module
Domain-Driven Design und die Grenzen von Microservices
Bounded Contexts
Aggregates
Subdomains
Die öffentlichen Schnittstellen von Microservices komprimieren
Open-Host Service
Anticorruption Layer
Zusammenfassung
Übungen
15 Event-Driven Architecture
Event-Driven Architecture
Events
Events, Commands und Messages
Struktur
Event-Typen
Design einer Event-gesteuerte Integration
Verteilter Big Ball of Mud
Zeitliche Kopplung
Funktionelle Kopplung
Implementierungskopplung
Die Event-gesteuerte Integration refaktorieren
Event-gesteuerte Designheuristiken
Zusammenfassung
Übungen
16 Data Mesh
Analytisches Datenmodell versus transaktionales Datenmodell
Fact-Tabelle
Dimension-Tabelle
Analytische Modelle
Plattformen zum Managen analytischer Daten
Data Warehouse
Data Lake
Herausforderungen von Data Warehouse und Data Lake Architectures
Data Mesh
Daten anhand von Domains unterteilen
Daten als Produkt
Autonomie ermöglichen
Ein Ökosystem schaffen
Data Mesh und Domain-Driven Design kombinieren
Zusammenfassung
Übungen
Abschließende Worte
Anhang A DDD anwenden: eine Fallstudie
Anhang B Antworten auf die Übungsfragen
Literatur
Fußnoten
Index
Über den Autor
Kolophon
← Prev
Back
Next →
← Prev
Back
Next →