SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
#DevoxxFR #monorepo @ThierryAbalea
Pourquoi votre entreprise, à l'instar de
Google et Facebook, devrait stocker
l'ensemble de son code dans un seul repo ?
1
#monorepo
Thierry Abalea
CTO @Fluo
@ThierryAbalea
#DevoxxFR #monorepo @ThierryAbalea
1 application <=> 1 repo
2
1 micro-service <=> 1 repo
Approche multi-repositories
ou
#DevoxxFR #monorepo @ThierryAbalea
Dependency Hell
3
#DevoxxFR #monorepo @ThierryAbalea
Semantic Versioning
4
major.minor.patch
breaking changes
new features
bug fixes
#DevoxxFR #monorepo @ThierryAbalea 5
A
D
B C
#DevoxxFR #monorepo @ThierryAbalea 6
A
B C
D:1.0.0 D:2.0.0 => resolution impossible
Dependency Diamond Problem
#DevoxxFR #monorepo @ThierryAbalea 7
“What you can do is let Semantic Versioning
provide you with a sane way to release and
upgrade packages without having to roll new
versions of dependent packages, saving you
time and hassle.”
Why Use Semantic Versioning ?
#DevoxxFR #monorepo @ThierryAbalea 8
“Semantic Versioning is a lie. We
are bumping versions all the
time, even if it’s not necessary”
Rich Hickey, créateur de Clojure
#DevoxxFR #monorepo @ThierryAbalea 9
“Software version numbers
are the crack cocaine of
change management.”
Pieter Hintjens, créateur de ZeroMQ
#DevoxxFR #monorepo @ThierryAbalea 10
Comment éviter les
versions antédiluviennes
des dépendances ?
#DevoxxFR #monorepo @ThierryAbalea 11
Feature Branching Model
#DevoxxFR #monorepo @ThierryAbalea 12
Comment favoriser le
partage de code entre
équipes ?
#DevoxxFR #monorepo @ThierryAbalea 13
monorepo
#DevoxxFR #monorepo @ThierryAbalea
(ma) définition
14
La stratégie monorepo est
l’intégration continue à
l’échelle d’une organisation
#DevoxxFR #monorepo @ThierryAbalea
(ma) définition
15
La stratégie monorepo est
l’intégration continue à
l’échelle d’une organisation
#DevoxxFR #monorepo @ThierryAbalea 17
“The whole idea is that nobody
is working on a code base that
deviates significantly from
anyone else’s.”
Martin Fowler
#DevoxxFR #monorepo @ThierryAbalea 18
Trunk Based Development
=
Continuous Integration
#DevoxxFR #monorepo @ThierryAbalea
(ma) définition
19
La stratégie monorepo est
l’intégration continue à
l’échelle d’une organisation
#DevoxxFR #monorepo @ThierryAbalea
(ma) définition
20
La stratégie monorepo est
l’intégration continue à
l’échelle d’une organisation
#DevoxxFR #monorepo @ThierryAbalea 21
Dans la pratique
#DevoxxFR #monorepo @ThierryAbalea 22
#DevoxxFR #monorepo @ThierryAbalea 23
Release Branching Model
#DevoxxFR #monorepo @ThierryAbalea 24
Changements structurants
Branch by Abstraction
Feature Flags
+
#DevoxxFR #monorepo @ThierryAbalea 25
Une seule et même
version par dépendance
Dépendances externes
#DevoxxFR #monorepo @ThierryAbalea 26
Un repository monolithique n’implique
pas une application monolithique
L’approche micro-services n’implique
pas un repository par service
#DevoxxFR #monorepo @ThierryAbalea 27
Qui l’utilise ?
#DevoxxFR #monorepo @ThierryAbalea 28
Google, Facebook, Twitter,
Digital Ocean, Etsy, Uber (ios)…
#DevoxxFR #monorepo @ThierryAbalea
Google (janvier 2015)
29
1 repository (exclus: Chrome, Android, …)
25 000 ingénieurs
1 milliard de fichiers
35 millions de commits
9 millions de fichiers source
2 milliards de lignes de code
#DevoxxFR #monorepo @ThierryAbalea 30
Les avantages
#DevoxxFR #monorepo @ThierryAbalea 31
Vision unifiée du code
Unique source de vérité
#DevoxxFR #monorepo @ThierryAbalea 32
Partage de code et
réutilisation intensif
#DevoxxFR #monorepo @ThierryAbalea 33
Gestion des dépendances
simplifiée
#DevoxxFR #monorepo @ThierryAbalea 34
Changements
atomiques
#DevoxxFR #monorepo @ThierryAbalea 35
Refactoring à large
échelle
Modernisation du
code
#DevoxxFR #monorepo @ThierryAbalea 36
Collaboration inter-
équipes améliorée
#DevoxxFR #monorepo @ThierryAbalea 37
Frontière des équipes
et code ownership
flexibles
#DevoxxFR #monorepo @ThierryAbalea 38
Visibilité du code et
structure d’arbre claire
fournissant un
namespacing d’équipe
#DevoxxFR #monorepo @ThierryAbalea 39
Les coûts
#DevoxxFR #monorepo @ThierryAbalea 40
Difficulté à monter
en version une
dépendance centrale
#DevoxxFR #monorepo @ThierryAbalea 41
Investissement dans
le tooling
#DevoxxFR #monorepo @ThierryAbalea 42
Quand l’utiliser ou pas ?
#DevoxxFR #monorepo @ThierryAbalea 43
L’ingénierie de votre
entreprise est valorisée
et de bon niveau
#DevoxxFR #monorepo @ThierryAbalea 44
Culture de
transparence et de
collaboration
#DevoxxFR #monorepo @ThierryAbalea 45
Comment commencer ?
#DevoxxFR #monorepo @ThierryAbalea 46
Une organisation est
un arbre
d’organisations
#DevoxxFR #monorepo @ThierryAbalea 47
Commencer au
niveau d’un projet ou
d’un département
#DevoxxFR #monorepo @ThierryAbalea 48
Constituer le
monorepo à partir
des nouveaux projets
#DevoxxFR #monorepo @ThierryAbalea 49
Merci !
#DevoxxFR #monorepo @ThierryAbalea 50
Références
Why Google Stores Billions of Lines of Code in a Single Repository, Rachel Potvin & Josh Levenberg
http://m.cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-
repository/pdf
https://www.youtube.com/watch?v=W71BTkUbdqE
Advantages of monolithic version control, Dan Luu
https://danluu.com/monorepo/
Trunk Based Development Website, Paul Hammant
https://trunkbaseddevelopment.com/
https://trunkbaseddevelopment.com/monorepos/
Continuous Integration Certification, Martin Fowler
https://martinfowler.com/bliki/ContinuousIntegrationCertification.html
Spec-ulation, Rich Hickley
https://www.youtube.com/watch?v=oyLBGkS5ICk
The End of Software Versions, Pieter Hintjens
http://hintjens.com/blog:85
Slides URL:

