Introduction
Chapter
ANTWERP, BELGIUM
10th OCTOBER 2025


Architecture
Chapter

{}
Domain
Controller
Persistence
Adapter
Adapter
SPI
API
Adapter
Adapter
to the rescue!
Alistair Cockburn's pattern
SPI
API

Controller
Persistence
Domain
{}
Domain
Controller
Persistence
Adapter
Adapter
SPI
API
Domain
Chapter
{}
Engine
Time Circuit
Tank
TimeStamp
Fuel
Liter
Miles
Per Hour
Time Jump
Nuclear Reactor
Delorean
Plutonium Pellet
Flux Capacitor
GigaWatt
DeLorean
Time Circuit
Flux Capacitor
Flux Capacitor
Time Circuit
Nuclear Reactor
DeLorean
Flux Capacitor
Plutonium Pellet
Nuclear reactor
GigaWatt
Plutonium Chamber
Nuclear Reactor
Engine
Tank
Miles
Per
Hour
Fuel
Liter
Time Jump
Flux Capacitor
TimeStamp
Time Circuit
Time Circuit
Time Circuit
Flux Capacitor
Target Vision
Flux Capacitor
DeLorean
Nuclear Reactor
Flux Capacitor
Time Circuit
Flux Capacitor
Nuclear
Reactor
Timecircuit
DeLorean
BACK«
DISTRIBUTED EDITION
TO
THE
BBOM
Flux
Capacitor

why not rushing?
Design uncertainty
Mistakes are expensive
No clue on what to extract
Modular Monolith
Strategy
First Hexagon
Chapter
DeLorean
Flux Capacitor
Nuclear Reactor
Time Circuit
Time Jump
Engine
Miles
Per
Hour
Fuel
Liter
Flux Capacitor
Tank
Plutonium Chamber
Plutonium Pellet
Nuclear reactor
GigaWatt
Time Circuit
TimeStamp
DeLorean
Flux Capacitor
Plutonium Pellet
Nuclear reactor
GigaWatt
Plutonium Chamber
Nuclear Reactor
Engine
Tank
Miles
Per
Hour
Fuel
Liter
Time Jump
Flux Capacitor
TimeStamp
Time Circuit
Time Circuit
Time Circuit
Flux Capacitor
DeLorean
Flux Capacitor
Nuclear Reactor
Time Circuit
Time Jump
Engine
Miles
Per
Hour
Fuel
Liter
Flux Capacitor
Tank
Plutonium Chamber
Plutonium Pellet
Nuclear reactor
GigaWatt
Time Circuit
TimeStamp
Plutonium Chamber
Plutonium Pellet
Nuclear reactor
GigaWatt
Nuclear Reactor
Time Jump
Engine
Miles
Per
Hour
Fuel
Liter
Flux Capacitor
Tank
Time Circuit
TimeStamp
DeLorean
Vertical Slicing
Chapter
Controller
persistence
DB
DeLorean
persistence
Controller
DB
DeLorean
Nuclear
Reactor
persistence
Controller
DB
DeLorean
Nuclear
Reactor


persistence
Controller


persistence
DB
DeLorean
Nuclear
Reactor
Controller
persistence
Controller



2 microservices
with their
2 microservices

persistence
DB
DeLorean
Nuclear
Reactor
Controller
persistence
Controller
DB


DB
DB


DeLorean
Nuclear
Reactor
Controller
persistence
persistence
Controller
Ports & Adapters
Chapter
DB
SPI
Nuclear
Reactor
REST
API
DB
SPI
Delorean
REST
API
SPI


Delorean

Nuclear
Reactor
REST
Client
Ports & Adapters
Nuclear
Reactor
Delorean
API
to the rescue!
SPI
Inspired by Alistair Cockburn's pattern

Port
Adapter
Client
REST
INPROC
DB
SPI
Nuclear
Reactor
REST
API
DB
SPI
Delorean
REST
API
SPI


DB
SPI
Nuclear
Reactor
REST
API
DB
SPI
Delorean
SPI
API
INPROC


