Formation Domain Driven Design

Appréhender les principes et les pratiques d’une conception orientée Métier

sablier-violet  Durée : 3 jours

Référence : DDD 01

Réservez votre session

PARIS

26 Juin 2017

1450 € HT











Objectifs

Comprendre les bénéfices du Domain Driven Design (DDD)
Savoir distinguer la complexité technique de la complexité de son métier
Etre en mesure de prendre la décision d’appliquer ou non DDD à son contexte
Permettre d’aligner les concepts DDD avec ses propres pratiques issues de son expérience
Maîtriser et appliquer les patterns DDD stratégiques
Connaître les techniques d’introduction du domaine dans le code
Avoir une expérience d’implémentation (architecture + code) concrète de DDD
Connaître et utiliser les principales briques DDD tactiques

Public

Architecture, Développeur confirmé (ayant une bonne expérience, idéalement de plusieurs années sur des domaines complexes)

Pré-requis

Connaissances du langage Java / Connaissances du langage .NET

Méthodes pédagogiques

50% théorie / 50 % pratique

Modalités d’évaluation

modalites_d_evaluation

Nos intervenants

nos_intervenants

Description

Depuis ces dernières années, la complexité des problèmes métiers ne cessent de s’accroître, et très souvent, les applicatifs ne répondent pas correctement aux besoins des utilisateurs. On s’aperçoit ainsi que le but ultime n’est pas d’écrire du code ou même de construire des logiciels mais principalement de résoudre des problèmes. Pour répondre à la construction de domaines métiers complexes, DDD est une philosophie fournissant un ensemble de pratiques, de principes et de patterns pour dé-complexifier le métier et produire des applications répondants mieux aux besoins des utilisateurs, et ceux quel que soit le langage de programmation ou l’environnement technologique.

Cette formation vous permettra de mieux comprendre le vaste et complexe sujet DDD. Tout au long de la formation, un fil rouge applicatif est co-construit afin de comprendre la mise en œuvre des différents principes, pratiques et patterns d’une conception dirigée par le métier.

Programme

Introduction
•    Les challenges de la création logicielle
•    Une première définition de DDD
•    Plus de 10 ans déjà !
•    Pourquoi s’intéresser au DDD ?
•    A quoi ressemble une application conçue avec DDD
•    Les conditions pour appliquer DDD
•    Les prérequis à sa mise en place
Analyse et exploration du métier
•    Techniques de collaboration avec les experts métiers
•    Création d’un « ubiquitous language »
•    Focus sur le « Event Storming »
•    Expérimentation du « design » émergeant
Modèle et Bounded Context
•    Définition et application d’un modèle
•    Différents types de modèles possibles : Anemic, Transaction Script, CRUD
•    Le « Rich Domain model »
•    Subdivision et catégorisation en sous-domaines
•    Notion de « Bounded context »
•    Création d’un « Navigation Map »
•    Maintien du « Domain Model » avec le « Bounded Context »
•    Mise à jour du Domain Model
Communication entre Bounded Context
•    Problématiques d’intégration et « eventual consistency »
•    Intégration via un système de messages
•    Intégration via HTTP et RPC
•    Intégration via HTTP et REST
Patterns de modélisation
•    Application de l’hexagonal Architecture
•    Utilisation des building blocks
•    Entity, Value Objects, Domain Services et Modules
•    Aggregats, Repositories et Factories
•    Focus la séparation du « Data Model » vs « Domain Model »
•    Règles de validation & Spécifications
Event Sourcing & CQRS
•    Les limitations des solutions de stockage traditionnelles à base de snapshots
•    Construction d’un Event Store
•    Définition et application du pattern CQRS
Microservices & DDD
•    Pattern d’architecture Microserivces
•    Découpage Composants vs Microservice
•    L’apport de DDD pour les Microservices
Repository implementation && NoSQL Database
•    Les particularités
•    Mapping Data Model vs Domain Model
•    Cas d’une base de données document et clé-valeur