Architecture, software engineering senior et exécution technique pour produits exigeants.

DDD & Architecture hexagonale

Des frontières métier qui rendent le code plus clair, pas plus cérémoniel.

LRJI aide les équipes à utiliser le DDD et l'architecture hexagonale pour clarifier les responsabilités, isoler le domaine, réduire le couplage et rendre les décisions d'architecture visibles dans le code.

L'objectif n'est pas d'imposer un vocabulaire. Le travail consiste à trouver les bonnes frontières, les bons ports/adapters et le bon niveau de discipline pour des équipes TypeScript, Node.js, NestJS ou full-stack qui doivent continuer à livrer.

Signaux

Quand DDD et hexagonal deviennent utiles

Ces approches sont pertinentes quand elles corrigent un problème réel de compréhension, de couplage ou de delivery. Sinon, elles ajoutent surtout du vocabulaire.

01

Le code ne reflète pas le métier

Les dossiers sont organisés par couches techniques, mais les règles, responsabilités et cas d'usage métier sont dispersés.

02

Les frontières changent selon l'interlocuteur

Produit, engineering, data, support et intégrations ne décrivent pas les mêmes domaines ni les mêmes responsabilités.

03

Les adapters dictent le domaine

ORM, framework, broker, API externe ou fournisseur identity imposent leur structure aux règles métier.

04

Les tests sont difficiles à écrire sans infrastructure

Si tester une règle métier demande base, broker, HTTP ou framework complet, la frontière domaine est probablement trop faible.

05

Le vocabulaire DDD existe, mais pas les effets

On parle d'entities, services, repositories ou ports, mais la maintenabilité et la vitesse de changement ne s'améliorent pas.

Périmètre

Ce qui est clarifié

Le travail part du système réel. On garde ce qui aide la delivery et on élimine les abstractions qui ne paient pas leur coût.

Bounded contexts et langage
Identifier les domaines utiles, responsabilités, concepts ambigus et points de traduction entre équipes ou systèmes.
Cas d'usage et domaine
Exprimer les règles métier et workflows applicatifs sans dépendre directement du framework, de la base ou du transport.
Ports, adapters et intégrations
Définir les contrats entre domaine, infrastructure, API, messages, fournisseurs externes et stockage.
Migration progressive
Introduire la structure dans une codebase active par modules, tests, refactorings et premières frontières à fort effet.

Position

La position LRJI

Le DDD est utile quand il améliore les décisions et le code. L'architecture hexagonale est utile quand elle protège le domaine sans rigidifier l'équipe.

Commencer par les tensions réelles

On ne découpe pas pour respecter un diagramme. On découpe là où le couplage, l'ambiguïté ou les changements fréquents coûtent cher.

Ne pas sacraliser les patterns

Entity, aggregate, repository, port ou adapter doivent résoudre un problème précis. Sinon, on retire.

Rendre les tests plus simples

Une bonne frontière permet de tester plus vite, plus localement et avec moins d'infrastructure obligatoire.

Protéger la delivery

L'introduction doit se faire par incréments utilisables, pas par réorganisation massive qui bloque la roadmap.

Format

Comment l'accompagnement se déroule

Le format peut être diagnostic, cadrage ou accompagnement hands-on. Le fil reste le même : clarifier, prouver dans le code, puis transmettre.

  1. 01

    Lire les flux métier

    Cas d'usage, événements, règles, données, intégrations et responsabilités d'équipe sont cartographiés ensemble.

  2. 02

    Choisir les premières frontières

    Les zones à fort effet sont priorisées : celles qui changent souvent, cassent souvent ou bloquent la compréhension.

  3. 03

    Prototyper la structure

    Un module, un cas d'usage, un port ou un adapter servent de référence concrète plutôt qu'un document théorique.

  4. 04

    Installer les règles d'équipe

    Conventions, tests, exemples, ADRs ou revues guident l'équipe pour continuer sans dépendre du consultant.

Livrables

Ce que l'équipe récupère

Les livrables doivent se voir dans la codebase et dans les décisions d'équipe.

  • Bounded contexts, responsabilités et vocabulaire métier clarifiés.
  • Structure applicative cible : cas d'usage, domaine, ports, adapters et modules.
  • Exemples de code ou premières PRs montrant la structure attendue.
  • Plan d'introduction progressif pour une codebase active ou legacy.
  • Tests et contrats qui prouvent que les frontières améliorent la maintenabilité.
  • ADRs, conventions ou règles de review pour garder la structure vivante.

Preuves

Expériences pertinentes

Le DDD et l'hexagonal ont été utiles quand ils ont clarifié des plateformes réelles, pas quand ils ont ajouté du jargon.

Hexa

Banque : plateforme d'authentification critique

Architecture hexagonale autour de Keycloak, abstraction fournisseur et frontières applicatives plus testables.

Lire le cas authentification

0 -> prod

SaaS : DDD tactique dès les fondations

Socle TypeScript et tRPC avec domaines explicites, contrats full-stack et pratiques shift-left.

Lire le cas SaaS

7 -> 1

Retail : simplification par frontières plus nettes

Migration vers un déployable principal plus maintenable, avec réduction de coordination et meilleure cohérence de delivery.

Lire le cas retail

Suites possibles

Selon le besoin réel

DDD et hexagonal peuvent être le sujet central ou une partie d'un chantier architecture, migration ou event-driven.

Quand le legacy bloque

Introduire les frontières progressivement dans une migration legacy plutôt que réorganiser toute la codebase.

Migration legacy

FAQ

FAQ

Est-ce réservé aux projets greenfield ?

Non. C'est souvent plus utile sur des produits existants, à condition de l'introduire progressivement et de cibler les zones où les frontières faibles coûtent vraiment cher.

Faut-il adopter strictement tout le vocabulaire DDD ?

Non. Le vocabulaire ne vaut que s'il améliore la communication et le code. LRJI privilégie les concepts qui produisent un effet mesurable sur la maintenabilité et la delivery.

Est-ce compatible avec NestJS ou d'autres frameworks ?

Oui. Le framework peut rester l'adapter d'entrée. Le point clé est de ne pas laisser le framework devenir le modèle domaine.

Prochaine étape

Apportez une zone du système où les frontières coûtent cher.

LRJI aide à transformer cette zone en modèle plus clair, structure applicative plus stable et trajectoire d'introduction que l'équipe peut réellement suivre.