Anticorruption layer
INPROC (infrastructure)
SPI
API
GigaWatts
M Horse
Power
GigaWatts
NuclearReactorAdapter
(impl)
GeneratePower
ACL
Domain
Domain
Delorean
Nuclear Reactor
M Horse
Power
NuclearReactor
Hived Modular Monolith
Chapter
Fuel
Liter
Flux Capacitor
Tank
Engine
Miles
Per
Hour
Time Jump
Time Circuit
Time
Stamp
Plutonium Chamber
GigaWatt
Nuclear reactor
Plutonium Pellet
DeLorean
Time Circuit
Nuclear Reactor
Nuclear Reactor
DeLorean
Flux Capacitor
Time Circuit
Plutonium Chamber
Plutonium Pellet
Nuclear reactor
GigaWatt
Time
Stamp
Time Circuit
Engine
Miles
Per
Hour
Tank
Fuel
Liter
Time Jump
Flux Capacitor
Nuclear Reactor
DeLorean
Flux Capacitor
Time Circuit
Engine
Tank
Miles
Per
Hour
Fuel
Liter
Flux Capacitor
Time Jump
Plutonium Chamber
Plutonium Pellet
Nuclear reactor
GigaWatt
Time
Stamp
Time Circuit
DeLorean
Flux Capacitor
Plutonium Pellet
Nuclear reactor
GigaWatt
Plutonium Chamber
Nuclear Reactor
Engine
Tank
Miles
Per
Hour
Fuel
Liter
Time Jump
Flux Capacitor
TimeStamp
Time Circuit
Time Circuit
Flux Capacitor
Time Circuit


Modularization Strategy
Nuclear
Reactor
DeLorean
Time
Circuit
Flux
Capacitor
?
?
?
?
Scale-out
Chapter
cpu usage
50%
25%
75%
Nuclear
Reactor
DeLorean
Time
Circuit
Flux
Capacitor
50%
25%
75%
Nuclear
Reactor
DeLorean
Flux
Capacitor
Time
Circuit
cpu usage


ACL
SPI
DB
SPI
INPROC
REST
API
delorean
DB
SPI
nuclear
reactor
API


ACL
SPI
DB
SPI
INPROC
REST
API
delorean
API
DB
SPI
REST
nuclear
reactor
1


ACL
SPI
DB
SPI
INPROC
REST
API
delorean
API
DB
SPI
REST
nuclear
reactor
2
1


ACL
SPI
DB
SPI
CLIENT
REST
API
delorean
API
DB
SPI
REST
nuclear
reactor
2

API
DB
SPI
REST
ACL
SPI
DB
SPI
CLIENT
REST
API
delorean
nuclear
reactor
µ
nuclear reactor
µ
delorean
3
HTTP
DeLorean
Flux Capacitor
Time Circuit
Nuclear Reactor


DeLorean
Flux Capacitor
Time Circuit
Nuclear Reactor

Test Slicing
Chapter
YOUR Test Suite may be
a hidden monolith...
Production code
TESTS
The hidden Monolith
Production code
TESTS
Tests must be modularized
Production code
TESTS
with the same level of quality as the production code
stubs
stubs
stubs
Conclusion
Chapter

Microservices-ready
Modular Monolith


a fractal pattern

Controller
API
Nuclear
Reactor
SPI
persistence
DB
persistence
Controller
DB
SPI
API
DeLorean

INPROC Ports & Adapters
Controller
API
Nuclear
Reactor
SPI
persistence
DB
API
persistence
Controller
DB
SPI
API
DeLorean
InPROC
SPI

INPROC Ports & Adapters
InPROC
SPI
persistence
Controller
DB
SPI
API
DeLorean
API
Controller
API
Nuclear
Reactor
SPI
persistence
DB


Julien Topçu
Thomas Pierrain
@tpierrain.bsky.social
@Julientopcu.com


END => OLD
























Controller
Persistence
Service
Controller
Persistence
Service
{}
{}
{}
Controller
Persistence
Service
{}
{}
{}
{}
{}

Controller
Persistence
Service
{}
{}
{}
{}
{}

Controller
Persistence
Domain
Adapter
Adapter
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
SPI
API
{}


