Architekturvergleich

Modulgrenzen und Abhängigkeiten

Technische Schichten, testgetriebene Slices und Bounded Contexts.

Java 21LayeredTDD-FirstDDD

Modulgrenzen und Abhängigkeitsrichtung

Layered

Die sieben Module folgen technischen Verantwortungen: Domain, Application, Persistence, Integration, REST, Bootstrap und Architecture Tests. Der zentrale Vorteil ist eine sofort erkennbare Aufrufrichtung. Der zentrale Risikopunkt ist, dass fachlich unabhängige Bereiche über gemeinsame Application Services oder ein gemeinsames Datenmodell gekoppelt werden.

REST ──> Application ──> Domain
               ^
Persistence ───┘
Integration ───┘
Bootstrap komponiert alle Adapter

TDD-First

Die drei Module bündeln Walking Skeleton, technische Adapter und Qualität. Innerhalb des Walking Skeletons liegen vertikale fachliche Slices und Ports. Die Modulzahl ist klein, während die Zahl der schmalen Klassen hoch ist. Die Grenzen entstanden nicht zuerst als Organigramm, sondern wurden nach wiederkehrenden Test- und Refactoring-Signalen herausgearbeitet.

Acceptance Test ──> Use Case ──> Port
                         ^          |
HTTP Handler ────────────┘          └── Adapter

DDD

Dreizehn Module bilden Value Objects, Aggregate, drei Domain- und drei Application-Bereiche, Integrationsverträge, Adapter, Workflow und Kontexttests ab. Die Abhängigkeitsrichtung ist pro Bounded Context lokal. Kontextübergreifende Zusammenarbeit erfolgt über veröffentlichte Verträge und einen Process Manager.

Ordering Application ──> Ordering Domain
Inventory Application ─> Inventory Domain
Payment Application ───> Payment Domain
           |
           └── Published Language / Outbox / Process Manager

Vergleich

Kriterium Layered TDD-First DDD
primäre Grenze technische Schicht testgetriebener Slice und Port Bounded Context und Aggregate
kleinste Änderungseinheit Service plus Adapter Use Case Slice fachliche Fähigkeit im Context
Datenhoheit häufig zentral je Port pragmatisch explizit je Context
verbotene Kopplung äußere zu falscher Schicht Test-/Adapterdetails zum Kern direkte Context-zu-Context-Modellkopplung
typische Gefahr horizontale Änderung durch viele Schichten zu viele schmale Typen oder testgetriebene Lokallösung hohe Modellierungs- und Integrationskosten

Bewertung

Layered besitzt die geringste Einstiegshürde. TDD-First reduziert Änderungsangst und lässt Grenzen aus Verhalten entstehen. DDD liefert die stärksten fachlichen Ownership-Grenzen, verlangt aber konsequente Sprache, Integration und Governance.

Darstellung

Design
Text
Dichte
⌂ Cockpit