DDD to the Code

Umsetzung von Fachlichkeit nach DDD in Code

Dieses Training zeigt in zwei Tagen auf, wie Bounded Contexts aus DDD mit fachlichem Fokus konkret in Code umgesetzt werden können und wie die Ideen der Onion Architecture helfen, Fachlogik und Technologie gut voneinander zu trennen. Die Inhalte basieren auf Erfahrungen aus der echten Welt und werden mit viel Code veranschaulicht.

Der Ansatz von Domain-driven Design zur Zerlegung einer komplexen fachlichen Domäne in mehrere Bounded Contexts ist aktuell in aller Munde. Vorgehen wie z.B. Event Storming werden aktiv eingesetzt, um zu einer geeigneten Context Map zu gelangen. Doch wie lässt sich der fachliche Fokus auch bei der konkreten technischen Umsetzung solcher Bounded Contexts im Code beibehalten? Welche Herausforderungen gilt es dabei zu meistern und welche Entscheidungen muss ein Architekt bzw. Entwickler abwägen und letztlich treffen?

In diesem zweitägigen Training werden genau diese Fragen bei der Umsetzung von DDD-Konzepten in Code intensiv beleuchtet und besprochen. Dies erfolgt mit einem Mix aus Präsentation, Walkthrough durch Code und Diskussion direkt anhand eines lauffähigen Systems. Basierend auf der mehrjährigen Praxiserfahrung des Trainers aus unterschiedlichen Projekten werden u.a. folgende Themen behandelt:

  • Übersicht über die taktischen Muster von DDD
  • Bedeutung, Umsetzung und Verwendung von Stereotypen
  • Onion Architecture als Architekturansatz für die Umsetzung nach DDD
  • Umsetzen der Fachlichkeit ohne Framework-Abhängigkeit (“business logic first and only”)
  • Abbilden der taktischen Muster im Code
  • Erzeugen, Publizieren und Verarbeiten von Domain Events
  • Umgang mit Validierungslogik
  • Testen von fachlichem Code
  • Umsetzung von technischen Aspekten wie Persistenz, Transaktionen, etc. mit minimalem Einfluss auf den fachlichen Code
  • Möglichkeiten für die Persistierung von Aggregaten in Repositories
  • Ansätze für die Integration von mehreren Bounded Contexts
  • alternative Architekturansätze und Gründe für deren Einsatz

Jeder Aspekt wird dabei anhand geeigneter Use Cases im Code dargestellt und diskutiert. Als Beispiel dient dabei ein nicht-trivialer Ausschnitt aus der Shared-Mobility-Domäne, implementiert in Java, Kotlin und Spring. Grundlegende Kenntnisse dieser Sprachen bzw. Technologien sind Voraussetzung.

Das Training kann auf Deutsch oder Englisch durchgeführt werden. Nach Absprache können die Schwerpunkte des Trainings gemäss der konkreten Problemstellung des Kunden angepasst werden.