SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
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
TEIL 1: THESE
“Die Kombination von DDD und Hexagonaler
Architektur bietet EntwicklInnen klare
Antworten auf die zentrale Fragen ihres
alltäglichen Handwerks. ”
WAS IST PASSIERT?
WOHIN GEHÖRT DAS FEATURE?
BEISPIEL: MAXIMALE BESTELLSUMME?
TEIL 2: DOMAIN DRIVEN DESIGN
BEGRIFFE
1. Ubiquitous Language
2. Bounded Context
3. Entity/Aggregate & Value Object
ERKENNTNIS
UBIQUITOUS LANGUAGE
BOUNDED CONTEXT
Entity
ValueObject
Repository
ApplicationService
ENTITY
Repräsentiert ein identifizierbares "Ding"
Kapselt Geschäftslogik
Hat einen Lebenszyklus / Historie
Ist von der Datenhaltung abstrahiert
Gleichheit basiert auf ID
VALUE OBJECT
Repräsentiert Eigenschaft (eines Entities)
Kapselt Geschäftslogik
Bekannte Beispiele: Money/Price & Quantity
Unveränderlich implementiert
Gleichheit basiert auf der Gleichheit aller Eigenschaften
AGGREGATE
Spezialform eines Entities
Ist Wurzel eines Objektbaumes
APPLICATION SERVICE
Repräsentiert einen UseCase der Domäne
Orchestriert was zu tun ist
REPOSITORY
Bietet Zugriff auf Entities
Verhält sich wie Collection
TEIL 3: HEXAGONALE ARCHITEKTUR
ZIELSETZUNG
“Allow an application to equally be driven by
users, programs, automated test or batch
scripts, and to be developed and tested in
isolation from its eventual run-time devices
and databases.”
Alistair Cockburn, 2005
URSPRUNG
S.O.L.I.D.
Dependency Inversion Principle
DEPENDENCY INVERSION
HEXAGON
PAKETSTRUKTUR
TEIL 4: NUTZEN FÜR ENTWICKLER
WO ÄNDERE/ERSTELLE ICH EINEN USECASE?
WO ÄNDERE/ERSTELLE ICH GESCHÄFTSLOGIK?
WIE GREIFE ICH AUF EXTERNE SYSTEME ZU?
WO BEGINNT/ENDET EINE TRANSAKTION?
SIND MEINE ABHÄNGIGKEITEN KORREKT?
WO ERMÖGLICHE ICH ZUGRIFF AUF MEIN
SYSTEM?
BOUNDED CONTEXT ZU UBIQUITOUS LANGUAGE
DANKE
... FRAGEN?
HALDE
KOMPLEXITÄT

Mais conteúdo relacionado

Mais procurados

Implementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with SpringImplementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with SpringVMware Tanzu
 
Testando API REST - Parte 1
Testando API REST - Parte 1Testando API REST - Parte 1
Testando API REST - Parte 1alinebiath
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with JenkinsMartin Málek
 
Kubermatic CNCF Webinar - start.kubermatic.pdf
Kubermatic CNCF Webinar - start.kubermatic.pdfKubermatic CNCF Webinar - start.kubermatic.pdf
Kubermatic CNCF Webinar - start.kubermatic.pdfLibbySchulze
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipsterJulien Dubois
 
Unit Testing in Angular
Unit Testing in AngularUnit Testing in Angular
Unit Testing in AngularKnoldus Inc.
 
Test Automation Architecture
Test Automation ArchitectureTest Automation Architecture
Test Automation ArchitectureApplitools
 
Chicago alm user group tfs version control poster - tfvc and git
Chicago alm user group   tfs version control poster - tfvc and gitChicago alm user group   tfs version control poster - tfvc and git
Chicago alm user group tfs version control poster - tfvc and gitDave Burnison
 
Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)Akash Agrawal
 
GitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect CombinationGitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect CombinationWill Hall
 
GitOps Toolkit (Cloud Native Nordics Tech Talk)
GitOps Toolkit (Cloud Native Nordics Tech Talk)GitOps Toolkit (Cloud Native Nordics Tech Talk)
GitOps Toolkit (Cloud Native Nordics Tech Talk)Weaveworks
 
Gitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsGitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsMariano Cunietti
 
Grafana optimization for Prometheus
Grafana optimization for PrometheusGrafana optimization for Prometheus
Grafana optimization for PrometheusMitsuhiro Tanda
 
From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0VMware Tanzu
 
