Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AFUP Day Lyon 2024 - DDD !== Archi hexagonale

AFUP Day Lyon 2024 - DDD !== Archi hexagonale

DDD n'a rien à voir avec l'architecture hexagonale, mais ils vont bien ensemble, comme les meilleurs amis du monde !

Nous verrons ce qu'est DDD et ce qu'est l'architecture hexagonale, et pourquoi ils vont si bien ensemble.

https://event.afup.org/afupday2024-interview-benoit-galati/

https://github.com/B-Galati/Talk-DDD-Architecture-Hexagonale

Benoit Galati

May 24, 2024
Tweet

Other Decks in Programming

Transcript

  1. • Comprendre ce qu’est l'architecture hexagonale • Comprendre ce qu’est

    DDD • Comprendre pourquoi DDD et architecture hexagonale vont très bien ensemble Objectifs 2
  2. 4 “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, https://alistair.cockburn.us/hexagonal-architecture/
  3. 6 Il y’a “l’intérieur” et “l’extérieur” de l’application Outside Inside

    =business logic Outside Une règle d’or, les dépendances se font toujours vers l’intérieur Business code à l’intérieur Le nombre de couches et leurs responsabilités sont à définir
  4. 7 Il y a la gauche (user-side) et la droite

    (server-side) Outside Inside =business logic Outside User-side Left adapters Primary adapters Driving adapters Server-side Right adapters Secondary adapters Driven adapters ORM SMS Email HTTP AMQP Test CLI HTTP Test Port Port Port Port Fake Fake Flow d’exécution
  5. Une architecture en couches ne peut pas isoler entièrement le

    code de votre domaine métier 8 Domain Data store Web Domain Data store Web Layers Hexagonal
  6. Choisissez soigneusement les dépendances qui entrent dans votre application. Le

    coût du changement et la stabilité de des dépendances sont les deux critères majeurs. 10
  7. 13 “The idea that software systems need to be based

    on a well-developed model of a domain has been around for at least as long as I've been in the industry” − Martin Fowler, https://martinfowler.com/bliki/DomainDrivenDesign.html
  8. Des patterns stratégiques et tactiques 16 • Patterns stratégique, pour

    optimiser l’organisation du système d’information et aligner la tech et le business : ◦ Ubiquitous Language (applicable within a bounded context, not enterprise wide) ◦ Bounded Context ◦ Context Mapping • Patterns tactiques, pour implémenter un domain model dans un bounded context : ◦ Aggregate ▪ Value object ▪ Entity ◦ Repository ◦ Factory ◦ Service ◦ Domain event ◦ Module
  9. 20

  10. 24 • DDD pour aligner le business et la tech

    ◦ Le domain modeling c’est une des plus grandes richesses de DDD • DDD pour simplifier, pas pour complexifier • DDD est neutre d’un point de vue architecture • L’architecture Hexagonal est un très bon style d’architecture pour isoler un domain model DDD Pour résumer !
  11. Références 26 • DDD ◦ Blue book : Domain-Driven Design:

    Tackling Complexity in the Heart of Software - Eric Evans ◦ Red book : Implementing Domain-Driven Design - Vaughn Vernon ◦ https://martinfowler.com/bliki/DomainDrivenDesign.html ◦ https://www.lilobase.me/le-domain-driven-design-est-il-adapte-a-tous-vos-projets/ • Architecture hexagonale ◦ https://alistair.cockburn.us/hexagonal-architecture/ ◦ https://blog.octo.com/architecture-hexagonale-trois-principes-et-un-exemple-dimplementation/ ◦ Livre : Clean Architecture: A Craftsman's Guide to Software Structure and Design - Robert C. Martin ◦ https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/ ◦ https://tpierrain.blogspot.com/2021/03/outside-in-diamond-tdd-1-style-made.html