SlideShare une entreprise Scribd logo
1  sur  47
DANS LE VOUS N'ÊTES
« Le Park est ouvert
 » 🩖🩕🐱
@BreizhCamp 2023
Julien BURET
Principal Engineer François NOLLEN
Staff Engineer
Dev Rel

A la maniùre du monomythe de J. Campbell
Illustra(on
:
h.ps://1000idcg.com/le-heros-aux-mille-et-un-visages/
Illustra(on
:
h.ps://www.reputa(on365.eu/analyses-decryptages/ïŹllon-heros-campbellien-malgre-lui/
GĂ©nĂšse du Park
Illustra(on
:
h.ps://artdepartmental.com/blog/jurassic-park-produc(on-design/
LE MONDE ORDINAIRE
01
Illustration
:
https://unsplash.com/fr/photos/ZU62GJP-XC4
7
Que fait-on naturellement quand un systÚme gagne en complexité,
comporte de nombreux applicatifs, et que les Ă©quipes se multiplient ?
On organise des dépÎts Git, des usines logicielles, des
environnements de travail pour chaque composant ou Ă©quipe
Chacun chez soi, les dinosaures seront bien gardĂ©s ! đŸŠ•đŸŠđŸŠ€đŸąđŸŠŽ
QUAND UN PROJET DEVIENT COMPLEXE

8
‱ Chaque application Ă©tait sous la responsabilitĂ© d'une Ă©quipe
‱ Chaque Ă©quipe ses dĂ©pĂŽts Git, ses outils, sa CI/CD
‱ Peu de contributions entre Ă©quipes
‱ Evolutions transverses : beaucoup d’efforts
de coordination/synchronisation
‱ Effet « truck factor »
AVANT SNCF CONNECT

L’APPEL DE L’AVENTURE
02
Illustration
:
https://unsplash.com/fr/photos/3OiYMgDKJ6k
11
MONOREPO ET CO-LOCALISATION
🩕
App 1
🩎
Lib 2
🐊
App 2
đŸŠ€
Lib 1
🐱
App 3
🩕
App 1
đŸŠ€
Lib 1
🩎
Lib 2
🐊
App 2
🐱
App 3
12
MONOREPO ET DÉPENDANCES
🩕
App 1
🩎
Lib 2
🐊
App 2
đŸŠ€
Lib 1
🐱
App 3
🩕
App 1
đŸŠ€
Lib 1
🩎
Lib 2
🐊
App 2
🐱
App 3
v1
v2
v3
v2
13
MONOREPO ET DÉPLOIEMENT
!
App 1
!
Lib 2
!
App 2
!
Lib 1
"
App 3
v1
v2
v3
v2
!
App 1
!
Lib 1
!
Lib 2
!
App 2
"
App 3
Binary repo (Nexus, Artifactory, etc.)
Deploy 🚀 Deploy 🚀
14
PROMESSES DU MONOREPO
đŸ„” Ajout de bibliothĂšque partagĂ©e
😈 Tentation de dupliquer du code
đŸ˜”đŸ’« Outillages/pratiques hĂ©tĂ©rogĂšnes
đŸ„” Impacts difficiles Ă  cerner,
coûteux à vérifier
đŸ˜”đŸ’« Historique distribuĂ©
💣 Gestion des versions (et conflits)
💚 Ajout de bibliothĂšque partagĂ©e
💚 Pas de duplication de code
💚 Outillages/pratiques homogùnes
💚 Impact faciles Ă  vĂ©rifier
au sein du monorepo
💚 Historique unique
💚 Une version de chaque composant
LES RÉTICENCES
03
Illustration
:
https://www.fredzone.org/spielberg-voulait-couper-jeff-goldblum-de-jurassic-park-233
16
đŸ€” Monorepo
= monolithe ?
đŸ€” Monorepo
vs. micro-services ?
DES INQUIÉTUDES SUR L’ARCHITECTURE
Illustration
:
https://monorepo.tools/
17
‱ MaintenabilitĂ© :
‱ On va modifier mon code
sans que je le sache ?!
‱ ElasticitĂ© (Ă  grande Ă©chelle) :
‱ Performances ?
‱ CoĂ»ts ?
D’AUTRES INQUIÉTUDES
Illustration
:
https://media.paperblog.fr/i/770/7708974/jurassic-park-L-Adq2yp.gif
18
PLUS SIMPLE PLUS ACCESSIBLE PLUS VERT PLUS PERSONNALISÉ
NOTRE NOUVEAU SERVICE NUMÉRIQUE POUR LES
PETITS ET GRANDS TRAJETS !
de billets vendus en 2022,
l’équivalent de 6,5 stades de
France remplis chaque jour !
1 Mds
de visites en 2022: c’est 3
millions par jour !
>190M
19
PLUS SIMPLE PLUS ACCESSIBLE PLUS VERT PLUS PERSONNALISÉ
NOTRE NOUVEAU SERVICE NUMÉRIQUE POUR LES
PETITS ET GRANDS TRAJETS !
22 RÉSEAUX DE TRANSPORTS
couvrant 500+ COMMUNES
TITRES ÎLE-DE-FRANCE
vendus en 2022 (tickets seuls
ou carnets et pass Navigo)
700 000
ENCOURAGEMENTS
04
Illustration
:
https://photo.programme-tv.net/jurassic-park-mais-que-deviennent-les-enfants-de-la-saga-11131
21
🚹 Une architecture complexe, des enjeux et une audience
qui justifient une démarche ambitieuse
🏅 Le succĂšs de nos expĂ©riences passĂ©es (Ă  plus petite Ă©chelle)
avec le Cloud, Gradle, Terraform, Monorepo

🚀 Partir « from scratch » avec une stack Ă  l'Ă©tat de l’art
OUVERTURE, CONFIANCE, AUDACE ?
Entrée dans le
Monorepo !
Illustration
:
https://www.rejouisciences.uliege.be/cms/c_11420249/fr/jurassic-park
LE SEUIL DE L’AVENTURE
05
23
‱ CĂŽtĂ© mobile, une technologie cross-plateforme : Flutter
‱ Une seule application web en Next.js
‱ Un Back-For-Front commun entre web & mobile
‱ Des SDKs clients pour faciliter l’intĂ©gration des APIs
QUELQUES PRINCIPES DE DÉMARRAGE
APERÇU DE NOTRE STACK TECHNIQUE
24
25
DÉMARRAGE DES DÉVELOPPEMENTS SNCF CONNECT !
Monorepo
Infra-as-Code
1 feature branch =
1 environnement
(mobile + web + back + infra)
Illustration
:
https://tenor.com/fr/view/jurassicpark-gif-22932656
EPREUVES, ALLIÉS & ENNEMIS
06
Illustration
:
https://unsplash.com/fr/photos/Ns8trMR4Om8
27
‱ Un processus d’intĂ©gration pour favoriser l’inner source
‱ IntĂ©gration continue : le moins possible de « stock de code »
‱ Tests auto & Continuous Delivery : master toujours livrable en production
‱ Mise en place d’ADR (Architecture Decision Records)
Créa%on branche
& env. dédié
Merge Request
& revue par les
Référents
Tests sur l'env.
dédié
Merge sur
master & suppr.
env. dédié
LE DÉBUT DES AJUSTEMENTS 
POUR MAÎTRISER LA QUALITÉ
AU CƒUR DU DANGER
07
Illustration
:
https://www.bbc.com/afrique/monde-59416502
29
VUE DU PIPELINE DE DÉPLOIEMENT
Illustration
:
https://www.allocine.fr/article/fichearticle_gen_carticle=18630016.html
30
VUE DU CLUSTER KUBERNETES (PODS)
L’ÉPREUVE DU FEU
08
Illustration
:
https://mycomedy.fr/jurassic-park-les-coulisses-de-la-creation-du-t-rex/
32
‱ ArrivĂ©e massive de dĂ©veloppeurs 🚀
200 devs Mobile, Web, Back, Infra
‱ Equipes trĂšs hĂ©tĂ©rogĂšnes ⚠
‱ 300+ environnements en // 🚀
‱ IDEs Ă  bout de souffle đŸ„”
‱ CI en souffrance đŸ„”
‱ Tests auto parfois instables ⚠
L’ÉPREUVE DU PASSAGE À L’ÉCHELLE
Illustration
:
https://www.digitalspy.com/movies/a33561025/jurassic-world-3-set-photo-original-trilogy/
L’ÉLIXIR
09
Illustration
:
https://unsplash.com/fr/photos/oduOp0RlPf8
34
‱ Mise en place de maturations avec les rĂ©fĂ©rents 🏭
‱ Plus de rĂ©fĂ©rents đŸ‘„
‱ Plus de temps
pour les rĂ©fĂ©rents ⏳
‱ Task forces CI ⚡
et tests e2e đŸš„
CONTINUER D’AMÉLIORER, TOUJOURS
Illustration
:
https://www.slate.fr/story/102769/homme-dresser-velociraptors-jurassic-world
35
‱ Kotlin DSL
‱ Version catalog
‱ Conventions
‱ Build cache
‱ Configuration cache
‱ Gitlab cache
CÔTÉ BUILD GRADLE
Notre build
Gradle
Illustration
:
https://www.24heures.ch/les-dinosaures-sont-toujours-les-rois-du-monde-711946482684
36
‱ Algo de diff
‱ Marge Bot
‱ Code Owners
‱ (Merge Train)
CÔTÉ CI, PIPELINE & GITLAB
Notre CI
Illustration
:
https://www.slate.fr/story/102697/jurassic-park-world-erreur-nom
37
‱ Cloud AWS :
hard/soft limits & throttling
‱ QualitĂ© IaC
‱ Compte dĂ©diĂ©
‱ Tests auto en cible
‱ Orchestration Kubernetes
POINTS D’ATTENTION SUR L’INFRA
Le Cloud Les plafonds
Les coûts
(Notre infra)
38
GESTION DES ENVIRONNEMENTS & MERGE REQUESTS
‱ Extinction auto des envs
‱ Factorisation entre envs (Istio / Service Mesh)
‱ Liens entre Gitlab et JIRA
‱ Tableaux de bord : envs
‱ Tableaux de bord : merge requests
Illustration
:
https://www.cbsnews.com/pictures/jurassic-park-cast-where-are-they-now/
39
SUIVI DES ENVIRONNEMENTS & MERGE REQUESTS
Quelques mois
(et beaucoup de MEPs)
plus tard

Illustration
:
https://www.pixelcreation.fr/galerie/voir/jurassic-world/02-jurassic-world-main-street/
LE CHEMIN DU RETOUR
10
Illustration
:
https://www.fantrippers.com/fr/fanspots/isla-nublar/
42
‱ CrĂ©ation d’une filiĂšre Engineering Managers
‱ CrĂ©ation de bootcamps đŸ§‘đŸ« : des formations
pour développer sur tel ou tel applicatif
APRÈS LE LANCEMENT EN PRODUCTION

LE RETOUR DES HÉROS, TRANSFORMÉS
11
Illustra(on
:
h.ps://www.daily-movies.ch/jurassic-world-3-dominion
44
NOTRE BILAN MONOREPO SUR SNCF CONNECT
👍 Le Monorepo fonctionne : de trùs
nombreux développeurs travaillent sur la
mĂȘme codebase (avec davantage de contributions
du frontend au backend, du mobile au web, etc.)
🎓 Avec des efforts sur l’onboarding et la
formation continue
⚙ Avec des efforts sur l’automatisation et la
rationalisation de l’infra, du build, des outils
Illustration
:
https://www.purepeople.com/media/ariana-richards-sam-neill-et-joseph-maz_m7147405
AMÉLIORER LE MONDE ORDINAIRE
12
Illustration
:
https://autos.yahoo.com/jurassic-world-dominion-delayed-2022-074550242.html
46
ET POUR LA SUITE

‱ On a commencĂ© Ă  migrer dans le Monorepo
les briques historiques
‱ On reproduit la mĂȘme stratĂ©gie Monorepo
pour nos autres projets majeurs (hors SNCF Connect)
‱ On continue d’agrandir l’équipe (Nantes Paris Lille)
https://jobs.connect-tech.sncf/
đŸȘŽđŸȘŽđŸȘŽ
‱ Une approche Monorepo peut
rĂ©duire les « silos » 🧹 et amĂ©liorer
la collaboration des Ă©quipes ⚡
‱ Cela fonctionne Ă  grande Ă©chelle 🚀
‱ Sous rĂ©serve d’efforts continus đŸ’Ș
investir dans les outils ⚙
et les Ă©quipes đŸ«¶
/
https://www.alamyimages.fr/ensemble-de-divers-dinosaures-isoles-personnage-de-dessin-anime-sur-fond-blanc-illustration-image438458856.html
h"ps://jobs.connect-tech.sncf/

Contenu connexe

Tendances

Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Who is the Product Owner Anyway
Who is the Product Owner Anyway Who is the Product Owner Anyway
Who is the Product Owner Anyway Dave West
 
Managing requirements with user stories
Managing requirements with user storiesManaging requirements with user stories
Managing requirements with user storiesVishal Prasad
 
Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...
Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...
Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...Remo-tito Aguilar
 
User Story Mapping, Discover the whole story
User Story Mapping, Discover the whole storyUser Story Mapping, Discover the whole story
User Story Mapping, Discover the whole storyJeff Patton
 
Scrum in a page
Scrum in a pageScrum in a page
Scrum in a pageCvetan Saykov
 

Tendances (7)

Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Who is the Product Owner Anyway
Who is the Product Owner Anyway Who is the Product Owner Anyway
Who is the Product Owner Anyway
 
Managing requirements with user stories
Managing requirements with user storiesManaging requirements with user stories
Managing requirements with user stories
 
Scrum cheat sheet
Scrum cheat sheetScrum cheat sheet
Scrum cheat sheet
 
Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...
Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...
Theories of Learning, Emerging Technologies & Authoring Tools for Course Desi...
 
User Story Mapping, Discover the whole story
User Story Mapping, Discover the whole storyUser Story Mapping, Discover the whole story
User Story Mapping, Discover the whole story
 
Scrum in a page
Scrum in a pageScrum in a page
Scrum in a page
 

Similaire Ă  Dans le Monorepo vous n'ĂȘtes jamais seul, le Park est ouvert... 🩖🩕🐱 (@BreizhCamp 2023)

Monorepo & Monomythe (@Volcamp 2023)
Monorepo & Monomythe (@Volcamp 2023)Monorepo & Monomythe (@Volcamp 2023)
Monorepo & Monomythe (@Volcamp 2023)François
 
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouvertureGab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouvertureFactoVia
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023SpikeeLabs
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France François-Guillaume Ribreau
 
Cahier_Projets_FE-CORTES
Cahier_Projets_FE-CORTESCahier_Projets_FE-CORTES
Cahier_Projets_FE-CORTESFran CORTES
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprementGuillaume Collic
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsChristophe Villeneuve
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Publicis Sapient Engineering
 
Guide_de_survie_en_milieu_responsive
Guide_de_survie_en_milieu_responsiveGuide_de_survie_en_milieu_responsive
Guide_de_survie_en_milieu_responsiveNicolas Massouh
 
Guide de survie en milieu responsive - Paris Web 2013
Guide de survie en milieu responsive - Paris Web 2013Guide de survie en milieu responsive - Paris Web 2013
Guide de survie en milieu responsive - Paris Web 2013Guillaume Abel
 
Drupal, les hackers, la sécurité & les (trÚs) grands comptes
Drupal, les hackers, la sécurité & les (trÚs) grands comptesDrupal, les hackers, la sécurité & les (trÚs) grands comptes
Drupal, les hackers, la sécurité & les (trÚs) grands comptesJean-Baptiste Guerraz
 
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...OCTO Technology
 
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volutionLA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volutionOCTO Technology
 
La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code OCTO Technology
 
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTVISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTFactoVia
 
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...Publicis Sapient Engineering
 
Monitorez votre solution IoT avec Stream Analytics et Power BI
Monitorez votre solution IoT avec Stream Analytics et Power BIMonitorez votre solution IoT avec Stream Analytics et Power BI
Monitorez votre solution IoT avec Stream Analytics et Power BIJoël Crest
 
A la découverte de la réalité augmentée avec ARCore - Snowcamp.io
A la découverte de la réalité augmentée avec ARCore - Snowcamp.ioA la découverte de la réalité augmentée avec ARCore - Snowcamp.io
A la découverte de la réalité augmentée avec ARCore - Snowcamp.iojollivetc
 
SPA avec SignalR et Angular Js
SPA avec SignalR et Angular JsSPA avec SignalR et Angular Js
SPA avec SignalR et Angular JsMicrosoft
 
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019Oeil de Coach
 

Similaire Ă  Dans le Monorepo vous n'ĂȘtes jamais seul, le Park est ouvert... 🩖🩕🐱 (@BreizhCamp 2023) (20)

Monorepo & Monomythe (@Volcamp 2023)
Monorepo & Monomythe (@Volcamp 2023)Monorepo & Monomythe (@Volcamp 2023)
Monorepo & Monomythe (@Volcamp 2023)
 
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouvertureGab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
 
Cahier_Projets_FE-CORTES
Cahier_Projets_FE-CORTESCahier_Projets_FE-CORTES
Cahier_Projets_FE-CORTES
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applications
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
 
Guide_de_survie_en_milieu_responsive
Guide_de_survie_en_milieu_responsiveGuide_de_survie_en_milieu_responsive
Guide_de_survie_en_milieu_responsive
 
Guide de survie en milieu responsive - Paris Web 2013
Guide de survie en milieu responsive - Paris Web 2013Guide de survie en milieu responsive - Paris Web 2013
Guide de survie en milieu responsive - Paris Web 2013
 
Drupal, les hackers, la sécurité & les (trÚs) grands comptes
Drupal, les hackers, la sécurité & les (trÚs) grands comptesDrupal, les hackers, la sécurité & les (trÚs) grands comptes
Drupal, les hackers, la sécurité & les (trÚs) grands comptes
 
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
 
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volutionLA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en Ă©volution
 
La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code
 
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTVISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
 
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
XebiCon'16 : Xebia Labs : Les outils de déploiement sont morts avec les Conta...
 
Monitorez votre solution IoT avec Stream Analytics et Power BI
Monitorez votre solution IoT avec Stream Analytics et Power BIMonitorez votre solution IoT avec Stream Analytics et Power BI
Monitorez votre solution IoT avec Stream Analytics et Power BI
 
A la découverte de la réalité augmentée avec ARCore - Snowcamp.io
A la découverte de la réalité augmentée avec ARCore - Snowcamp.ioA la découverte de la réalité augmentée avec ARCore - Snowcamp.io
A la découverte de la réalité augmentée avec ARCore - Snowcamp.io
 
SPA avec SignalR et Angular Js
SPA avec SignalR et Angular JsSPA avec SignalR et Angular Js
SPA avec SignalR et Angular Js
 
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019
 

Plus de François

C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)
C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)
C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)François
 
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)François
 
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)François
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)François
 
