Slide 1

Slide 1 text

DOMAIN DRIVEN DESIGN AKA DDD Romain TOUZÉ

Slide 2

Slide 2 text

ORIGINES Eric Evans

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

POURQUOI ? Modèle anémique Applications centrées sur la base de données Structurations techniques Sous utilisation de la POO (primitive obsession)

Slide 5

Slide 5 text

CONTROLLER, BEAN, SERVICE, IMPL…

Slide 6

Slide 6 text

QUE FAIT MON OBJET ?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

LA BASE

Slide 10

Slide 10 text

UBIQUITUOUS LANGUAGE dans les CR de workshop… dans les specs dans les tests dans le code

Slide 11

Slide 11 text

ALLER VOIR LES MÉTIERS Dé nir les contextes délimités (bounded contexts) qui vont constituer l'application Acquérir le vocabulaire Challenger le métier BDD

Slide 12

Slide 12 text

BOUNDED CONTEXTS ?

Slide 13

Slide 13 text

BOUNDED CONTEXTS ? Utilisation d'un progiciel… Équipes différentes…

Slide 14

Slide 14 text

PROPOSITION D'IMPLÉMENTATION

Slide 15

Slide 15 text

DÉCOUPLER L'INFRASTRUCTURE DU CODE MÉTIER

Slide 16

Slide 16 text

ARCHITECTURE HEXAGONALE

Slide 17

Slide 17 text

ANTICORRUPTION LAYER

Slide 18

Slide 18 text

OBJETS

Slide 19

Slide 19 text

ENTITÉS Représente les éléments du domaine ayant un cycle de vie et un identi ant dans le SI. Objets muables

Slide 20

Slide 20 text

VALEURS (VALUE OBJECTS) Représente une donnée associée aux entités Objet immuables Évite l'obsession des primitives (primitive obsession)

Slide 21

Slide 21 text

EXEMPLE : UN MONTANT Integer ? Float ? OK, mais si je dois gérer plusieurs devises ? OK, mais si je dois faire de l'arithmétique en gérant plusieurs devises ?

Slide 22

Slide 22 text

AGRÉGATS Arborescence d'entités et de valeurs Les opérations se font sur la racine uniquement

Slide 23

Slide 23 text

SERVICES

Slide 24

Slide 24 text

EN GÉNÉRAL Les actions qui ne peuvent pas être portées par les objets eux-mêmes

Slide 25

Slide 25 text

REPOSITORY Récupération et stockage dans la couche de persistance

Slide 26

Slide 26 text

FACTORY Traduction des informations envoyées au système

Slide 27

Slide 27 text

RAPPEL

Slide 28

Slide 28 text

AUJOURD'HUI

Slide 29

Slide 29 text

LIMITATIONS Scalabilité ? Contextualisation lecture / écriture ?

Slide 30

Slide 30 text

SCALABILITÉ

Slide 31

Slide 31 text

CQRS Command Query Responsibility Segregation

Slide 32

Slide 32 text

CQRS

Slide 33

Slide 33 text

CQRS

Slide 34

Slide 34 text

CQRS

Slide 35

Slide 35 text

EVENT SOURCING

Slide 36

Slide 36 text

RÉFÉRENCE DDD Community CQRS, event sourcing, task based UI Hexagonal architecture

Slide 37

Slide 37 text

C'EST TOUT POUR MOI !