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