REX Flutter SNCF Connect (@VivaTech 2022).pdf
REX Flutter SNCF Connect (@VivaTech 2022).pdfREX Flutter SNCF Connect (@VivaTech 2022).pdf
REX Flutter SNCF Connect (@VivaTech 2022).pdfFrançois
 
OpenSource & InnerSource pour accélérer les développements
OpenSource & InnerSource pour accélérer les développementsOpenSource & InnerSource pour accélérer les développements
OpenSource & InnerSource pour accélérer les développementsFrançois
 
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)François
 
Tock & MĂ©lusine REX IA Open Source #AIParis 2020
Tock & MĂ©lusine REX IA Open Source #AIParis 2020Tock & MĂ©lusine REX IA Open Source #AIParis 2020
Tock & Mélusine REX IA Open Source #AIParis 2020François
 
Conversational AI & Open Source #OSSPARIS19
Conversational AI & Open Source #OSSPARIS19Conversational AI & Open Source #OSSPARIS19
Conversational AI & Open Source #OSSPARIS19François
 
TOCK (The Open Conversation Kit) @ Meetup Open Transport
TOCK (The Open Conversation Kit) @ Meetup Open TransportTOCK (The Open Conversation Kit) @ Meetup Open Transport
TOCK (The Open Conversation Kit) @ Meetup Open TransportFrançois
 