Contenu connexe

Similaire à #monorepo - Pourquoi votre entreprise, à l'instar de Google et Facebook, devrait stocker l'ensemble de son code dans un seul repo ? - DevoxxFR 2017

Devoxx France 2014 - Tests de performance en continu
Devoxx France 2014 - Tests de performance en continuDevoxx France 2014 - Tests de performance en continu
Devoxx France 2014 - Tests de performance en continu
Publicis Sapient Engineering
 
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et AzureApproche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
CEDRIC DERUE
 

Similaire à #monorepo - Pourquoi votre entreprise, à l'instar de Google et Facebook, devrait stocker l'ensemble de son code dans un seul repo ? - DevoxxFR 2017 (20)

Devoxx france 2015 livrer chaque jour ce qui est prêt
Devoxx france 2015   livrer chaque jour ce qui est prêtDevoxx france 2015   livrer chaque jour ce qui est prêt
Devoxx france 2015 livrer chaque jour ce qui est prêt
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon
 
Cours technologie web débutant CREA Digital 2 - 10/2013
Cours technologie web débutant CREA Digital 2 - 10/2013Cours technologie web débutant CREA Digital 2 - 10/2013
Cours technologie web débutant CREA Digital 2 - 10/2013
 
Après (Ro)BERT, google fait appel à Mum - Nicolas Audemar - SEO CAMP'us Paris...
Après (Ro)BERT, google fait appel à Mum - Nicolas Audemar - SEO CAMP'us Paris...Après (Ro)BERT, google fait appel à Mum - Nicolas Audemar - SEO CAMP'us Paris...
Après (Ro)BERT, google fait appel à Mum - Nicolas Audemar - SEO CAMP'us Paris...
 
Après BERT, Google MUM
Après BERT, Google MUMAprès BERT, Google MUM
Après BERT, Google MUM
 
Devoxx France 2014 - Tests de performance en continu
Devoxx France 2014 - Tests de performance en continuDevoxx France 2014 - Tests de performance en continu
Devoxx France 2014 - Tests de performance en continu
 
XebiCon'16 : Le futur de la télévision, les applications ! Par Fabien Mirault...
XebiCon'16 : Le futur de la télévision, les applications ! Par Fabien Mirault...XebiCon'16 : Le futur de la télévision, les applications ! Par Fabien Mirault...
XebiCon'16 : Le futur de la télévision, les applications ! Par Fabien Mirault...
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
 
Devoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDevoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous delivery
 
Devoxx 2016 - L'odyssée du Continuous Delivery
Devoxx 2016 - L'odyssée du Continuous DeliveryDevoxx 2016 - L'odyssée du Continuous Delivery
Devoxx 2016 - L'odyssée du Continuous Delivery
 
iGraal et les webextensions
iGraal et les webextensionsiGraal et les webextensions
iGraal et les webextensions
 
Kanban as Code - Agile France 2017
Kanban as Code  - Agile France 2017Kanban as Code  - Agile France 2017
Kanban as Code - Agile France 2017
 
Techdays - Retour sur expérience - les coulisses de l'orchestration cloud ch...
Techdays - Retour sur expérience -  les coulisses de l'orchestration cloud ch...Techdays - Retour sur expérience -  les coulisses de l'orchestration cloud ch...
Techdays - Retour sur expérience - les coulisses de l'orchestration cloud ch...
 
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et AzureApproche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
 
Comment développer un PaaS Java en 30 minutes avec docker
Comment développer un PaaS Java en 30 minutes avec dockerComment développer un PaaS Java en 30 minutes avec docker
Comment développer un PaaS Java en 30 minutes avec docker
 
MWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint FrameworkMWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint Framework
 
DevOps & Docker : Open Source dans Azure
DevOps & Docker : Open Source dans AzureDevOps & Docker : Open Source dans Azure
DevOps & Docker : Open Source dans Azure
 
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
 
GitHub et Microsoft Azure DevOps - Le mariage parfait
GitHub et Microsoft Azure DevOps - Le mariage parfaitGitHub et Microsoft Azure DevOps - Le mariage parfait
GitHub et Microsoft Azure DevOps - Le mariage parfait
 

#monorepo - Pourquoi votre entreprise, à l'instar de Google et Facebook, devrait stocker l'ensemble de son code dans un seul repo ? - DevoxxFR 2017