SlideShare uma empresa Scribd logo
1 de 57
Le Voyage de 300 Devs …passés au Monorepo
SANS CHATGPT
Illustra(on
:
h.ps://des-sources-print.fr
MONOREPO & MONOMYTHE 🧚 🧙 🧌
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/fillon-heros-campbellien-malgre-lui/
ACTE I
Tout allait si bien… (?)
Illustra(on
:
h.ps://unsplash.com/fr/photos/la-vue-depuis-le-sommet-dune-montagne-_JFCn5Vu394
LE MONDE ORDINAIRE
01
Illustra(on
:
h.ps://www.lagardeguerin.fr/
7
UN TENDANCE NATURELLE
Pourquoi créer des dépôts séparés ?
🌬 Equipes plus autonomes et indépendantes
📦 Séparées et spécialisées
🏰 Plus de contrôle sur leur code
Illustration
:
https://fr.wikipedia.org/wiki/Ville_fortifi%C3%A9e
8
UN TENDANCE NATURELLE
Risques :
🏝 Equipes isolées
🚷 Peu de collaboration
🎯 Qualité globale ?
Pourquoi créer des dépôts séparés ?
🌬 Equipes plus autonomes et indépendantes
📦 Séparées et spécialisées
🏰 Plus de contrôle sur leur code
Illustration
:
https://www.mysilo.com/en/category/18/commercial-hopper-base-silos
9
• 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
• Effet « truck factor »
• Evolutions transverses : beaucoup d’efforts
de coordination/synchronisation
• Points de contention
AVANT SNCF CONNECT…
Illustration
:
https://www.mon-droguiste.com/loupe-lorgnon.html
L’APPEL DE L’AVENTURE
02
Illustration
:
https://www.newzealand.com/uk/feature/live-like-a-hobbit-for-the-weekend/
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
🧙
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
v1
v2
v3
v2
13
MONOREPO ET DÉPLOIEMENT
Binary repo (Nexus, Artifactory, etc.)
Deploy 🚀 Deploy 🚀
!
App 1 !
Lib 2
!
App 2
!
Lib 1
"
App 3
!
App 1
!
Lib 1
!
Lib 2
!
App 2
"
App 3
14
AVANTAGES D’UN 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://movieweb.com/lord-of-the-rings-revisiting-fellowship-of-the-ring/
16
MONOREPO = MONOLITHE ? 🤔 🤔
Illustration
:
https://monorepo.tools/
17
MONOREPO = MONOLITHE ? 🤔 🤔
Illustration
:
https://monorepo.tools/
18
MONOREPO = MONOLITHE ? 🤔 🤔
Illustration
:
https://monorepo.tools/
19
Maintenabilité ?
« On va modifier
mon [précieux] code
sans que je le sache ?! »
D’AUTRES INQUIÉTUDES
Illustration
:
https://www.facebook.com/profile.php?id=100081113180105
20
Elasticité (à grande échelle) ?
Performances ?
Complexité ?
Coûts ?
D’AUTRES INQUIÉTUDES
Illustration
:
https://www.facebook.com/profile.php?id=100081113180105
ENCOURAGEMENTS
04
Illustration
:
http://tolkienilu.chez-alice.fr/film/images_fotr.htm
22
🏅 Succès de nos expériences passées
en Monorepo (à plus petite échelle, exemple Tock)
🏅 Succès de nos expériences passées
avec le Cloud, Gradle, Terraform…
🚀 Liberté de la « page blanche » avec une stack à l'état de l’art
DES RAISONS D’ÊTRE OPTIMISTES
https://doc.tock.ai
ACTE II
Dans le MordoRepo !
Illustration
:
https://hitek.fr/actualite/quels-sont-les-climats-de-la-terre-du-milieiu_1111
ACTE II
LE SEUIL DE L’AVENTURE
05
Illustration
:
http://catdreams.canalblog.com/archives/2013/12/11/28641272.html
NOTRE STACK TECHNIQUE (2020)
25
26
• 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 de nos APIs
QUELQUES PRINCIPES DE DÉMARRAGE
🎁
27
ENVIRONNEMENTS DE TEST ?
Monorepo
Infra-as-Code
1 feature branch =
1 environnement
(mobile + web + back + infra)
EPREUVES, ALLIÉS & ENNEMIS
06
Illustration
:
https://www.thenationalnews.com/arts/casting-the-hobbit-1.430339
29
• Pour chaque branche : Merge Request obligatoire,
Code Reviews, tests sur un environnement dédié…
• Un processus d’intégration qui favorise l’Innersource…
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é
DES AJUSTEMENTS …POUR MAÎTRISER LA QUALITÉ
30
« INNERSOURCE » = PRATIQUES COLLABORATIVES
Accès au code = capacité
à analyser, paralléliser, contribuer
= accélérateur 🚀
Revue par les propriétaires
du code avant intégration
= qualité🛡
🔑 🔍
+
31
DES PRATIQUES CONNUES & ÉPROUVÉES
https://innersourcecommons.org/stories/
Ces problématiques dans la construction d’un SI ne sont pas
nouvelles, de nombreux acteurs y ont déjà été confrontés,
identifiant les risques en termes de productivité et
collaboration des équipes responsables de différents
composants, applicatifs et services.
L’Innersource est une solution à ces questions, aujourd'hui
éprouvée par de nombreux acteurs majeurs du
développement logiciel.
32
• Continuous Integration 🚀
• Développement Trunk-based
• Le moins possible de « stock de code »
• Continuous Delivery 🎯
• De plus en plus de tests auto (E2E, Golden…)
• Branche master toujours livrable en production ?
• Mise en place d’ADR (Architecture Decision Records)
✍
DES AJUSTEMENTS …POUR MAÎTRISER LA QUALITÉ
AU CŒUR DU DANGER
07
Illustration
:
https://www.rollingstone.fr/les-anneaux-de-pouvoir-la-bande-annonce-finale/
34
VUE DU PIPELINE DE DÉPLOIEMENT
Illustration
:
https://www.philomag.com/articles/sam-le-hobbit-un-heros-jardinier
35
VUE DU CLUSTER KUBERNETES (PODS)
Illustration
:
https://www.clique.tv/documentaire-devoile-les-origines-secretes-hobbits/
L’ÉPREUVE DU FEU
08
Illustration
:
https://www.cbr.com/lotr-rings-of-power-mount-doom-volcanology/
37
• 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://twitter.com/ygkere/status/745200811932778496
L’ÉLIXIR
09
Illustration
:
https://www.cineserie.com/movies/113523/
39
• Mise en place de maturations 🏭
• Plus de référents 👥
• Plus de temps pour
les revues ⏳
• Task forces CI ⚡
et tests e2e 🚥
CONTINUER D’AMÉLIORER, TOUJOURS
stration
:
https://www.yucatan.com.mx/espectaculos/2021/06/11/the-lord-of-the-rings-animado.html
40
• Kotlin DSL
• Version catalog
• Conventions
• Build cache
• Configuration cache
CÔTÉ BUILD GRADLE
Notre build
Gradle
Illustration
:
https://fr.fanpop.com/clubs/lord-of-the-rings/images/3138671/title/frodo-sam-photo/2
41
• Algo de diff
• Marge Bot
• Code Owners
• (Merge Train)
CÔTÉ CI, PIPELINE & GITLAB
Plus
d’optimisation
Plus
d’outils
Illustration
:
https://risibank.fr/media/167857-chef-gamegie-other-lotr-sam-seigneur-anneaux-cimer
42
• 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
Infra
de prod
Infra
de dev
Devs & QA
Clients
Illustration
:
https://lotr.fandom.com/fr/wiki/Oliphants
43
GESTION DES ENVS & MERGE REQUESTS
• Extinction auto des envs
• Factorisation entre envs (Istio / Service Mesh)
• Tableaux de bord : envs
• Tableaux de bord : merge requests
44
SUIVI DES MERGE REQUESTS
ACTE III
Quelques mois
(et beaucoup de MEPs)
plus tard…
Illustration
:
https://lithub.com/looking-for-middle-earth-go-to-the-middle-of-england/
LE CHEMIN DU RETOUR
10
LES HÉROS, TRANSFORMÉS
11
Illustration
:
https://www.allocine.fr/article/fichearticle_gen_carticle=18679108.html
47
• Le Monorepo fonctionne : de nombreux
développeurs travaillent sur la même codebase 🤝
• Création d’une filière Engineering Managers
• Améliorations onboarding, formation 🎓,
création de bootcamps 🧑🏫
• Efforts continus sur l’automatisation et la
rationalisation de l’infra, du build, des outils ⚙
APRÈS LE LANCEMENT EN PRODUCTION…
48
RÉTICENCES
Toujours quelques réticences – surtout dans les équipes hors du
Monorepo :
• Contre-intuitif quand on est habitué(e) à séparer,
se spécialiser, travailler en mode « guichet »
• Beaucoup d’efforts pour optimiser outils,
process, culture… ce n’est pas trivial ni gratuit
• « Mot-valise » pour beaucoup de choses ?
(organisation, process, technologies, complexité
fonctionnelle, instabilités partenaires, etc.)
Illustration
:
https://www.mon-droguiste.com/loupe-lorgnon.html
TÉMOIGNAGES DE DÉV 🎙 🧑💻
« Hello je suis dev sur SNCF Connect et je vais essayer de donner
mon avis sur le monorepo. En tant que Référent mobile Flutter
(qui fait néanmoins du Back 😊).
…
🎙
TÉMOIGNAGES DE DÉV 🎙 🧑💻
…
La promesse du monorepo selon moi c'est build/rebuild ce dont tu as besoin et
testes uniquement tes impacts. On y est pas encore à 100% pour être honnête mais
beaucoup de personnes y travaillent ardemment et on s'y rapproche quand même. Les
pipeline mettent encore trop de temps à mon goût 😇.
…
🎙
TÉMOIGNAGES DE DÉV 🎙 🧑💻
…
En tant que dev fullstack, c'est assez génial car on a une vue d'ensemble très rapide
sur l'intégralité de l'écosystème. J'ai d'ailleurs moi-même fait un peu d'infra
récemment. On a tendance à casser les codes/murs plus facilement.
…
🎙
TÉMOIGNAGES DE DÉV 🎙 🧑💻
…
Bien sûr, impossible d'ouvrir le projet complet sur l'IDE sinon l'ordi "fond" 🫠,
Mac ou pas Mac. Mais justement, c'est pas plus mal pour un dev moins expérimenté
de ne travailler que dans un périmètre restreint pour commencer, puis élargir au fur et
à mesure.
…
🎙
TÉMOIGNAGES DE DÉV 🎙 🧑💻
…
Il y a des avantages et des inconvénients comme tout, moi perso je suis pour -
car j'y vois plus d'avantages que d'inconvénients et ça me semble un outil
indispensable pour faire du Continuous Delivery surtout pour un gros projet.
J'espère que ce témoignage vous aide 😉 »
-- Alexandre
🎙
54
TÉMOIGNAGES DE DÉV 🎙🧑💻
« C'est un choix vraiment dimensionnant le monorepo.
Au-delà la tech, ça a des impacts sur l'organisation et la culture d'équipe.
Il faut que ça "fit" avec la culture que l'on veut diffuser. »
-- François (dev, ex Scrummaster)
🎙
AMÉLIORER LE MONDE ORDINAIRE
12
Illustra(on
:
h.ps://www.mondes-miniatures-noel.com/villages/scene.es-hors-no%C3%ABl/
56
ET POUR LA SUITE…
• On a commencé à migrer dans le Monorepo
les autres briques historiques
• On reproduit la même stratégie Monorepo pour
nos autres projets majeurs (hors SNCF Connect)
• On continue d’agrandir l’équipe
https://jobs.connect-tech.sncf/
🪴🪴🪴
• Une approche Monorepo
peut réduire les « silos » 🧨
et améliorer la collaboration
des équipes 🤝
• Peut fonctionner
à grande échelle 🚀
• A condition d’efforts
continus dans les outils ⚙
les équipes 🫶 et la formation 🎓
CONCLUSION
Illustra(on
:
h.ps://www.tomsguide.fr/le-seigneur-des-anneaux-qui-est-le-5eme-hobbit-supprime-des-films/

Mais conteúdo relacionado

Semelhante a Monorepo & Monomythe (@Volcamp 2023)

Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !
Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !
Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !Caroline Damour-Nobi
 
Retour BreizhCamp 2023
Retour BreizhCamp 2023 Retour BreizhCamp 2023
Retour BreizhCamp 2023 SpikeeLabs
 
Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...
Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...
Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...Sophie Callies
 
Des conférences à voir et à revoir
Des conférences à voir et à revoirDes conférences à voir et à revoir
Des conférences à voir et à revoirAnthony Maison
 
Stratégie de Management : LEGO
Stratégie de Management : LEGOStratégie de Management : LEGO
Stratégie de Management : LEGOLéa Lescou
 
Agile France - Mai 2012 - Des mots, des maux? Démo!
Agile France - Mai 2012 - Des mots, des maux? Démo!Agile France - Mai 2012 - Des mots, des maux? Démo!
Agile France - Mai 2012 - Des mots, des maux? Démo!Emilie Franchomme
 
Interactions : Animations et Interfaces (Blend Web Mix 2014)
Interactions : Animations et Interfaces (Blend Web Mix 2014)Interactions : Animations et Interfaces (Blend Web Mix 2014)
Interactions : Animations et Interfaces (Blend Web Mix 2014)Olivia Lor
 
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
 
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
 
Team99 Dossier de production
Team99 Dossier de productionTeam99 Dossier de production
Team99 Dossier de productionJb Thiof
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielleDavid Buros
 
La vie, l'open source et les ratages
La vie, l'open source et les ratagesLa vie, l'open source et les ratages
La vie, l'open source et les ratagesNicolas Ledez
 
Trois petites histoires de dette avec notes de la présentation
Trois petites histoires de dette   avec notes de la présentationTrois petites histoires de dette   avec notes de la présentation
Trois petites histoires de dette avec notes de la présentationBruno MOREL
 
XebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien Smadja
XebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien SmadjaXebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien Smadja
XebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien SmadjaPublicis Sapient Engineering
 
Gérer un compte TIKTOK dans le secteur touristique
Gérer un compte TIKTOK dans le secteur touristiqueGérer un compte TIKTOK dans le secteur touristique
Gérer un compte TIKTOK dans le secteur touristiqueREALIZasbl
 

Semelhante a Monorepo & Monomythe (@Volcamp 2023) (19)

Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !
Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !
Agile Tour Bordeaux - Octobre 2012 - Des mots, des maux ? Demo !
 
Retour BreizhCamp 2023
Retour BreizhCamp 2023 Retour BreizhCamp 2023
Retour BreizhCamp 2023
 
Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...
Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...
Développer des stratégies d’apprentissage avec la vidéo 360° pour Google Card...
 
Des conférences à voir et à revoir
Des conférences à voir et à revoirDes conférences à voir et à revoir
Des conférences à voir et à revoir
 
Stratégie de Management : LEGO
Stratégie de Management : LEGOStratégie de Management : LEGO
Stratégie de Management : LEGO
 
Agile France - Mai 2012 - Des mots, des maux? Démo!
Agile France - Mai 2012 - Des mots, des maux? Démo!Agile France - Mai 2012 - Des mots, des maux? Démo!
Agile France - Mai 2012 - Des mots, des maux? Démo!
 
Interactions : Animations et Interfaces (Blend Web Mix 2014)
Interactions : Animations et Interfaces (Blend Web Mix 2014)Interactions : Animations et Interfaces (Blend Web Mix 2014)
Interactions : Animations et Interfaces (Blend Web Mix 2014)
 
Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2
 
Git
GitGit
Git
 
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
 
Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1 Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1
 
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
 
Team99 Dossier de production
Team99 Dossier de productionTeam99 Dossier de production
Team99 Dossier de production
 
Php 100k
Php 100kPhp 100k
Php 100k
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
La vie, l'open source et les ratages
La vie, l'open source et les ratagesLa vie, l'open source et les ratages
La vie, l'open source et les ratages
 
Trois petites histoires de dette avec notes de la présentation
Trois petites histoires de dette   avec notes de la présentationTrois petites histoires de dette   avec notes de la présentation
Trois petites histoires de dette avec notes de la présentation
 
XebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien Smadja
XebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien SmadjaXebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien Smadja
XebiCon'17 : Les assistants du futur 2022, c’est déjà demain - Julien Smadja
 
Gérer un compte TIKTOK dans le secteur touristique
Gérer un compte TIKTOK dans le secteur touristiqueGérer un compte TIKTOK dans le secteur touristique
Gérer un compte TIKTOK dans le secteur touristique
 

Mais 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
 

Mais 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
 

Monorepo & Monomythe (@Volcamp 2023)

  • 1. Le Voyage de 300 Devs …passés au Monorepo SANS CHATGPT Illustra(on : h.ps://des-sources-print.fr MONOREPO & MONOMYTHE 🧚 🧙 🧌
  • 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/
  • 5. ACTE I Tout allait si bien… (?) Illustra(on : h.ps://unsplash.com/fr/photos/la-vue-depuis-le-sommet-dune-montagne-_JFCn5Vu394
  • 7. 7 UN TENDANCE NATURELLE Pourquoi créer des dépôts séparés ? 🌬 Equipes plus autonomes et indépendantes 📦 Séparées et spécialisées 🏰 Plus de contrôle sur leur code Illustration : https://fr.wikipedia.org/wiki/Ville_fortifi%C3%A9e
  • 8. 8 UN TENDANCE NATURELLE Risques : 🏝 Equipes isolées 🚷 Peu de collaboration 🎯 Qualité globale ? Pourquoi créer des dépôts séparés ? 🌬 Equipes plus autonomes et indépendantes 📦 Séparées et spécialisées 🏰 Plus de contrôle sur leur code Illustration : https://www.mysilo.com/en/category/18/commercial-hopper-base-silos
  • 9. 9 • 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 • Effet « truck factor » • Evolutions transverses : beaucoup d’efforts de coordination/synchronisation • Points de contention AVANT SNCF CONNECT… Illustration : https://www.mon-droguiste.com/loupe-lorgnon.html
  • 11. 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. 🧙 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 v1 v2 v3 v2
  • 13. 13 MONOREPO ET DÉPLOIEMENT Binary repo (Nexus, Artifactory, etc.) Deploy 🚀 Deploy 🚀 ! App 1 ! Lib 2 ! App 2 ! Lib 1 " App 3 ! App 1 ! Lib 1 ! Lib 2 ! App 2 " App 3
  • 14. 14 AVANTAGES D’UN 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
  • 16. 16 MONOREPO = MONOLITHE ? 🤔 🤔 Illustration : https://monorepo.tools/
  • 17. 17 MONOREPO = MONOLITHE ? 🤔 🤔 Illustration : https://monorepo.tools/
  • 18. 18 MONOREPO = MONOLITHE ? 🤔 🤔 Illustration : https://monorepo.tools/
  • 19. 19 Maintenabilité ? « On va modifier mon [précieux] code sans que je le sache ?! » D’AUTRES INQUIÉTUDES Illustration : https://www.facebook.com/profile.php?id=100081113180105
  • 20. 20 Elasticité (à grande échelle) ? Performances ? Complexité ? Coûts ? D’AUTRES INQUIÉTUDES Illustration : https://www.facebook.com/profile.php?id=100081113180105
  • 22. 22 🏅 Succès de nos expériences passées en Monorepo (à plus petite échelle, exemple Tock) 🏅 Succès de nos expériences passées avec le Cloud, Gradle, Terraform… 🚀 Liberté de la « page blanche » avec une stack à l'état de l’art DES RAISONS D’ÊTRE OPTIMISTES https://doc.tock.ai
  • 23. ACTE II Dans le MordoRepo ! Illustration : https://hitek.fr/actualite/quels-sont-les-climats-de-la-terre-du-milieiu_1111
  • 24. ACTE II LE SEUIL DE L’AVENTURE 05 Illustration : http://catdreams.canalblog.com/archives/2013/12/11/28641272.html
  • 26. 26 • 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 de nos APIs QUELQUES PRINCIPES DE DÉMARRAGE 🎁
  • 27. 27 ENVIRONNEMENTS DE TEST ? Monorepo Infra-as-Code 1 feature branch = 1 environnement (mobile + web + back + infra)
  • 28. EPREUVES, ALLIÉS & ENNEMIS 06 Illustration : https://www.thenationalnews.com/arts/casting-the-hobbit-1.430339
  • 29. 29 • Pour chaque branche : Merge Request obligatoire, Code Reviews, tests sur un environnement dédié… • Un processus d’intégration qui favorise l’Innersource… 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é DES AJUSTEMENTS …POUR MAÎTRISER LA QUALITÉ
  • 30. 30 « INNERSOURCE » = PRATIQUES COLLABORATIVES Accès au code = capacité à analyser, paralléliser, contribuer = accélérateur 🚀 Revue par les propriétaires du code avant intégration = qualité🛡 🔑 🔍 +
  • 31. 31 DES PRATIQUES CONNUES & ÉPROUVÉES https://innersourcecommons.org/stories/ Ces problématiques dans la construction d’un SI ne sont pas nouvelles, de nombreux acteurs y ont déjà été confrontés, identifiant les risques en termes de productivité et collaboration des équipes responsables de différents composants, applicatifs et services. L’Innersource est une solution à ces questions, aujourd'hui éprouvée par de nombreux acteurs majeurs du développement logiciel.
  • 32. 32 • Continuous Integration 🚀 • Développement Trunk-based • Le moins possible de « stock de code » • Continuous Delivery 🎯 • De plus en plus de tests auto (E2E, Golden…) • Branche master toujours livrable en production ? • Mise en place d’ADR (Architecture Decision Records) ✍ DES AJUSTEMENTS …POUR MAÎTRISER LA QUALITÉ
  • 33. AU CŒUR DU DANGER 07 Illustration : https://www.rollingstone.fr/les-anneaux-de-pouvoir-la-bande-annonce-finale/
  • 34. 34 VUE DU PIPELINE DE DÉPLOIEMENT Illustration : https://www.philomag.com/articles/sam-le-hobbit-un-heros-jardinier
  • 35. 35 VUE DU CLUSTER KUBERNETES (PODS) Illustration : https://www.clique.tv/documentaire-devoile-les-origines-secretes-hobbits/
  • 37. 37 • 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://twitter.com/ygkere/status/745200811932778496
  • 39. 39 • Mise en place de maturations 🏭 • Plus de référents 👥 • Plus de temps pour les revues ⏳ • Task forces CI ⚡ et tests e2e 🚥 CONTINUER D’AMÉLIORER, TOUJOURS stration : https://www.yucatan.com.mx/espectaculos/2021/06/11/the-lord-of-the-rings-animado.html
  • 40. 40 • Kotlin DSL • Version catalog • Conventions • Build cache • Configuration cache CÔTÉ BUILD GRADLE Notre build Gradle Illustration : https://fr.fanpop.com/clubs/lord-of-the-rings/images/3138671/title/frodo-sam-photo/2
  • 41. 41 • Algo de diff • Marge Bot • Code Owners • (Merge Train) CÔTÉ CI, PIPELINE & GITLAB Plus d’optimisation Plus d’outils Illustration : https://risibank.fr/media/167857-chef-gamegie-other-lotr-sam-seigneur-anneaux-cimer
  • 42. 42 • 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 Infra de prod Infra de dev Devs & QA Clients Illustration : https://lotr.fandom.com/fr/wiki/Oliphants
  • 43. 43 GESTION DES ENVS & MERGE REQUESTS • Extinction auto des envs • Factorisation entre envs (Istio / Service Mesh) • Tableaux de bord : envs • Tableaux de bord : merge requests
  • 44. 44 SUIVI DES MERGE REQUESTS
  • 45. ACTE III Quelques mois (et beaucoup de MEPs) plus tard… Illustration : https://lithub.com/looking-for-middle-earth-go-to-the-middle-of-england/
  • 46. LE CHEMIN DU RETOUR 10 LES HÉROS, TRANSFORMÉS 11 Illustration : https://www.allocine.fr/article/fichearticle_gen_carticle=18679108.html
  • 47. 47 • Le Monorepo fonctionne : de nombreux développeurs travaillent sur la même codebase 🤝 • Création d’une filière Engineering Managers • Améliorations onboarding, formation 🎓, création de bootcamps 🧑🏫 • Efforts continus sur l’automatisation et la rationalisation de l’infra, du build, des outils ⚙ APRÈS LE LANCEMENT EN PRODUCTION…
  • 48. 48 RÉTICENCES Toujours quelques réticences – surtout dans les équipes hors du Monorepo : • Contre-intuitif quand on est habitué(e) à séparer, se spécialiser, travailler en mode « guichet » • Beaucoup d’efforts pour optimiser outils, process, culture… ce n’est pas trivial ni gratuit • « Mot-valise » pour beaucoup de choses ? (organisation, process, technologies, complexité fonctionnelle, instabilités partenaires, etc.) Illustration : https://www.mon-droguiste.com/loupe-lorgnon.html
  • 49. TÉMOIGNAGES DE DÉV 🎙 🧑💻 « Hello je suis dev sur SNCF Connect et je vais essayer de donner mon avis sur le monorepo. En tant que Référent mobile Flutter (qui fait néanmoins du Back 😊). … 🎙
  • 50. TÉMOIGNAGES DE DÉV 🎙 🧑💻 … La promesse du monorepo selon moi c'est build/rebuild ce dont tu as besoin et testes uniquement tes impacts. On y est pas encore à 100% pour être honnête mais beaucoup de personnes y travaillent ardemment et on s'y rapproche quand même. Les pipeline mettent encore trop de temps à mon goût 😇. … 🎙
  • 51. TÉMOIGNAGES DE DÉV 🎙 🧑💻 … En tant que dev fullstack, c'est assez génial car on a une vue d'ensemble très rapide sur l'intégralité de l'écosystème. J'ai d'ailleurs moi-même fait un peu d'infra récemment. On a tendance à casser les codes/murs plus facilement. … 🎙
  • 52. TÉMOIGNAGES DE DÉV 🎙 🧑💻 … Bien sûr, impossible d'ouvrir le projet complet sur l'IDE sinon l'ordi "fond" 🫠, Mac ou pas Mac. Mais justement, c'est pas plus mal pour un dev moins expérimenté de ne travailler que dans un périmètre restreint pour commencer, puis élargir au fur et à mesure. … 🎙
  • 53. TÉMOIGNAGES DE DÉV 🎙 🧑💻 … Il y a des avantages et des inconvénients comme tout, moi perso je suis pour - car j'y vois plus d'avantages que d'inconvénients et ça me semble un outil indispensable pour faire du Continuous Delivery surtout pour un gros projet. J'espère que ce témoignage vous aide 😉 » -- Alexandre 🎙
  • 54. 54 TÉMOIGNAGES DE DÉV 🎙🧑💻 « C'est un choix vraiment dimensionnant le monorepo. Au-delà la tech, ça a des impacts sur l'organisation et la culture d'équipe. Il faut que ça "fit" avec la culture que l'on veut diffuser. » -- François (dev, ex Scrummaster) 🎙
  • 55. AMÉLIORER LE MONDE ORDINAIRE 12 Illustra(on : h.ps://www.mondes-miniatures-noel.com/villages/scene.es-hors-no%C3%ABl/
  • 56. 56 ET POUR LA SUITE… • On a commencé à migrer dans le Monorepo les autres briques historiques • On reproduit la même stratégie Monorepo pour nos autres projets majeurs (hors SNCF Connect) • On continue d’agrandir l’équipe https://jobs.connect-tech.sncf/ 🪴🪴🪴
  • 57. • Une approche Monorepo peut réduire les « silos » 🧨 et améliorer la collaboration des équipes 🤝 • Peut fonctionner à grande échelle 🚀 • A condition d’efforts continus dans les outils ⚙ les équipes 🫶 et la formation 🎓 CONCLUSION Illustra(on : h.ps://www.tomsguide.fr/le-seigneur-des-anneaux-qui-est-le-5eme-hobbit-supprime-des-films/