Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Un monolith microservice ready – Orange Dev Test Days 2018
Search
Arnaud LEMAIRE
October 16, 2018
Programming
8
250
Un monolith microservice ready – Orange Dev Test Days 2018
Arnaud LEMAIRE
October 16, 2018
Tweet
Share
More Decks by Arnaud LEMAIRE
See All by Arnaud LEMAIRE
Intervention Michelin DORD
lilobase
0
40
The strategies behind ddd – AdeoDevSummit 2022
lilobase
6
1.2k
Let's reset Agile at Scale — Lean&Agile day Michelin 2022
lilobase
2
240
Sunday, retour d’expérience sur la construction d’une entreprise attractive pour les techs – Tech.rocks 2021
lilobase
1
120
Le projet legacy, quelles stratégies pour s'en sortir ? – Software Crafts·wo·manship Rennes juin 2021
lilobase
4
540
Réconcilier architecture logicielle & problématiques métiers : une introduction au Domain Driven Design – Blend Web Mix 2021
lilobase
5
990
La qualité d’aujourd’hui est la productivité de demain — Orange Innovation School mars 2021
lilobase
1
520
Et si on redémarrait l'agile (à l'échelle) – Agile Niort 2021
lilobase
2
1.1k
Le projet Legacy : quelles stratégies pour s'en sortir ? — ATBDX 2020
lilobase
2
830
Other Decks in Programming
See All in Programming
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
720
Elm Form Validation
bkuhlmann
0
510
2 週間で Twitter Bot を作ってみた
contour_gara
0
270
Git Lint
bkuhlmann
4
750
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
530
Java 22 Overview
kishida
1
180
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
450
データアナリストが行うDatabricksを活用したETLの自動化事例
shinoa
0
260
코틀린으로 멀티플랫폼 만들기
pangmoo
0
150
Designing for tomorrow's programming workflows
honnibal
PRO
2
130
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
200
What We Can Learn From OSS
inouehi
0
420
Featured
See All Featured
Designing with Data
zakiwarfel
96
4.8k
Infographics Made Easy
chrislema
238
18k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
A Modern Web Designer's Workflow
chriscoyier
689
190k
What's in a price? How to price your products and services
michaelherold
237
11k
Web Components: a chance to create the future
zenorocha
305
41k
How STYLIGHT went responsive
nonsquared
92
4.8k
Designing for Performance
lara
601
67k
BBQ
matthewcrist
80
8.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
241
1.2M
Facilitating Awesome Meetings
lara
42
5.6k
Transcript
Monolith Microservices ready™ @Lilobase
Complexity is non-linear Complexity System size
Distributed doghouse
-Simon Brown « If you can’t build a monolith, what
makes you think micro-services are the answer ? »
Monolith Microservices -Alvaro Sanchez
-Melvin Conway « organizations which design systems ... are constrained
to produce designs which are copies of the communication structures of these organizations »
-Simon Brown
-Simon Brown
-Simon Brown 1 2
The problem has never been the monolith, but having a
single coupled model
Multiple models lives in your application Invoice Catalog Payment Product
Product Product This is not the same product
The primary coupling in software architecture is when concepts from
separate contexts are entangled
We usually don’t get our models right on the first
try. This is where having a single code base & deployment unit helps with the requested refactoring
Let’s create some hard boundaries
Domain domain interface concrete implementation of the domain interface technical
collaborator
Service A API Service B
Internal API Service A Service B External API Anti-Corruption Layer
(Belong to the infrastructure)
Facade Parent Injector S1 S2
Facade Parent Injector S1 HTTP connector
« Two micro services and their shared database » -Mathias
Verraes
Messages brokers are also datasources
-Cyrille Dupuydauby « Years of fight against ‘DB as a
MoM’ anti- pattern have finally paid off: I am now fighting against ‘MoM as a DB’ anti-pattern. »
Events are not created equal Invoice Catalog Payment Inventory
What about processes
Event or Command driven ? Agent Acteur
Orchestration or choreography ? Orchestration Choreography
Exemple of an event driven orchestrated pattern : the macdonald’s
pattern Counter Ice Cream Hamburgers Salads New Order —— —— —— New Order —— —— —— New Order —— —— ——
Counter Ice Cream Hamburgers Salads
Counter Ice Cream Hamburgers Salads Each time we receive an
item, we check if the order is complete New Order —— —— ——
A time bomb for the optimists
-Graham Lea « They can be hard to see, and
they can sink your app »
Dependencies, even more chances to get failures
Fault tolerance • Rate-limiter • Automatic retry with exponential backoff
• Response caching • BulkHead pattern • Circuit-breaker • Load Balancing Hystrix, Resilience4j
The micro services iceberg
Distributed transaction
Saga T1 T2 T3
Saga T1 T2 T3 C1 C3
Saga T1 T2 T3 T2 Idempotence
PC PC PC Two phases commits T T T
UI Driven Consistency
-Simon Brown
If you cannot deploy independently your services, you don’t have
a micro-service architecture
Going further • Applying the Saga Pattern • Caitie McCaffrey
• Distributed Transactions: The Icebergs of Microservices • Graham Lea • Application Resilience Engineering & Operations at Netflix • Ben Christensen • arpinum/alexandria-api