Formation "Refactoring vers DDD"

En ligne - Sur demande 2 jours S'inscrire

Objectifs

Cette formation permet aux participants d’acquérir des bases pour comprendre et mettre en place différents patterns tactiques et stratégiques liés au Domain Driven Design dans une application en production, ayant déjà évoluée. A partir d’un exemple existant, nous nous exercerons à :

  • Changer du code Legacy en confiance avec des tests
  • Ecrire du code reflétant le domaine métier
  • Utiliser certains patterns tactiques du DDD

Acquis à l'issue de la formation

Le participant à cette formation aura acquis des bases solides pour la compréhension et l’implémentation de différents concepts liés au DDD dans une application existante :

  • Changer du code Legacy avec des tests de caractérisation/Golden Master
  • Exprimer explicitement le domaine métier dans le code - Ubiquituous Language
  • Comprendre et identifier différents types d’architectures pour bien isoler le domaine métier
    • Architectures “N-tiers”, “en onion”, “hexagonale”, “functional core/imperative shell”
    • Modélisation de la couche présentation
    • Modélisation des données et ORM
    • Modélisation de l’état (statique) VS les changements (dynamique)
  • Utiliser les Domain Events pour expliciter les changements au sein du domaine métier
  • Utiliser le concept d’agrégat - AggregateRoot vs Entity
  • Comprendre les enjeux stratégiques de ce type de refactoring
    • Démystifier le débat monolithes VS microservices
    • Bounded Contexts
    • Les patterns stratégiques

Prix

Le tarif est de 1000€ HT / personne (1200€ TTC) pour 2 jours de formation

Public concerné et pré-requis

Cette formation vise les développeurs d’applications ayant une bonne maîtrise d’au moins un langage de programmation (orienté objet ou fonctionnel), en terme de syntaxe, environnement de travail et accès aux bases de données (nous pouvons vous aider sur C#, Java, Scala, F#, JS/TS et PHP).
Une première expérience de développeur sur une application en production ayant au moins quelques années d’existence est nécessaire pour bien comprendre les enjeux. Il est également attendu une bonne maîtrise des tests unitaires dans ce langage, ainsi que de Git pour la gestion de version. Les participants devront être équipés d’un PC (non fourni) avec leur environnement de travail configuré et avoir installé Git dans sa dernière version.

Vérifier mes pré-requis

Evaluation

En début de formation, une auto-évaluation est effectuée pour évaluer le niveau, ainsi que les attentes de chaque participant. Ainsi nous pouvons organiser au mieux les différents groupes de travail.
Par la suite, le formateur effectue une évaluation continue à l'aide des nombreux exercices pratiques.
En fin de formation, la progression et les acquis sont auto-évalués par chacun des participants. Le formateur fournit à chacun des participants une évaluation, ainsi que les axes d'amélioration.
En option, un accompagnement post-formation peut être effectué. Cela fera l'objet d'un devis complémentaire.

Programme

En partant d’une application “legacy” (simple), nous essayons les différents patterns tactiques du DDD pour faire évoluer cette application vers un code isolant et explicitant mieux le domaine métier.

  • 1ère demi-journée
    • Mettre en place des tests de caractérisations ou un Golden Master pour changer son code legacy sereinement
    • Faire émerger les concepts du domaine métier plus clairement par refactoring successifs
  • 2ème demi-journée
    • Architectures “N-tiers”, “en onion”, “hexagonale”
    • Modélisation de la couche présentation (différence entre patterns MVx et architecture logicielle)
    • Modélisation des données et ORM (et “la magie du change tracking”)
    • Modélisation de l’état (statique) VS les changements (dynamique)
    • Modèles anémiques (Anemic Domain Model) ou riches (Rich Domain Model) Introduire la notion de Domain Event pour faire émerger encore mieux le domaine métier dans le code et isoler les dépendances externes au domaine métier
  • 3ème demi-journée
    • Mettre en oeuvre la notion d’agrégat - AggregateRoot - pour séparer clairement les responsabilités au sein du domaine métier
    • Charger et persister un agrégat
    • Tester un agrégat
  • 4ème demi-journée
    • Introduire CQRS pour séparer les modèles de lectures et d’écriture
    • Introduire l’EventSourcing pour stocker les événements au lieu de l’état
    • Refactorer une application existante plus importante : stratégies
      • Notion de Bounded Context
      • Patterns stratégiques DDD et Context Map
      • Stratégies de refactoring : Bubble Context, Autonomous Bubble, Legacy Assets

Formateurs

Suivant le nombre de participants, cette formation sera réalisée par un ou plusieurs formateurs.
En savoir plus sur nos formateurs

En ligne - Sur demande 2 jours S'inscrire