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

  1. On contractualise les appels inter modules
  2. On utilise un ACL pour passer d'un module à un autre

Soyez fier de votre monolithe

Merci

Made with Slides.com