@tpierrain
@Julientopcu
Domain
Adapter
Adapter
ACL
CF
CF
U
D
ACL
CF
CF
U
D
Money
Search
Booking
ACL
CF
CF
U
D
CF
ACL
CF
µ
Booking
µ
Search
Money
µ
Search
µ
Booking
1 Bounded
Context
API
API
SPI
Inspired by Alistair Cockburn's pattern
Port
Adapter
API
API
SPI
SPI
DB
SPI
Search
REST
API
DB
SPI
Booking
REST
API
DB
SPI
Search
REST
API
DB
SPI
Booking
REST
API
DB
SPI
Search
REST
API
DB
SPI
Booking
REST
ACL
SPI
INPROC
API
REST
API
DB
SPI
Search
REST
ACL
API
SPI
DB
SPI
Booking
INPROC
Booking
DB
Search
DB
ACL
CF
CF
ACL
(lib)
CF
CF
INPROC (infrastructure)
Booking Module
SPI
Search Module
API
Domain
Domain
INPROC (infrastructure)
SPI
API
Selection
Train
Train
Selection
getTrainsToBook()
getTrainsToBook()
(impl)
getSelection()
Domain
Domain
Booking Module
Search Module
INPROC (infrastructure)
Booking Module
SPI
Search Module
API
Domain
Domain
Selection
getSelection()
Booking
Search
API
Selection
getSelection()
Selection
Selection
getSelection()
getSelection()
Selection
Selection
INPROC
Booking
SPI
Search
API
Selection
getSelection()
CF
API
API
SPI
SPI
(lib)
CF
Money
(Lib)
Booking
Price
Discount
Amount
Currency
Amount
Currency
Amount
Currency
Money
(Lib)
Booking
Price
Discount
Amount
Currency
Shared-Kernel
(lib)
Booking
Search
Search
Booking
Comfort
Class
Schedule
Comfort
Class
Schedule
Comfort
Class
Schedule
Shared-Kernel
(lib)
Search
Booking
Comfort
Class
Schedule
Comfort
Class
Schedule
Comfort
Class
Schedule
Booking
Search
SPI
Travelers
(SK)
SPI
REPOSITORY (adapter)
Booking
SPI
Traveler
getTraveler()
Traveler
Travelers (SK)
SPI
Search
getTraveler()
(impl)
Select * from Travelers
getTraveler()
Traveler
REPOSITORY (Adapter)
getTraveler()
(impl)
Select * from Travelers
Traditional (not HIVED)
Traditional (not HIVED)
Traditional (not HIVED)
API
SPI
SPI
API
Network breaking changes
distributed release
Traditional (not HIVED)
Money
REST
CF
API
DB
SPI
Search
REST
ACL
API
SPI
DB
SPI
Booking
INPROC
CF
Money
REST
CF
API
DB
SPI
Search
ACL
SPI
DB
SPI
Booking
CLIENT
REST
API
µ
Search
µ
Booking
Money
(lib)
CF
ACL
CF
CF
ACL
CF
ACL
CF
REST
ACL
API
SPI
DB
SPI
INPROC
REST
CF
API
DB
SPI
Search
Booking
CF
Money
(lib)
REST
API
DB
SPI
REST
CF
API
DB
SPI
Search
Booking
DB
SPI
API
ACL
SPI
INPROC
ACL
SPI
INPROC
Location
CF
Money
(lib)
Shared Kernel
SK
Production code
TESTS
Experimentation Sandbox
Flexible & Composable
cohesive & Loosely coupled modules
Scaling ready
deployment agnostic
fractal
Testable designs
& tidy tests
Embracing change
& design break throughs
ACL
CF
CF
U
D
ACL
CF
CF
Booking
ACL
CF
CF
Money
Search
Annexe:
Le couplage liés aux aggrégats qui traversent les frontières des modules. Viol d'encapsulation, on permet à un module externe de modifier l'aggrégat. Il faut retourner des read model de nos aggrégats
INPROC
Booking
SPI
Search
API
Selection
Draft
Booking
Draft
Booking
Selection
DraftABooking()
DraftABooking()
(impl)
getSelection()