SlideShare a Scribd company logo
1 of 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/fillon-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/

More Related Content

What's hot

Nexus and LeSS #rsgt2016
Nexus and LeSS #rsgt2016Nexus and LeSS #rsgt2016
Nexus and LeSS #rsgt2016Takao Kimura
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組みYuta Shimada
 
The Next Wave of Reliability Engineering
The Next Wave of Reliability EngineeringThe Next Wave of Reliability Engineering
The Next Wave of Reliability EngineeringMichael Kehoe
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021Yusuke Suzuki
 
Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023
Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023
Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023Manuel Pais
 
我的 DevOps 故事
我的 DevOps 故事我的 DevOps 故事
我的 DevOps 故事Poy Chang
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析政雄 金森
 
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版Naoki (Neo) SATO
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方増田 亨
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャーRakuten Group, Inc.
 
自己組織的なScrumチームの目指し方
自己組織的なScrumチームの目指し方自己組織的なScrumチームの目指し方
自己組織的なScrumチームの目指し方Takuo Doi
 
Kubernetes Cost Optimization
Kubernetes Cost OptimizationKubernetes Cost Optimization
Kubernetes Cost OptimizationShiho ASA
 
CI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate ListCI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate ListPlutora
 
Remote PI Planning Tips & Tricks - Agile en Seine 2020
Remote PI Planning Tips & Tricks - Agile en Seine 2020Remote PI Planning Tips & Tricks - Agile en Seine 2020
Remote PI Planning Tips & Tricks - Agile en Seine 2020Agile En Seine
 
Empowering Engineering Talent - an update from Spotify
Empowering Engineering Talent - an update from SpotifyEmpowering Engineering Talent - an update from Spotify
Empowering Engineering Talent - an update from SpotifyKevin Goldsmith
 
Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...
Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...
Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...Manuel Pais
 

What's hot (20)

今だからこそ見直そうAzureコスト最適化
今だからこそ見直そうAzureコスト最適化今だからこそ見直そうAzureコスト最適化
今だからこそ見直そうAzureコスト最適化
 
Nexus and LeSS #rsgt2016
Nexus and LeSS #rsgt2016Nexus and LeSS #rsgt2016
Nexus and LeSS #rsgt2016
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
 
The Next Wave of Reliability Engineering
The Next Wave of Reliability EngineeringThe Next Wave of Reliability Engineering
The Next Wave of Reliability Engineering
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023
Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023
Product Teams Need A Family Too! @ Iberia SWE Fest, Mar 2023
 
我的 DevOps 故事
我的 DevOps 故事我的 DevOps 故事
我的 DevOps 故事
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
 
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
 
SRE vs DevOps
SRE vs DevOpsSRE vs DevOps
SRE vs DevOps
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー
 
自己組織的なScrumチームの目指し方
自己組織的なScrumチームの目指し方自己組織的なScrumチームの目指し方
自己組織的なScrumチームの目指し方
 
Kubernetes Cost Optimization
Kubernetes Cost OptimizationKubernetes Cost Optimization
Kubernetes Cost Optimization
 
DevOps & SRE at Google Scale
DevOps & SRE at Google ScaleDevOps & SRE at Google Scale
DevOps & SRE at Google Scale
 
CI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate ListCI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate List
 
Remote PI Planning Tips & Tricks - Agile en Seine 2020
Remote PI Planning Tips & Tricks - Agile en Seine 2020Remote PI Planning Tips & Tricks - Agile en Seine 2020
Remote PI Planning Tips & Tricks - Agile en Seine 2020
 
Empowering Engineering Talent - an update from Spotify
Empowering Engineering Talent - an update from SpotifyEmpowering Engineering Talent - an update from Spotify
Empowering Engineering Talent - an update from Spotify
 
Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...
Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...
Fast Flow & Organizational Evolution with Team Topologies @ Masters of Softwa...
 

Similar to 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
 
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
 

Similar to 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
 

More from 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
 
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
 
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
 

More from François (10)

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)
 
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
 
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