Classical modules
are not isolated enough!
designed to be easily extracted!
Highly Bounded modules
loosely coupled to each other
Better Encapsulation makes
modules easier to extract later
Encapsulation is gold...
for enabling change
Domain
Adapter
Adapter
SPI
API
Ports & Adapters
to the rescue!
Alistair Cockburn's pattern
DB
SPI
Nuclear
Reactor
REST
API
DB
SPI
Delorean
REST
API
DB
SPI
REST
API
DB
SPI
REST
API
Nuclear
Reactor
Delorean
DB
SPI
REST
API
DB
SPI
REST
ACL
SPI
INPROC
API
Nuclear
Reactor
Delorean
SPI
Delorean Module
Domain
M Horse
Power
generatePower()
Nuclear
Reactor
API
Nuclear Reactor
Domain
GigaWatts
generatePower()
generatePower
Nuclear
Reactor
Controller
persistence
DB
DeLorean
persistence
Controller
DB
API
SPI
SPI
API
Nuclear
Reactor
Controller
persistence
DB
DeLorean
persistence
Controller
DB
InPROC
Bounded Context powered microservices
Flux Capacitor
space-time continuum
Time Jump
Flux Capacitor
Zoned
Date
Time Circuit
Time Circuit
Flux Capacitor
space-time continuum
Time Jump
Flux Capacitor
Time Circuit
Time Circuit
Zoned
Date
boundaries can be blurry
Flux Capacitor
space-time continuum
Time Jump
Flux Capacitor
Zoned
Date
Time Circuit
Time Circuit
Date?
Bounded-contexts Design
can be incorrect
Bounded-contexts Design
can be incorrect
Flux Capacitor
Time Circuit
µ
Flux capacitor
µ
Time circuit
Bounded-contexts Design
can be incorrect
µ
Flux capacitor
µ
Time circuit
µ
DeLorean
µ
Nuclear Reactor
Bounded-contexts Design
can be incorrect
All models are wrong...
Bounded-Contexts
won’t save...
badly designed

Modular Monolith
Distributed systems are
(too) expensive to modify
experimentation Space
with low-cost mistakes
DeLorean
Flux Capacitor
Plutonium Pellet
Nuclear reactor
GigaWatt
Plutonium Chamber
Nuclear Reactor
Engine
Tank
Speed
Fuel
Level
space-time continuum
Time Jump
Flux Capacitor
Zoned
Date
Time Circuit
Time Circuit
{}
space-time continuum
Engine
Time Circuit
Tank
TimeStamp
Fuel
Level
GigaWatt
Speed
Time Jump
Nuclear Reactor
Plutonium Chamber
Plutonium Pellet
Flux Capacitor
On commence par quoi ? La stratégie
First Hexagon
Nuclear reactor
Split Persistence
Nuclear reactor
Split Controller
Nuclear reactor
Vertical Slicing
Nuclear reactor
Comment on connect Nuclear reactor => legacy
Communication inter-module:
Archi hex INPROC Adapter
Comment l'implémenter ?
ACL Nuclear Reactor => Legacy
Que faire ensuite ?
Fast Forward Vertical slicing de Time Circuit
Conformist Legacy => Time Circuit
Que faire ensuite ?
Fast Forward Vertical slicing de DeLorean et Flux Capacitor
SK Delorean <=> FluxCapacitor
Recap method Brown Field pour monolith modulaire
On veut sortir un module mais on active le reseau sur place pour découvrir des prbs potentiels
Les diagrammes de scale-out avant de sortir en microservice
On découvre la chatiness
On fixe la chatiness et on sort en microservice
Nouveau pb: pas assez de plutonium
Context Map scale-in Hydrogenator
Montrer le côté fractal
GreenField
On a corrigé le probleme !
On peut retourner dans le futur
On revient car on a crée une catastrophe avec notre conversation actuelle
Avoid multi team
Monolith Inertia
Monolith Inertia
Conclusion
* missing link
* sweat spot erreur low cost
* TTM
* tu peux changer la stratégie de deploiement sans changer le design
* Model first, deploy as you wish
{}
Engine
Time Circuit
Tank
TimeStamp
Fuel
Liter
Time Jump
Nuclear Reactor
Delorean
Plutonium Pellet
Flux Capacitor
GigaWatt
Miles
Per Hour
{}
Engine
Time Circuit
Tank
TimeStamp
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
GigaWatt
Fuel
Liter
Delorean
Miles
Per Hour
{}
Engine
Time Circuit
Tank
TimeStamp
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
GigaWatt
Fuel
Liter
Delorean
Miles
Per Hour
{}
Engine
Time Circuit
Tank
TimeStamp
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
GigaWatt
Fuel
Liter
Delorean
Miles
Per Hour
{}
Engine
Time Circuit
Tank
TimeStamp
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
GigaWatt
Fuel
Liter
Delorean
Miles
Per Hour
{}
Engine
Tank
TimeStamp
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
GigaWatt
Time Circuit
Fuel
Liter
Delorean
Miles
Per Hour
{}
Engine
Tank
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
GigaWatt
Time Circuit
Fuel
Liter
Delorean
TimeStamp
Miles
Per Hour
{}
Engine
Tank
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
GigaWatt
Time Circuit
Fuel
Liter
Delorean
TimeStamp
Miles
Per Hour
{}
Engine
Tank
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
Time Circuit
Fuel
Liter
Delorean
TimeStamp
GigaWatt
Miles
Per Hour
{}
Engine
Tank
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
Time Circuit
Fuel
Liter
Delorean
TimeStamp
GigaWatt
Miles
Per Hour
{}
Engine
Tank
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
Time Circuit
Fuel
Liter
Delorean
TimeStamp
GigaWatt
Miles
Per Hour
{}
Engine
Tank
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
Time Circuit
Fuel
Liter
Delorean
TimeStamp
GigaWatt
Miles
Per Hour
Delorean
Engine
Time Circuit
Tank
TimeStamp
Fuel
Liter
GigaWatt
Miles
Per Hour
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
Physics Elements
Time Travel
DeLorean
Engine
Time Circuit
Tank
space-time continuum
Time Jump
Nuclear Reactor
Delorean
Plutonium Pellet
Flux Capacitor
TimeStamp
Fuel
Level
Speed
GigaWatt
µ
µ
µ

