Monorepo & Monomythe, ou le Voyage de 300 Devs passés au Monorepo sur SNCF Connect.
Support de la présentation à Volcamp 2023 (13 octobre, Clermont-Ferrand).
Présenté par François Nollen et Julien Buret pour SNCF Connect & Tech.
Replay bientôt disponible...
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
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
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
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)
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
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
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/