coder sans peur du changement avec la meme pas mal hexagonal architecture
TRANSCRIPT
![Page 1: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/1.jpg)
@cyriux @tpierrain #MemePasMal
Coder sans peur du changement, avec la "même pas mal !" architecture hexagonale
Cyrille MARTRAIRE (@cyriux) Arolla !
Thomas PIERRAIN (@tpierrain) Société Générale
![Page 2: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/2.jpg)
@cyriux @tpierrain #MemePasMal
CODER SANS PEUR DU CHANGEMENT, AVEC LA "MÊME PAS MAL !" ARCHITECTURE HEXAGONALE
Cyrille MARTRAIRE (@cyriux) Arolla !
Thomas PIERRAIN (@tpierrain) Société Générale
![Page 3: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/3.jpg)
![Page 4: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/4.jpg)
![Page 5: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/5.jpg)
Architecte
Société Générale
Thomas Pierrain
![Page 6: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/6.jpg)
6
![Page 7: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/7.jpg)
7
![Page 8: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/8.jpg)
Passionate developer
PARIS Since 1999
!
@cyriux
Cyrille Martraire
![Page 9: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/9.jpg)
Paris Software Craftsmanship Community
http://www.meetup.com/paris-software-craftsmanship/
![Page 10: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/10.jpg)
TDDBDDDDDLegacy
![Page 11: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/11.jpg)
Architecte Technique
Central
![Page 12: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/12.jpg)
Architecte Technique
Central
![Page 13: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/13.jpg)
Your own Sweets Box Online!Use-cases
1. Choose your box and the sweets to put inside
2. Get a price 3. Order, & consult
past orders
![Page 14: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/14.jpg)
Let’s start
![Page 15: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/15.jpg)
As usual: Chose the DB &
Design the DB schema!
![Page 16: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/16.jpg)
STOP !
![Page 17: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/17.jpg)
Alistair Cockburn
![Page 18: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/18.jpg)
Uncle Bob Martin
![Page 19: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/19.jpg)
Hexagonal
![Page 20: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/20.jpg)
100% Domain Inside
![Page 21: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/21.jpg)
Thin layer of Use-cases
![Page 22: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/22.jpg)
Ports/Adapters all around
![Page 23: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/23.jpg)
Adapter
![Page 24: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/24.jpg)
Dependencies always towards the inside!
X
Allowed way for dependencies
![Page 25: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/25.jpg)
Dependencies always towards the inside!
Vers l’intérieur, qu’il
dit le monsieur !
![Page 26: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/26.jpg)
Ports/Adapters?“REST” Port
“REST” Adapter
“EMS“ Adapter
“Tibco EMS”
Port
![Page 27: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/27.jpg)
Hexagonal?
![Page 28: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/28.jpg)
Users Vs. Providers
THEY NEED ME
I NEED THEM
API (Application Provider Interface)
SPI (Service Provider Interface)
![Page 29: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/29.jpg)
Tests Vs. Production
Deliver value to PROD
Verify behavior in TESTTest Robots Fakes, Mocks
Clients Stores etc.
![Page 30: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/30.jpg)
Scenario-Driven…
Given a sweets box of size XL And a selection of 500g of M&Ms And assuming the following prices | item | price | currency | | XL Box | 2.50 | EUR | | M&M (100g)| 5.00 | EUR | !
When I ask for a price Then the price is 27.50 EUR
![Page 31: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/31.jpg)
Modeling the domain…
Sweets
CustomSweetsBox
SweetsBoxPricerAllOrders
Catalog Order
ShippingCostEstimator
Caramels
Nougat
Fudge
![Page 32: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/32.jpg)
Modeling the domain…
Sweets
CustomSweetsBox
SweetsBoxPricerAllOrders
Catalog Order
ShippingCostEstimator
Caramels
Nougat
Fudge
Beware of
Modelism!
![Page 33: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/33.jpg)
I need to call external services, but I don’t want to know about
them
![Page 34: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/34.jpg)
DIP principle
X
![Page 35: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/35.jpg)
DIP principle
Interface
Adapter
![Page 36: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/36.jpg)
interface
![Page 37: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/37.jpg)
interface
REPOSITORY
![Page 38: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/38.jpg)
interface
Start with mocks
MOCK
![Page 39: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/39.jpg)
Add an html web app…
“REST” Adapter
![Page 40: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/40.jpg)
We can demo!
![Page 41: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/41.jpg)
Quick Win 1
Focus on what really
matters
![Page 42: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/42.jpg)
Implement the repository
![Page 43: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/43.jpg)
Implement the repository
On the
cloudz!
![Page 44: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/44.jpg)
Implement actual persistence
interface
Amazon
Adaptor
![Page 45: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/45.jpg)
Même pas mal !(“that didn't hurt one bit“)
![Page 46: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/46.jpg)
Quick Win 2
Choose the technology last
(when we know best)
![Page 47: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/47.jpg)
47
MAX IGNORANCE
![Page 48: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/48.jpg)
48
Who’s that architect who can’t decide the technologies early?
![Page 49: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/49.jpg)
Ebay as additional retailer?
![Page 50: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/50.jpg)
Ebay as additional retailer!
“REST” Adapter
Ebay Adapter
![Page 51: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/51.jpg)
Même pas …
![Page 52: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/52.jpg)
New shipping provider?
![Page 53: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/53.jpg)
interface
FEDEX
Adaptor
New shipping provider?!
![Page 54: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/54.jpg)
Again:
Même pas mal !!!
![Page 55: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/55.jpg)
Quick Win 3
Embrace the changes
![Page 56: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/56.jpg)
X
Allowed way for dependencies
Hexagonal architecture
![Page 57: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/57.jpg)
Quick Win 4
Low couplingHigh cohesion
![Page 58: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/58.jpg)
Before (legacy architecture)
![Page 59: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/59.jpg)
After (Hexagonal Architecture)
![Page 60: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/60.jpg)
Quick Win 5Our business code is not victim of IT fads
anymore!
![Page 61: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/61.jpg)
61
![Page 62: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/62.jpg)
Hexagonal Architecture
Use & Abuse!
![Page 63: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/63.jpg)
Need other areas of behaviors?
• Business intelligence? • Supply Chain management • CRM? • …
![Page 64: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/64.jpg)
Même pas ! ;-)
![Page 65: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/65.jpg)
Hexagonal all the things
New Bounded Contexts? New Micro-services?
![Page 66: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/66.jpg)
Main benefits !
1.Focus on what really matters (business value first!) ➔ have you ever tried DDD?
!
2.Choose the technology last (when we know best our concrete needs) !
3.Embrace the changes (“Même pas mal !” / “that didn't hurt one bit“)
![Page 67: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/67.jpg)
![Page 68: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/68.jpg)
Thanks!Cyrille MARTRAIRE @cyriux
Thomas PIERRAIN @tpierrain
![Page 69: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/69.jpg)
@cyriux @tpierrain #MemePasMal
CODER SANS PEUR DU CHANGEMENT, AVEC LA "MÊME PAS MAL !" ARCHITECTURE HEXAGONALE
Cyrille MARTRAIRE (@cyriux) Arolla !
Thomas PIERRAIN (@tpierrain) Société Générale
![Page 70: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/70.jpg)
70
![Page 71: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/71.jpg)
FUZZY
![Page 72: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/72.jpg)
FUZZY
![Page 73: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/73.jpg)
FUZZY
![Page 74: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/74.jpg)
Pattern
![Page 75: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/75.jpg)
Port Vs
Adapter?
![Page 76: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/76.jpg)
![Page 77: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/77.jpg)
Port = Existing Techno Adapter = Your code
![Page 78: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/78.jpg)
You disagree?
![Page 79: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/79.jpg)
Not that important.
![Page 80: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/80.jpg)
Symmetries?
80
![Page 81: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/81.jpg)
Not that important.
![Page 82: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/82.jpg)
Inside vs.
Outside
![Page 83: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/83.jpg)
Who’s talking about hexagonal?
![Page 84: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/84.jpg)
Alistair Cockburn
84
![Page 85: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/85.jpg)
”Uncle Bob” Martin
85
![Page 86: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/86.jpg)
Steeve Freeman & Nat Pryce (GOOS)
86
![Page 87: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/87.jpg)
Vaughn Vernon (IDDD)
87
![Page 88: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/88.jpg)
Jeffrey Palermo (Onion Architecture)
88
![Page 89: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/89.jpg)
h;p://pragprog.com/magazines/2009-‐12/going-‐naked
Depends on nothing
Pragmatic Programmers
![Page 90: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/90.jpg)
Many notations!
![Page 91: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/91.jpg)
Still, not well-known
![Page 92: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/92.jpg)
+--------------+!| presentation |!|--------------|!| domain |!|--------------|!| persistence |!+--------------+
Layers?
![Page 93: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/93.jpg)
+-----+-------------+----------+!| gui | file system | database |!|-----+-------------+----------+!| domain |!|------------------------------+
Infra the other way round!
Layering
http://matteo.vaccari.name/blog/archives/154
![Page 94: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/94.jpg)
Inside vs.
Outside
![Page 95: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/95.jpg)
Un Dedans et
Un Dehors
![Page 96: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/96.jpg)
Un Dedans et
Un Dehors#des reperes pour nos enfants
![Page 97: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/97.jpg)
For real
![Page 98: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/98.jpg)
98
![Page 99: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/99.jpg)
99
Ted Neward
![Page 100: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/100.jpg)
We’re launching a startup, man.
![Page 101: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/101.jpg)
Sentiment Analysis !
Automatically extract the sentiment of English sentences submitted on the web, using a given lexicon. Keep track of the
submitted sentences.
![Page 102: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/102.jpg)
Your Turn !
5mn Small groups
Any technology / approach
Propose an architecture on paper !
Then we’ll debrief a selection of them
![Page 103: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/103.jpg)
Sentiment Analysis !
Automatically extract the sentiment of English sentences submitted on the web, using a given lexicon. Keep track of the
submitted sentences.
![Page 104: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/104.jpg)
![Page 105: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/105.jpg)
105
![Page 106: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/106.jpg)
How to enforce?
![Page 107: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/107.jpg)
![Page 108: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/108.jpg)
108http://books.sonatype.com/mvnref-book/reference/flex-dev-sect-creating-with-archetype.html
Maven multi-
module
![Page 110: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/110.jpg)
110https://leanpub.com/livingdocumentation/
![Page 111: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/111.jpg)
111
Living Diagrams
![Page 112: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/112.jpg)
4 novel coupling metrics 1. Undesirable Dependency Count 2. Undesirable Distinct Dependency Count 3. Undesirable Dependency Max Repetition 4. Undesirable Distinct Assembly Count
!
Bad
Good
●Provoke conversations
![Page 113: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/113.jpg)
Conformist vs.
Hexagonal
![Page 114: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/114.jpg)
Conformist (accidental)
![Page 115: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/115.jpg)
Hexagonal Architecture
![Page 116: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/116.jpg)
Hexadecimal Architecture:
Need at least 16 layers in the code
![Page 117: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/117.jpg)
Architecture = ?
![Page 118: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/118.jpg)
Architecture !
”The key technology choices”BOF…
![Page 119: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/119.jpg)
Architecture !
”What everybody should know”
![Page 120: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/120.jpg)
Architecture !
”What’s hard to change”
![Page 121: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/121.jpg)
Architecture !
”What’s irreversible”
![Page 122: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/122.jpg)
Reversible decisions FTW!
Defer technology decisions
Change your
mind easily
![Page 123: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/123.jpg)
50% TECH 50% COMM
![Page 124: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/124.jpg)
50% TECH 50% COMM (10% MATHS)
![Page 125: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/125.jpg)
Communication FTW!
![Page 126: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/126.jpg)
AGRE
E
ON
MAXIM
S
![Page 127: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/127.jpg)
”Le principe du nombril : on regarde vers l’intérieur”
![Page 128: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/128.jpg)
Repository
![Page 129: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/129.jpg)
Persistence Ignorance
!
!
•You can defer decisions about persistence (and UI) for a long ^me •Your domain must NOT care!
![Page 130: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/130.jpg)
Un service, la facade coté mé^er d’un stockage !
Sans jamais parler de base de données.
Repository
h;p://www.andeka.co.cc/2011/07/postbox-‐251.html
![Page 131: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/131.jpg)
Repository
h;p://www.andeka.co.cc/2011/07/postbox-‐251.html
Interface
DAO
![Page 132: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/132.jpg)
Repository
![Page 133: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/133.jpg)
In Legacy
![Page 134: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/134.jpg)
Bubble Context
• Create a little bubble of innovation !
• Brand new model !
• As clean as we like • Highly tested • High hygiene standards
![Page 135: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/135.jpg)
Bubble Context
• ACL to protect from the legacy code !
• Translates legacy objects & services into new, cleaner ones
![Page 136: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/136.jpg)
Anti-corruption layer
![Page 137: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/137.jpg)
Module (lib)
<<ValueObject<<ValueObject<<ValueObject>> <<ValueObject
<<ValueObject>>
<<Service>> <<SPI>>
<<Service>> <<API>>
<<En7ty>> <<Aggregate>>
Module ==
library
Accès aux services extérieurs
![Page 138: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/138.jpg)
Module == library
Accès aux services extérieurs
![Page 139: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/139.jpg)
Hexagonal Architecture
Scenario test data
Adapters
![Page 140: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/140.jpg)
Bounded Contexts
![Page 141: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/141.jpg)
Bounded Contexts
Il n’est pas possible de convenir du sens précis des mots u7lisés par un grand nombre de personnes.
!
Il faut accepter ce fait, et donc définir dans quel contexte un langage est clairement défini sans ambiguité.
![Page 142: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/142.jpg)
Different
MY activity is not the same as YOUR event
![Page 143: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/143.jpg)
![Page 144: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/144.jpg)
![Page 145: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/145.jpg)
![Page 146: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/146.jpg)
Merci !
hFp://cathy313.centerblog.net/539-‐bisounours
![Page 147: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/147.jpg)
Wrap-up
• Concepts & Messages – Subir -> Délibéré – Intérieur Vs Extérieur – Gérer ses dépendances – Langage interne / externe – DIP • Exemples • Kata
![Page 148: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/148.jpg)
Content• When not to go Hexagonal? – Conformist – Facebook game – Too small (connector…) !
• Advanced aspects – The adapter pattern – Tech ports diversity – 1 Adapter – many interfaces – 1 interface – many adapters – Data push – Session management – Adapter as a module indeed
![Page 149: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/149.jpg)
Content 2Domain model as a Pure Functions (100% no Entity inside) vs as Aggregates !
-- The Repository pattern Reuse slides
Hexagonal for a Bubble Context within a legacy !
Ports = surrounding legacy Adapters = repository / adapter !
Cloakroom / clandestine passenger patterns
![Page 150: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/150.jpg)
Content 3How to enforce? !Discipline Maven multi modules, .Net projects Static analysis: JDepend rules, NDepend, Sonar plugins — Bounded Context Reuse slides !Conformist vs ACL isolation Same language or not? !Autonomous Components / Polyglot persistence !Influence of sync vs async / push vs pull on the inside of the hexagon !Examples?
Living Documentation Convention (YES)? Annotation on packages? !The Bounded Contexts / the Domain models vs the rest (ici un seul Bounded Context) !Domain model -> inside Everything else - that implements something from the domain model -> at the right - everything else that only calls -> at the left !
![Page 151: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/151.jpg)
![Page 152: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/152.jpg)
![Page 153: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/153.jpg)
Apply DDD!
153
![Page 154: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/154.jpg)
http://www.lexicalscope.com/blog/category/patterns/
![Page 155: Coder sans peur du changement avec la meme pas mal hexagonal architecture](https://reader036.vdocuments.net/reader036/viewer/2022062302/587854ea1a28ab68198b70c3/html5/thumbnails/155.jpg)
http://matteo.vaccari.name/blog/archives/154
Problem: write a program that 1. Loads a set of employee records from a flat file 2. Sends a greetings email to all employees whose birthday is today !The flat file is a sequence of records, separated by newlines; this are the first few lines: last_name, first_name, date_of_birth, email !Doe, John, 1982/10/08, [email protected] !Ann, Mary, 1975/09/11, [email protected] !The greetings email contains the following text: Subject: Happy birthday! Happy birthday, dear John! with the first name of the employee substituted for “John” !3. REST service to query past greetings !HINT: today is a tech port! !!
+-----+-------------+----------+!| gui | file system | database |!|-----+-------------+----------+!| domain |!|------------------------------+
+--------------+!| presentation |!|--------------|!| domain |!|--------------|!| persistence |!+--------------+
Exercise
Postgres Sql + Gui (+ myBatis ?) Audit et log dans le domain + Metrics