39
DOMAIN DRIVEN DESIGN & HEXAGONALE ARCHITEKTUR von Torben Fojuth / @Final_guy in Bremen Baue seit 10 Jahren Web-Anwendungen Schwerpunkte: Architektur, Coding Dojo, Clean Code Devloper Neuland, Büro für Informatik

DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

DOMAIN DRIVEN DESIGN&

HEXAGONALE ARCHITEKTURvon Torben Fojuth / @Final_guy

in BremenBaue seit 10 Jahren Web-AnwendungenSchwerpunkte: Architektur, Coding Dojo, Clean Code Devloper

Neuland, Büro für Informatik

Page 2: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

TEIL 1: THESE“Die Kombination von DDD und Hexagonaler

Architektur bietet EntwicklInnen klareAntworten auf die zentrale Fragen ihres

alltäglichen Handwerks. ”

Page 4: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

WOHIN GEHÖRT DAS FEATURE?

Page 5: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

BEISPIEL: MAXIMALE BESTELLSUMME?

Page 6: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

TEIL 2: DOMAIN DRIVEN DESIGN

Page 9: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

BEGRIFFE1. Ubiquitous Language2. Bounded Context3. Entity/Aggregate & Value Object

Page 10: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres
Page 11: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres
Page 12: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres
Page 14: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

UBIQUITOUS LANGUAGE

Page 16: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

EntityValueObject

RepositoryApplicationService

Page 17: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

ENTITYRepräsentiert ein identifizierbares "Ding"Kapselt GeschäftslogikHat einen Lebenszyklus / HistorieIst von der Datenhaltung abstrahiertGleichheit basiert auf ID

Page 18: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

VALUE OBJECTRepräsentiert Eigenschaft (eines Entities)Kapselt GeschäftslogikBekannte Beispiele: Money/Price & QuantityUnveränderlich implementiertGleichheit basiert auf der Gleichheit aller Eigenschaften

Page 19: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

AGGREGATESpezialform eines EntitiesIst Wurzel eines Objektbaumes

Page 20: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

APPLICATION SERVICERepräsentiert einen UseCase der DomäneOrchestriert was zu tun ist

Page 21: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

REPOSITORYBietet Zugriff auf EntitiesVerhält sich wie Collection

Page 22: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

TEIL 3: HEXAGONALE ARCHITEKTUR

Page 23: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

ZIELSETZUNG“Allow an application to equally be driven by

users, programs, automated test or batchscripts, and to be developed and tested in

isolation from its eventual run-time devicesand databases.”

Alistair Cockburn, 2005

Page 24: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

URSPRUNG

Page 25: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

S.O.L.I.D.Dependency Inversion Principle

Page 26: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

DEPENDENCY INVERSION

Page 27: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

HEXAGON

Page 28: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

PAKETSTRUKTUR

Page 29: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

TEIL 4: NUTZEN FÜR ENTWICKLER

Page 30: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

WO ÄNDERE/ERSTELLE ICH EINEN USECASE?

Page 31: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

WO ÄNDERE/ERSTELLE ICH GESCHÄFTSLOGIK?

Page 32: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

WIE GREIFE ICH AUF EXTERNE SYSTEME ZU?

Page 33: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

WO BEGINNT/ENDET EINE TRANSAKTION?

Page 34: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

SIND MEINE ABHÄNGIGKEITEN KORREKT?

Page 35: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

WO ERMÖGLICHE ICH ZUGRIFF AUF MEINSYSTEM?

Page 36: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

BOUNDED CONTEXT ZU UBIQUITOUS LANGUAGE

Page 38: DOMAIN DRIVEN DESIGN HEXAGONALE ARCHITEKTUR · TEIL 1: THESE “Die Kombination von DDD und Hexagonaler Architektur bietet EntwicklInnen klare Antworten auf die zentrale Fragen ihres

HALDE