Physics Elements
Time Travel
DeLorean
Engine
Time Circuit
Tank
space-time continuum
Time Jump
Nuclear Reactor
Plutonium Chamber
Plutonium Pellet
Flux Capacitor
TimeStamp
Fuel
Level
Speed
GigaWatt
µ
µ
µ
Time Travel
DeLorean
Engine
Time Circuit
Tank
space-time continuum
Time Jump
Nuclear Reactor
Plutonium Chamber
Plutonium Pellet
Flux Capacitor
µ
µ
Physics Elements
µ
TimeStamp
Fuel
Liter
GigaWatt
Miles
Per Hour
Time Travel
DeLorean
Engine
Time Circuit
Tank
space-time continuum
Time Jump
Nuclear Reactor
Plutonium Chamber
Plutonium Pellet
Flux Capacitor
µ
µ
Physics Elements
µ
Date
Time
GigaWatt
Fuel
Liter
Miles
Per Hour
Physics Elements
Time Travel
DeLorean
Engine
Time Circuit
Tank
space-time continuum
Time Jump
Nuclear Reactor
Plutonium Chamber
Plutonium Pellet
Flux Capacitor
TimeStamp
Fuel
Level
Speed
GigaWatt
µ
µ
µ
Physics Elements
Time Travel
DeLorean
Engine
Time Circuit
Tank
space-time continuum
Time Jump
Nuclear Reactor
Plutonium Chamber
Plutonium Pellet
Flux Capacitor
TimeStamp
Fuel
Level
Speed
GigaWatt
µ
µ
µ
Delorean
Engine
Time Circuit
Tank
TimeStamp
Fuel
Liter
GigaWatt
Miles
Per Hour
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
Delorean
Engine
Time
Circuit
Tank
TimeStamp
Fuel
Liter
GigaWatt
Miles
Per Hour
Time Jump
Nuclear Reactor
Plutonium Pellet
Flux Capacitor
Controller
Persistence
Domain
Adapter
Adapter
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
API
SPI
Time Travel
Time Jump
Nuclear reactor
Plutonium Chamber
Plutonium Pellet
Flux Capacitor
Zoned
Date
Fuel
Level
Speed
GigaWatt
Physics Elements
space-time continuum
Engine
Time circuit
Tank
DeLorean
are not a design strategy...
but rather a deployment one

allows room for reversible mistakes


the uncertainty of our design
helps us better manage


DB
DB
C
P
C
P
DB
DB
C
P
C
P
INP
HIVED Modular monolith is a more supple design when dealing with uncertainty and makes the boundaries between the different business concerns explicit, helping us to do better choices
There is a lot of reasons to split into services. If we don't prepare the modules for extraction is dramatically more costly
Extractable bounded modules:
=> Vertical Slicing (including DB + tests)
=> InProc Ports & Adapters (no direct dependencies)
Distributed systems are
(too) expensive to modify

Booking
ACL
CF
CF
Money
Search
the MISSING LINK between
strategic design and deployment strategies
Live Coding The Hive: building a microservices-ready modular monolith
By Julien Topçu
Live Coding The Hive: building a microservices-ready modular monolith
After a decade, the industry is realizing that poorly designed microservices can easily transform into a distributed monolith, even more problematic than the spaghetti monolith they aimed to address. To tackle this issue, the concept of a modular monolith is emerging as an alternative approach. However, the challenge still lies in effectively splitting it without falling into the pitfall of a tightly coupled and rigid system. How to modularize it right while dealing with the growing complexity of your system? How to survive beyond our modeling debt and take control back? Discover the Hive architecture style which decouples your deployment strategy - modular monolith or microservices - from the design of your software, embracing the “Build once, Deploy as you wish” principle. The Hive pattern will bring you a supple and scalable design that stands resilient in the face of evolving challenges for brown or greenfield products.
- 35