Base d'un monolithe modulaire
Meetup Aix/Marseille
@thecamp
10 Octobre 2019
par @timbarray
Un peu
d'histoire
Besoin d'organisation
MVC
Application MVC
Vue
Model
Organisation verticale
WTF ?
Cadre
Un dev devant son /src
Organisation dans Symfony
sf1
Sf2
Sf4
plugins
bundles
I see bundles everywhere
Peur du changement
Organisation dans Symfony
sf1
Sf2
Sf3
Sf4
plugins
bundles
AppBundle
App
Microservices
Les joies du réseau
Réduire la boucle
de feedback
Liberté bordélique
vs
Contrainte organisée ?
Définir des
frontières locales
Un dossier par module
La règle :
Aucun appel à une classe
d'un autre module
Deptrac
Contrôler nos ouvertures
Ouvrir un module
Privé
Public
Contrat
Liberté
Exemple
Payment propose
Basket contractualise son besoin
PaymentService::pay(int $amount): PaymentResult
PaymentGateway::pay(int $amount): bool
PaymentModuleGateway::pay(int $amount): bool
Basket implémente son besoin via la proposition de Payment
CI Failure
Dependencies Whitelist
Migration microservice clé en main
Merci Symfony
Règles du
Monolithe club
- On contractualise les appels inter modules
- On utilise un ACL pour passer d'un module à un autre