Monitoring une recette DevOps
Monitoring une recette DevOpsMonitoring une recette DevOps
Monitoring une recette DevOpsFrançois
 
DevOps et tendances Monitoring
DevOps et tendances MonitoringDevOps et tendances Monitoring
DevOps et tendances MonitoringFrançois
 

Plus de François (12)

C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)
C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)
C'est une bonne situation ça, Staff Engineer ? 😉 (@DevoxxFR 2024)
 
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterHeroes 2024)
 
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)
Collecte unifiée Server-to-Server - Tealium SNCF Connect (@EBG 2023)
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
 
REX Flutter SNCF Connect (@VivaTech 2022).pdf
REX Flutter SNCF Connect (@VivaTech 2022).pdfREX Flutter SNCF Connect (@VivaTech 2022).pdf
REX Flutter SNCF Connect (@VivaTech 2022).pdf
 
OpenSource & InnerSource pour accélérer les développements
OpenSource & InnerSource pour accélérer les développementsOpenSource & InnerSource pour accélérer les développements
OpenSource & InnerSource pour accélérer les développements
 
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)
Mind your App Footprint đŸŸâšĄïžđŸŒ± (@FlutterConn 2023)
 
Tock & MĂ©lusine REX IA Open Source #AIParis 2020
Tock & MĂ©lusine REX IA Open Source #AIParis 2020Tock & MĂ©lusine REX IA Open Source #AIParis 2020
Tock & MĂ©lusine REX IA Open Source #AIParis 2020
 