A Non-Standard use Case of Hadoop: High Scale Image Processing and Analytics
A Non-Standard use Case of Hadoop: High Scale Image Processing and AnalyticsA Non-Standard use Case of Hadoop: High Scale Image Processing and Analytics
A Non-Standard use Case of Hadoop: High Scale Image Processing and AnalyticsDataWorks Summit
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CDHoang Le
 

Mais procurados (20)

Implementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with SpringImplementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with Spring
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Testando API REST - Parte 1
Testando API REST - Parte 1Testando API REST - Parte 1
Testando API REST - Parte 1
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
Kubermatic CNCF Webinar - start.kubermatic.pdf
Kubermatic CNCF Webinar - start.kubermatic.pdfKubermatic CNCF Webinar - start.kubermatic.pdf
Kubermatic CNCF Webinar - start.kubermatic.pdf
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Unit Testing in Angular
Unit Testing in AngularUnit Testing in Angular
Unit Testing in Angular
 
Test Automation Architecture
Test Automation ArchitectureTest Automation Architecture
Test Automation Architecture
 
Chicago alm user group tfs version control poster - tfvc and git
Chicago alm user group   tfs version control poster - tfvc and gitChicago alm user group   tfs version control poster - tfvc and git
Chicago alm user group tfs version control poster - tfvc and git
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)
 
Git101
Git101Git101
Git101
 
GitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect CombinationGitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect Combination
 
GitOps Toolkit (Cloud Native Nordics Tech Talk)
GitOps Toolkit (Cloud Native Nordics Tech Talk)GitOps Toolkit (Cloud Native Nordics Tech Talk)
GitOps Toolkit (Cloud Native Nordics Tech Talk)
 
Gitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsGitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operations
 
Grafana optimization for Prometheus
Grafana optimization for PrometheusGrafana optimization for Prometheus
Grafana optimization for Prometheus
 
From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0
 
A Non-Standard use Case of Hadoop: High Scale Image Processing and Analytics
A Non-Standard use Case of Hadoop: High Scale Image Processing and AnalyticsA Non-Standard use Case of Hadoop: High Scale Image Processing and Analytics
A Non-Standard use Case of Hadoop: High Scale Image Processing and Analytics
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 

Semelhante a Domain-Driven Design und Hexagonale Architektur

Smart Working & Future Work@Detecon - Kurzpräsentation
Smart Working & Future Work@Detecon - KurzpräsentationSmart Working & Future Work@Detecon - Kurzpräsentation
Smart Working & Future Work@Detecon - KurzpräsentationMarc Wagner
 
Developer Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-AnwendungenDeveloper Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven DesignTobiasFrischholz
 
Mit Domain-driven Design (DDD) nützliche und flexible Software bauen
Mit Domain-driven Design (DDD) nützliche und flexible Software bauenMit Domain-driven Design (DDD) nützliche und flexible Software bauen
Mit Domain-driven Design (DDD) nützliche und flexible Software bauenDigicomp Academy AG
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
.NET Core Architecture (UI)
.NET Core Architecture (UI).NET Core Architecture (UI)
.NET Core Architecture (UI)Robin Sedlaczek
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der PraxisMichael Mirold
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Gregor Biswanger
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...BATbern
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013superflomo
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
Erp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausErp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausDedagroup
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationGeorg Eck
 
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von DatenData is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von DatenMongoDB
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Daniel Fesenmeyer
 
dox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbHdox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbHdox42
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDevDay Dresden
 

Semelhante a Domain-Driven Design und Hexagonale Architektur (20)

Smart Working & Future Work@Detecon - Kurzpräsentation
Smart Working & Future Work@Detecon - KurzpräsentationSmart Working & Future Work@Detecon - Kurzpräsentation
Smart Working & Future Work@Detecon - Kurzpräsentation
 
Developer Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-AnwendungenDeveloper Week 2019: Architekturen für .NET Core-Anwendungen
Developer Week 2019: Architekturen für .NET Core-Anwendungen
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 
Mit Domain-driven Design (DDD) nützliche und flexible Software bauen
Mit Domain-driven Design (DDD) nützliche und flexible Software bauenMit Domain-driven Design (DDD) nützliche und flexible Software bauen
Mit Domain-driven Design (DDD) nützliche und flexible Software bauen
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
.NET Core Architecture (UI)
.NET Core Architecture (UI).NET Core Architecture (UI)
.NET Core Architecture (UI)
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-Anwendungen
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der Praxis
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
Erp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausErp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinaus
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen Dokumentation
 
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von DatenData is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)
 
dox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbHdox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbH
 
Csb Kundenforum 2007
Csb Kundenforum 2007Csb Kundenforum 2007
Csb Kundenforum 2007
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
 

Domain-Driven Design und Hexagonale Architektur