Microservices depuis les tranchées
REX du passage d’un monolithe à une architecture orientée microservices
Me, myself & I
Le contexte
One Team at Uber is Moving from Microservices to Macroservices
http://highscalability.com/blog/2020/4/8/one-team-at-uber-is-moving-from-microservices-to-macroservic.html
Pourquoi les microservices ?
● Capacité à livrer de façon indépendante et (plus) rapide
● Un temps de démarrage plus court
● Une base de code plus petite
● “Feature Teams”
● Pouvoir refondre un legacy de façon incrémentale
Mais aussi:
● adapter la techno au besoin
● mise à l’échelle / résilience
Microservices
Quatre axes de maturité
Les joies d’un système distribué
Prérequis
✓ Découper le système en
domaine
Prérequis
✓ Découper le système en
domaine
Prérequis
✓ Découper le système en
domaine
✓ Assurer l’autonomie et
la résilience
Prérequis
✓ Découper le système en
domaine
✓ Assurer l’autonomie et
la résilience
Prérequis
✓ Découper le système en
domaine
✓ Assurer l’autonomie et
la résilience
✓ Adapter les technos aux
besoins
Prérequis
✓ Découper le système en
domaine
✓ Assurer l’autonomie et
la résilience
✓ Adapter les technos aux
besoins
Prérequis
✓ Découper le système en
domaine
✓ Assurer l’autonomie et
la résilience
✓ Adapter les technos aux
besoins
✓ Maintenir la qualité du
système par les tests https://martinfowler.com/articles/microservice-testing
Continuous Delivery
Prérequis
✓ Continuous Integration
Prérequis
✓ Continuous Integration
✓ Trunk Based Dev +
Feature Toggle
Prérequis
✓ Continuous Integration
✓ Trunk Based Dev +
Feature Toggle
✓ Pouvoir livrer
facilement
Prérequis
✓ Continuous Integration
✓ Trunk Based Dev +
Feature Toggle
✓ Pouvoir livrer
facilement
✓ Livrer doit être un non
évènement
Prérequis
✓ Continuous Integration
✓ Trunk Based Dev +
Feature Toggle
✓ Pouvoir livrer
facilement
✓ Livrer doit être un non
évènement
✓ Avoir une approche
DevOps
Les joies de la collaboration
Prérequis
✓ Organisation distribuée
https://www.thoughtworks.com/insights/blog/demystifying-conways-law
Prérequis
✓ Organisation distribuée
✓ Découpée en petites équipes
autonomes
Prérequis
✓ Organisation distribuée
✓ Découpée en petites équipes
autonomes
✓ Décide des standards
Prérequis
✓ Organisation distribuée
✓ Découpée en petites équipes
autonomes
✓ Décide des standards
✓ Communique sur les pratiques
et outils
Prérequis
✓ Organisation distribuée
✓ Découpée en petites équipes
autonomes
✓ Décide des standards
✓ Communique sur les pratiques
et outils
Prérequis
✓ Organisation distribuée
✓ Découpée en petites équipes
autonomes
✓ Décide des standards
✓ Communique sur les pratiques
et outils
✓ Organisation auto apprenante
“ Software development is a learning process.
Working code is a side effect.”
albertobrandolini - @ncraft 17’
Production
Les prérequis
✓ Pouvoir explorer les
logs
Les prérequis
✓ Pouvoir explorer les
logs
✓ Surveiller l’état du
système
Les prérequis
✓ Pouvoir explorer les
logs
✓ Surveiller l’état du
système
✓ Alerting
Les prérequis
✓ Une Approche DevOps
✓ Pouvoir explorer les
logs
✓ Surveiller l’état du
système
✓ Alerting
✓ Maîtriser les
healthchecks
Les prérequis
✓ Une Approche DevOps
✓ Pouvoir explorer les
logs
✓ Surveiller l’état du
système
✓ Alerting
✓ Maîtriser les
healthchecks
✓ DevOps !
Conclusion
C’est bien
● Extraire du monolith
● Isolation des sous
domaines
● Livrer plus vite
● Facilité à remplacer un
microservice
● Expérimenter
● Remplis le CV
● Il ne faut pas sous
estimer la complexité
d’un système distribué
○ Ex. les transactions
● Il faut un excellent
niveau technique
● Et une organisation au
même niveau
mais
Documentation
https://docs.microsoft.com/en-us/azure/architecture/patterns/
https://azure.microsoft.com/en-us/resources/infographics/cloud-design-patterns/
Merci ! Des questions ?
Microservices depuis les tranchées

Microservices depuis les tranchées