Base d'un monolithe modulaire
Meetup Aix/Marseille
@thecamp
10 Octobre 2019
par @timbarray
![](https://media2.giphy.com/media/4RQHeB61YyNQk/giphy.gif)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/846450/images/6630126/Screenshot_2019-10-08_The_Bundle_System__Symfony_Bundles_Docs__1_.png)
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