Conversational AI & Open Source #OSSPARIS19
Conversational AI & Open Source #OSSPARIS19Conversational AI & Open Source #OSSPARIS19
Conversational AI & Open Source #OSSPARIS19
 
TOCK (The Open Conversation Kit) @ Meetup Open Transport
TOCK (The Open Conversation Kit) @ Meetup Open TransportTOCK (The Open Conversation Kit) @ Meetup Open Transport
TOCK (The Open Conversation Kit) @ Meetup Open Transport
 
Monitoring une recette DevOps
Monitoring une recette DevOpsMonitoring une recette DevOps
Monitoring une recette DevOps
 
DevOps et tendances Monitoring
DevOps et tendances MonitoringDevOps et tendances Monitoring
DevOps et tendances Monitoring
 

Dans le Monorepo vous n'ĂȘtes jamais seul, le Park est ouvert... 🩖🩕🐱 (@BreizhCamp 2023)

  • 1. DANS LE VOUS N'ÊTES « Le Park est ouvert
 » 🩖🩕🐱 @BreizhCamp 2023
  • 2. Julien BURET Principal Engineer François NOLLEN Staff Engineer Dev Rel
  • 3. 
A la maniĂšre du monomythe de J. Campbell Illustra(on : h.ps://1000idcg.com/le-heros-aux-mille-et-un-visages/
  • 7. 7 Que fait-on naturellement quand un systĂšme gagne en complexitĂ©, comporte de nombreux applicatifs, et que les Ă©quipes se multiplient ? On organise des dĂ©pĂŽts Git, des usines logicielles, des environnements de travail pour chaque composant ou Ă©quipe Chacun chez soi, les dinosaures seront bien gardĂ©s ! đŸŠ•đŸŠđŸŠ€đŸąđŸŠŽ QUAND UN PROJET DEVIENT COMPLEXE

  • 8. 8 ‱ Chaque application Ă©tait sous la responsabilitĂ© d'une Ă©quipe ‱ Chaque Ă©quipe ses dĂ©pĂŽts Git, ses outils, sa CI/CD ‱ Peu de contributions entre Ă©quipes ‱ Evolutions transverses : beaucoup d’efforts de coordination/synchronisation ‱ Effet « truck factor » AVANT SNCF CONNECT

  • 10. 11 MONOREPO ET CO-LOCALISATION 🩕 App 1 🩎 Lib 2 🐊 App 2 đŸŠ€ Lib 1 🐱 App 3 🩕 App 1 đŸŠ€ Lib 1 🩎 Lib 2 🐊 App 2 🐱 App 3
  • 11. 12 MONOREPO ET DÉPENDANCES 🩕 App 1 🩎 Lib 2 🐊 App 2 đŸŠ€ Lib 1 🐱 App 3 🩕 App 1 đŸŠ€ Lib 1 🩎 Lib 2 🐊 App 2 🐱 App 3 v1 v2 v3 v2
  • 12. 13 MONOREPO ET DÉPLOIEMENT ! App 1 ! Lib 2 ! App 2 ! Lib 1 " App 3 v1 v2 v3 v2 ! App 1 ! Lib 1 ! Lib 2 ! App 2 " App 3 Binary repo (Nexus, Artifactory, etc.) Deploy 🚀 Deploy 🚀
  • 13. 14 PROMESSES DU MONOREPO đŸ„” Ajout de bibliothĂšque partagĂ©e 😈 Tentation de dupliquer du code đŸ˜”đŸ’« Outillages/pratiques hĂ©tĂ©rogĂšnes đŸ„” Impacts difficiles Ă  cerner, coĂ»teux Ă  vĂ©rifier đŸ˜”đŸ’« Historique distribuĂ© 💣 Gestion des versions (et conflits) 💚 Ajout de bibliothĂšque partagĂ©e 💚 Pas de duplication de code 💚 Outillages/pratiques homogĂšnes 💚 Impact faciles Ă  vĂ©rifier au sein du monorepo 💚 Historique unique 💚 Une version de chaque composant
  • 15. 16 đŸ€” Monorepo = monolithe ? đŸ€” Monorepo vs. micro-services ? DES INQUIÉTUDES SUR L’ARCHITECTURE Illustration : https://monorepo.tools/
  • 16. 17 ‱ MaintenabilitĂ© : ‱ On va modifier mon code sans que je le sache ?! ‱ ElasticitĂ© (Ă  grande Ă©chelle) : ‱ Performances ? ‱ CoĂ»ts ? D’AUTRES INQUIÉTUDES Illustration : https://media.paperblog.fr/i/770/7708974/jurassic-park-L-Adq2yp.gif
  • 17. 18 PLUS SIMPLE PLUS ACCESSIBLE PLUS VERT PLUS PERSONNALISÉ NOTRE NOUVEAU SERVICE NUMÉRIQUE POUR LES PETITS ET GRANDS TRAJETS ! de billets vendus en 2022, l’équivalent de 6,5 stades de France remplis chaque jour ! 1 Mds de visites en 2022: c’est 3 millions par jour ! >190M
  • 18. 19 PLUS SIMPLE PLUS ACCESSIBLE PLUS VERT PLUS PERSONNALISÉ NOTRE NOUVEAU SERVICE NUMÉRIQUE POUR LES PETITS ET GRANDS TRAJETS ! 22 RÉSEAUX DE TRANSPORTS couvrant 500+ COMMUNES TITRES ÎLE-DE-FRANCE vendus en 2022 (tickets seuls ou carnets et pass Navigo) 700 000
  • 20. 21 🚹 Une architecture complexe, des enjeux et une audience qui justifient une dĂ©marche ambitieuse 🏅 Le succĂšs de nos expĂ©riences passĂ©es (Ă  plus petite Ă©chelle) avec le Cloud, Gradle, Terraform, Monorepo
 🚀 Partir « from scratch » avec une stack Ă  l'Ă©tat de l’art OUVERTURE, CONFIANCE, AUDACE ?
  • 21. EntrĂ©e dans le Monorepo ! Illustration : https://www.rejouisciences.uliege.be/cms/c_11420249/fr/jurassic-park LE SEUIL DE L’AVENTURE 05
  • 22. 23 ‱ CĂŽtĂ© mobile, une technologie cross-plateforme : Flutter ‱ Une seule application web en Next.js ‱ Un Back-For-Front commun entre web & mobile ‱ Des SDKs clients pour faciliter l’intĂ©gration des APIs QUELQUES PRINCIPES DE DÉMARRAGE
  • 23. APERÇU DE NOTRE STACK TECHNIQUE 24
  • 24. 25 DÉMARRAGE DES DÉVELOPPEMENTS SNCF CONNECT ! Monorepo Infra-as-Code 1 feature branch = 1 environnement (mobile + web + back + infra) Illustration : https://tenor.com/fr/view/jurassicpark-gif-22932656
  • 25. EPREUVES, ALLIÉS & ENNEMIS 06 Illustration : https://unsplash.com/fr/photos/Ns8trMR4Om8
  • 26. 27 ‱ Un processus d’intĂ©gration pour favoriser l’inner source ‱ IntĂ©gration continue : le moins possible de « stock de code » ‱ Tests auto & Continuous Delivery : master toujours livrable en production ‱ Mise en place d’ADR (Architecture Decision Records) CrĂ©a%on branche & env. dĂ©diĂ© Merge Request & revue par les RĂ©fĂ©rents Tests sur l'env. dĂ©diĂ© Merge sur master & suppr. env. dĂ©diĂ© LE DÉBUT DES AJUSTEMENTS 
POUR MAÎTRISER LA QUALITÉ
  • 27. AU CƒUR DU DANGER 07 Illustration : https://www.bbc.com/afrique/monde-59416502
  • 28. 29 VUE DU PIPELINE DE DÉPLOIEMENT Illustration : https://www.allocine.fr/article/fichearticle_gen_carticle=18630016.html
  • 29. 30 VUE DU CLUSTER KUBERNETES (PODS)
  • 31. 32 ‱ ArrivĂ©e massive de dĂ©veloppeurs 🚀 200 devs Mobile, Web, Back, Infra ‱ Equipes trĂšs hĂ©tĂ©rogĂšnes ⚠ ‱ 300+ environnements en // 🚀 ‱ IDEs Ă  bout de souffle đŸ„” ‱ CI en souffrance đŸ„” ‱ Tests auto parfois instables ⚠ L’ÉPREUVE DU PASSAGE À L’ÉCHELLE Illustration : https://www.digitalspy.com/movies/a33561025/jurassic-world-3-set-photo-original-trilogy/
  • 33. 34 ‱ Mise en place de maturations avec les rĂ©fĂ©rents 🏭 ‱ Plus de rĂ©fĂ©rents đŸ‘„ ‱ Plus de temps pour les rĂ©fĂ©rents ⏳ ‱ Task forces CI ⚡ et tests e2e đŸš„ CONTINUER D’AMÉLIORER, TOUJOURS Illustration : https://www.slate.fr/story/102769/homme-dresser-velociraptors-jurassic-world
  • 34. 35 ‱ Kotlin DSL ‱ Version catalog ‱ Conventions ‱ Build cache ‱ Configuration cache ‱ Gitlab cache CÔTÉ BUILD GRADLE Notre build Gradle Illustration : https://www.24heures.ch/les-dinosaures-sont-toujours-les-rois-du-monde-711946482684
  • 35. 36 ‱ Algo de diff ‱ Marge Bot ‱ Code Owners ‱ (Merge Train) CÔTÉ CI, PIPELINE & GITLAB Notre CI Illustration : https://www.slate.fr/story/102697/jurassic-park-world-erreur-nom
  • 36. 37 ‱ Cloud AWS : hard/soft limits & throttling ‱ QualitĂ© IaC ‱ Compte dĂ©diĂ© ‱ Tests auto en cible ‱ Orchestration Kubernetes POINTS D’ATTENTION SUR L’INFRA Le Cloud Les plafonds Les coĂ»ts (Notre infra)
  • 37. 38 GESTION DES ENVIRONNEMENTS & MERGE REQUESTS ‱ Extinction auto des envs ‱ Factorisation entre envs (Istio / Service Mesh) ‱ Liens entre Gitlab et JIRA ‱ Tableaux de bord : envs ‱ Tableaux de bord : merge requests Illustration : https://www.cbsnews.com/pictures/jurassic-park-cast-where-are-they-now/
  • 38. 39 SUIVI DES ENVIRONNEMENTS & MERGE REQUESTS
  • 39. Quelques mois (et beaucoup de MEPs) plus tard
 Illustration : https://www.pixelcreation.fr/galerie/voir/jurassic-world/02-jurassic-world-main-street/
  • 40. LE CHEMIN DU RETOUR 10 Illustration : https://www.fantrippers.com/fr/fanspots/isla-nublar/
  • 41. 42 ‱ CrĂ©ation d’une filiĂšre Engineering Managers ‱ CrĂ©ation de bootcamps đŸ§‘đŸ« : des formations pour dĂ©velopper sur tel ou tel applicatif APRÈS LE LANCEMENT EN PRODUCTION

  • 42. LE RETOUR DES HÉROS, TRANSFORMÉS 11 Illustra(on : h.ps://www.daily-movies.ch/jurassic-world-3-dominion
  • 43. 44 NOTRE BILAN MONOREPO SUR SNCF CONNECT 👍 Le Monorepo fonctionne : de trĂšs nombreux dĂ©veloppeurs travaillent sur la mĂȘme codebase (avec davantage de contributions du frontend au backend, du mobile au web, etc.) 🎓 Avec des efforts sur l’onboarding et la formation continue ⚙ Avec des efforts sur l’automatisation et la rationalisation de l’infra, du build, des outils Illustration : https://www.purepeople.com/media/ariana-richards-sam-neill-et-joseph-maz_m7147405
  • 44. AMÉLIORER LE MONDE ORDINAIRE 12 Illustration : https://autos.yahoo.com/jurassic-world-dominion-delayed-2022-074550242.html
  • 45. 46 ET POUR LA SUITE
 ‱ On a commencĂ© Ă  migrer dans le Monorepo les briques historiques ‱ On reproduit la mĂȘme stratĂ©gie Monorepo pour nos autres projets majeurs (hors SNCF Connect) ‱ On continue d’agrandir l’équipe (Nantes Paris Lille) https://jobs.connect-tech.sncf/ đŸȘŽđŸȘŽđŸȘŽ
  • 46. ‱ Une approche Monorepo peut rĂ©duire les « silos » 🧹 et amĂ©liorer la collaboration des Ă©quipes ⚡ ‱ Cela fonctionne Ă  grande Ă©chelle 🚀 ‱ Sous rĂ©serve d’efforts continus đŸ’Ș investir dans les outils ⚙ et les Ă©quipes đŸ«¶ / https://www.alamyimages.fr/ensemble-de-divers-dinosaures-isoles-personnage-de-dessin-anime-sur-fond-blanc-illustration-image438458856.html