SlideShare a Scribd company logo
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The Issue of Monorepo and Polyrepo In Large Enterprises
‹Programming› 2019 / ICW 2019
Nicolas Brousse | Director, SRE
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Practical definitions
Monorepo
Use one unique source code repository for multiple projects and their
dependencies.
Polyrepo
Use a source code repository for each project, component, and/or library.
2
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
A decade of soul-searching
Over the past 10 years, we went through:
|-> Monorepo on SVN
|-> Polyrepo on SVN with use of svn externals
|-> Git polyrepo with Code Review (Gerrit)
|-> Git polyrepo as mono with Code Review and use of submodules (Gerrit)
|-> Git polyrepo with Github Pull Request Model (Bitbucket)
|-> Git monorepo with Github Pull Request Model (Bitbucket)
|-> Git monorepo with Github Pull Request Model (Github Enterprise)
3
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Systems are becoming more complex
4
Complexity
Microservices
&
Distributed Systems
Human Cognitive Limit
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Remember the Editor War?
5
Image credit: xkcd.com
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
A repo war?
6
Structure Implementation Notable Adopters
Polyrepo One distinct source code
repository for each component
and library
Amazon, Netflix, Lyft
Monorepo One source code repository for
a whole company or large
project
Google, Facebook, Microsoft,
Uber, Twitter, React, Angular,
Kubernetes
Hybrid Poly-as-Mono Updates are made to a
polyrepo but managed like a
monorepo
Android, Chrome
Hybrid Mono-as-Poly Updates are made into a
monorepo but then split into
read-only polyrepo for build or
distribution purpose
Symphony, Shopsys
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 7
Monorepo Polyrepo
Customized
Developer
workflows
Unique
Team
Culture
Use one unique source
code repository for
multiple projects and their
dependencies
Single source of truth
Allow atomic changes
simplify large scale
refactoring
Compound System
Use a source code
repository for each
project, component,
and/or library
Independent releases
cycles
Each project may have a
customized workflow
Isolation
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 8
“with a monolithic source tree it makes sense, and is easier, for the person updating a library to update all affected
dependencies at the same time. The technical debt incurred by dependent systems is paid down immediately as
changes are made.”
Rachel Potvin and Josh Levenberg. 2016. Why Google Stores Billions of Lines of Code in a Single Repository.
Commun. ACM 59, 7 (June 2016), 78–87. https://doi.org/10.1145/2854146
Diamond Dependency Problem
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Culture at the center of the issue
 Netflix’s Culture - “freedom and
responsibility” and the “keeper test”
(Polyrepo)
 Google’s Philosophy - "It’s best to do
one thing really, really well” and “Great
just isn’t good enough” (Monorepo)
 Microsoft - ”we needed a culture that
allowed us to constantly refresh and
renew” – Satya Nadella (Move from
polyrepo to monorepo)
9
Source: levels.fyi
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
 “An important aspect of Google culture that encourages code quality is the
expectation that all code is reviewed before being committed to the repository.”
 “A developer can make a major change touching hundreds or thousands of files
across the repository in a single consistent operation.”
10
Rachel Potvin and Josh Levenberg. 2016. Why Google Stores Billions of Lines of Code in a Single Repository.
Commun. ACM 59, 7 (June 2016), 78–87. https://doi.org/10.1145/2854146
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 11
Phil Ensor. 1988. Organizational Renewal-Tearing Down the Functional Silos. In AME Study Group on Functional
Organization. AME Target, 4–16.
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 12
Jun He, Brian S. Butler, and William R. King. 2007. Team Cognition: Development and Evolution in Software
Project Teams. J. of Management Information Systems 24 (2007), 261–292.
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 13
“Software project teams’ ability to operate as a team arises from who they are
(preexisting team characteristics) and how they interact (team communication).
Team cognition concepts provide potential levers for managers seeking to improve
the performance of these teams. An arbitrary collection of people can, with a great
deal of effort and some luck, accomplish significant goals. However, by forming
team cognition, those individuals can increase their chances of success. The
more we understand about the formation of team cognition, both within software
project teams and in general, the more effective we will be at explaining and
supporting the formation of effective teams.”
Jun He, Brian S. Butler, and William R. King. 2007. Team Cognition: Development and Evolution in Software
Project Teams. J. of Management Information Systems 24 (2007), 261–292.
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
“In 2014, we operationalized and validated a model of organizational culture
proposed by sociologist Ron Westrum and showed that it drives both software
delivery performance and organizational performance. Over the last few years
we’ve found a number of management and technical capabilities that influence
culture, showing that you can change culture by changing the way work is done
in your organization.”
“We find that technical and management practices shape culture and that
culture in turn helps to improve performance outcomes.“
14
DORA. 2018. Accelerate: State of DevOps Strategies for a New Economy.
© 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Paper Conclusion
Technical arguments between one model and another are not a clear-cut.
“A monorepo facilitates cultural change and enables a holistic team cognition that
ensures high quality work and improves communication, while preserving necessary
autonomy.”
---
Can the decisioning process of choosing a source code repository structure be
more data driven and scientific?
Is there an opportunity for architecture / design patterns that could benefit
practitioners?15
<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Enterprises

More Related Content

What's hot

Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...
Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...
Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...
Vinod Kotiya
 
Info session gdsc @ bit
Info session   gdsc @ bitInfo session   gdsc @ bit
Info session gdsc @ bit
Jayprakash677449
 
Develop - Hybrid Cloud & Open: Better Together
Develop - Hybrid Cloud & Open: Better TogetherDevelop - Hybrid Cloud & Open: Better Together
Develop - Hybrid Cloud & Open: Better Together
LaurenWendler
 
GE minds and machines keynote 2015 cloud foundry
GE minds and machines keynote 2015   cloud foundryGE minds and machines keynote 2015   cloud foundry
GE minds and machines keynote 2015 cloud foundry
Cloud Foundry Foundation
 
Microservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They MatterMicroservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They Matter
Alexander Arda
 
Asf icfoss-mentoring
Asf icfoss-mentoringAsf icfoss-mentoring
Asf icfoss-mentoring
Luciano Resende
 
Establishing an Open Source Program Office
Establishing an Open Source Program OfficeEstablishing an Open Source Program Office
Establishing an Open Source Program Office
Lee Calcote
 

What's hot (7)

Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...
Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...
Cloud infrastructure in public sector by Vinod Kotiya | OIST Bhopal Faculty D...
 
Info session gdsc @ bit
Info session   gdsc @ bitInfo session   gdsc @ bit
Info session gdsc @ bit
 
Develop - Hybrid Cloud & Open: Better Together
Develop - Hybrid Cloud & Open: Better TogetherDevelop - Hybrid Cloud & Open: Better Together
Develop - Hybrid Cloud & Open: Better Together
 
GE minds and machines keynote 2015 cloud foundry
GE minds and machines keynote 2015   cloud foundryGE minds and machines keynote 2015   cloud foundry
GE minds and machines keynote 2015 cloud foundry
 
Microservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They MatterMicroservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They Matter
 
Asf icfoss-mentoring
Asf icfoss-mentoringAsf icfoss-mentoring
Asf icfoss-mentoring
 
Establishing an Open Source Program Office
Establishing an Open Source Program OfficeEstablishing an Open Source Program Office
Establishing an Open Source Program Office
 

Similar to <Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Enterprises

Advantages and Disadvantages of a Monolithic Repository
Advantages and Disadvantages of a Monolithic RepositoryAdvantages and Disadvantages of a Monolithic Repository
Advantages and Disadvantages of a Monolithic Repository
mustafa sarac
 
The path to an hybrid open source paradigm
The path to an hybrid open source paradigmThe path to an hybrid open source paradigm
The path to an hybrid open source paradigm
Jonathan Challener
 
Develop, Deploy, Iterate Often.
Develop, Deploy, Iterate Often.Develop, Deploy, Iterate Often.
Develop, Deploy, Iterate Often.
J On The Beach
 
Why Google Stores Billions of Lines of Code in a Single Repository
Why Google Stores Billions of Lines of Code in a Single RepositoryWhy Google Stores Billions of Lines of Code in a Single Repository
Why Google Stores Billions of Lines of Code in a Single Repository
Kapil Mohan
 
why google stores billions of lines of code in a single repository
why google stores billions of lines of code in a single repositorywhy google stores billions of lines of code in a single repository
why google stores billions of lines of code in a single repository
mustafa sarac
 
What_is_DevOps.pptx
What_is_DevOps.pptxWhat_is_DevOps.pptx
What_is_DevOps.pptx
mridulsharma774687
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
PROIDEA
 
What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.
anilpmuvvala
 
What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.
anilpmuvvala
 
Best dev ops tools to master in 2022
Best dev ops tools to master in 2022Best dev ops tools to master in 2022
Best dev ops tools to master in 2022
SameerShaik43
 
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang RamadhanCara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
DicodingEvent
 
Building a design system with (p)react
Building a design system with (p)reactBuilding a design system with (p)react
Building a design system with (p)react
Bart Waardenburg
 
summer file - Copy
summer file - Copysummer file - Copy
summer file - Copy
Rakesh Kumar
 
Six Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower ScientistsSix Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower Scientists
David De Roure
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates
Liran Levy
 
intro to DevOps
intro to DevOpsintro to DevOps
intro to DevOps
Mujahed Al-Tahle
 
Git & dev ops come together, right now!
Git & dev ops come together, right now!Git & dev ops come together, right now!
Git & dev ops come together, right now!
rhirschfeld
 
App Engine Application for Detecting Similar Files in Google Drive
App Engine Application for Detecting Similar Files in Google DriveApp Engine Application for Detecting Similar Files in Google Drive
App Engine Application for Detecting Similar Files in Google Drive
IRJET Journal
 
Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌
Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌
Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌
Geovanne Bertonha
 
Learning activity 4
Learning activity 4Learning activity 4
Learning activity 4
Aileen Banaguas
 

Similar to <Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Enterprises (20)

Advantages and Disadvantages of a Monolithic Repository
Advantages and Disadvantages of a Monolithic RepositoryAdvantages and Disadvantages of a Monolithic Repository
Advantages and Disadvantages of a Monolithic Repository
 
The path to an hybrid open source paradigm
The path to an hybrid open source paradigmThe path to an hybrid open source paradigm
The path to an hybrid open source paradigm
 
Develop, Deploy, Iterate Often.
Develop, Deploy, Iterate Often.Develop, Deploy, Iterate Often.
Develop, Deploy, Iterate Often.
 
Why Google Stores Billions of Lines of Code in a Single Repository
Why Google Stores Billions of Lines of Code in a Single RepositoryWhy Google Stores Billions of Lines of Code in a Single Repository
Why Google Stores Billions of Lines of Code in a Single Repository
 
why google stores billions of lines of code in a single repository
why google stores billions of lines of code in a single repositorywhy google stores billions of lines of code in a single repository
why google stores billions of lines of code in a single repository
 
What_is_DevOps.pptx
What_is_DevOps.pptxWhat_is_DevOps.pptx
What_is_DevOps.pptx
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
 
What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.
 
What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.
 
Best dev ops tools to master in 2022
Best dev ops tools to master in 2022Best dev ops tools to master in 2022
Best dev ops tools to master in 2022
 
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang RamadhanCara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
 
Building a design system with (p)react
Building a design system with (p)reactBuilding a design system with (p)react
Building a design system with (p)react
 
summer file - Copy
summer file - Copysummer file - Copy
summer file - Copy
 
Six Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower ScientistsSix Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower Scientists
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates
 
intro to DevOps
intro to DevOpsintro to DevOps
intro to DevOps
 
Git & dev ops come together, right now!
Git & dev ops come together, right now!Git & dev ops come together, right now!
Git & dev ops come together, right now!
 
App Engine Application for Detecting Similar Files in Google Drive
App Engine Application for Detecting Similar Files in Google DriveApp Engine Application for Detecting Similar Files in Google Drive
App Engine Application for Detecting Similar Files in Google Drive
 
Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌
Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌
Drupal Summit Tokyo 2017 -- 企業向けオープンソースCMS Drupalの全貌
 
Learning activity 4
Learning activity 4Learning activity 4
Learning activity 4
 

More from Nicolas Brousse

Improving Adobe Experience Cloud Services Dependability with Machine Learning
Improving Adobe Experience Cloud Services Dependability with Machine LearningImproving Adobe Experience Cloud Services Dependability with Machine Learning
Improving Adobe Experience Cloud Services Dependability with Machine Learning
Nicolas Brousse
 
IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...
IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...
IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...
Nicolas Brousse
 
PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...
PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...
PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...
Nicolas Brousse
 
Adobe Advertising Cloud: The Reality of Cloud Bursting with OpenStack
Adobe Advertising Cloud: The Reality of Cloud Bursting with OpenStackAdobe Advertising Cloud: The Reality of Cloud Bursting with OpenStack
Adobe Advertising Cloud: The Reality of Cloud Bursting with OpenStack
Nicolas Brousse
 
SuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuite
SuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuiteSuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuite
SuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuite
Nicolas Brousse
 
SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...
SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...
SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...
Nicolas Brousse
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthUSENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
Nicolas Brousse
 
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Nicolas Brousse
 
Improving Operations Efficiency with Puppet
Improving Operations Efficiency with PuppetImproving Operations Efficiency with Puppet
Improving Operations Efficiency with Puppet
Nicolas Brousse
 
Scaling Bleeding Edge Technology in a Fast-paced Environment
Scaling Bleeding Edge Technology in a Fast-paced EnvironmentScaling Bleeding Edge Technology in a Fast-paced Environment
Scaling Bleeding Edge Technology in a Fast-paced Environment
Nicolas Brousse
 
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Nicolas Brousse
 
Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...
Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...
Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...
Nicolas Brousse
 
Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...
Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...
Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...
Nicolas Brousse
 

More from Nicolas Brousse (13)

Improving Adobe Experience Cloud Services Dependability with Machine Learning
Improving Adobe Experience Cloud Services Dependability with Machine LearningImproving Adobe Experience Cloud Services Dependability with Machine Learning
Improving Adobe Experience Cloud Services Dependability with Machine Learning
 
IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...
IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...
IEEE ISSRE 2018 - Use of Self-Healing Techniques to Improve the Reliability o...
 
PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...
PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...
PuppetConf 2017 | Adobe Advertising Cloud: A Lean Puppet Workflow to Support ...
 
Adobe Advertising Cloud: The Reality of Cloud Bursting with OpenStack
Adobe Advertising Cloud: The Reality of Cloud Bursting with OpenStackAdobe Advertising Cloud: The Reality of Cloud Bursting with OpenStack
Adobe Advertising Cloud: The Reality of Cloud Bursting with OpenStack
 
SuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuite
SuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuiteSuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuite
SuiteWorld16: Mega Volume - How TubeMogul Leverages NetSuite
 
SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...
SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...
SRECon16: Moving Large Workloads from a Public Cloud to an OpenStack Private ...
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthUSENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
 
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
 
Improving Operations Efficiency with Puppet
Improving Operations Efficiency with PuppetImproving Operations Efficiency with Puppet
Improving Operations Efficiency with Puppet
 
Scaling Bleeding Edge Technology in a Fast-paced Environment
Scaling Bleeding Edge Technology in a Fast-paced EnvironmentScaling Bleeding Edge Technology in a Fast-paced Environment
Scaling Bleeding Edge Technology in a Fast-paced Environment
 
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
Scaling on EC2 in a fast-paced environment (LISA'11 - Full Paper)
 
Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...
Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...
Bringing Business Awareness to Your Operation Team (Nagios World Conference 2...
 
Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...
Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...
Optimizing your Monitoring and Trending tools for the Cloud (Nagios World Con...
 

Recently uploaded

一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
ecqow
 
132/33KV substation case study Presentation
132/33KV substation case study Presentation132/33KV substation case study Presentation
132/33KV substation case study Presentation
kandramariana6
 
Properties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptxProperties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptx
MDSABBIROJJAMANPAYEL
 
Software Engineering and Project Management - Introduction, Modeling Concepts...
Software Engineering and Project Management - Introduction, Modeling Concepts...Software Engineering and Project Management - Introduction, Modeling Concepts...
Software Engineering and Project Management - Introduction, Modeling Concepts...
Prakhyath Rai
 
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
shadow0702a
 
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
Yasser Mahgoub
 
22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt
KrishnaveniKrishnara1
 
ISPM 15 Heat Treated Wood Stamps and why your shipping must have one
ISPM 15 Heat Treated Wood Stamps and why your shipping must have oneISPM 15 Heat Treated Wood Stamps and why your shipping must have one
ISPM 15 Heat Treated Wood Stamps and why your shipping must have one
Las Vegas Warehouse
 
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURSCompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
RamonNovais6
 
Engineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdfEngineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdf
abbyasa1014
 
artificial intelligence and data science contents.pptx
artificial intelligence and data science contents.pptxartificial intelligence and data science contents.pptx
artificial intelligence and data science contents.pptx
GauravCar
 
spirit beverages ppt without graphics.pptx
spirit beverages ppt without graphics.pptxspirit beverages ppt without graphics.pptx
spirit beverages ppt without graphics.pptx
Madan Karki
 
Software Quality Assurance-se412-v11.ppt
Software Quality Assurance-se412-v11.pptSoftware Quality Assurance-se412-v11.ppt
Software Quality Assurance-se412-v11.ppt
TaghreedAltamimi
 
Material for memory and display system h
Material for memory and display system hMaterial for memory and display system h
Material for memory and display system h
gowrishankartb2005
 
Certificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi AhmedCertificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi Ahmed
Mahmoud Morsy
 
cnn.pptx Convolutional neural network used for image classication
cnn.pptx Convolutional neural network used for image classicationcnn.pptx Convolutional neural network used for image classication
cnn.pptx Convolutional neural network used for image classication
SakkaravarthiShanmug
 
Manufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptxManufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptx
Madan Karki
 
Comparative analysis between traditional aquaponics and reconstructed aquapon...
Comparative analysis between traditional aquaponics and reconstructed aquapon...Comparative analysis between traditional aquaponics and reconstructed aquapon...
Comparative analysis between traditional aquaponics and reconstructed aquapon...
bijceesjournal
 
Mechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdfMechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdf
21UME003TUSHARDEB
 
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Sinan KOZAK
 

Recently uploaded (20)

一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
 
132/33KV substation case study Presentation
132/33KV substation case study Presentation132/33KV substation case study Presentation
132/33KV substation case study Presentation
 
Properties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptxProperties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptx
 
Software Engineering and Project Management - Introduction, Modeling Concepts...
Software Engineering and Project Management - Introduction, Modeling Concepts...Software Engineering and Project Management - Introduction, Modeling Concepts...
Software Engineering and Project Management - Introduction, Modeling Concepts...
 
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
 
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
 
22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt22CYT12-Unit-V-E Waste and its Management.ppt
22CYT12-Unit-V-E Waste and its Management.ppt
 
ISPM 15 Heat Treated Wood Stamps and why your shipping must have one
ISPM 15 Heat Treated Wood Stamps and why your shipping must have oneISPM 15 Heat Treated Wood Stamps and why your shipping must have one
ISPM 15 Heat Treated Wood Stamps and why your shipping must have one
 
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURSCompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
 
Engineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdfEngineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdf
 
artificial intelligence and data science contents.pptx
artificial intelligence and data science contents.pptxartificial intelligence and data science contents.pptx
artificial intelligence and data science contents.pptx
 
spirit beverages ppt without graphics.pptx
spirit beverages ppt without graphics.pptxspirit beverages ppt without graphics.pptx
spirit beverages ppt without graphics.pptx
 
Software Quality Assurance-se412-v11.ppt
Software Quality Assurance-se412-v11.pptSoftware Quality Assurance-se412-v11.ppt
Software Quality Assurance-se412-v11.ppt
 
Material for memory and display system h
Material for memory and display system hMaterial for memory and display system h
Material for memory and display system h
 
Certificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi AhmedCertificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi Ahmed
 
cnn.pptx Convolutional neural network used for image classication
cnn.pptx Convolutional neural network used for image classicationcnn.pptx Convolutional neural network used for image classication
cnn.pptx Convolutional neural network used for image classication
 
Manufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptxManufacturing Process of molasses based distillery ppt.pptx
Manufacturing Process of molasses based distillery ppt.pptx
 
Comparative analysis between traditional aquaponics and reconstructed aquapon...
Comparative analysis between traditional aquaponics and reconstructed aquapon...Comparative analysis between traditional aquaponics and reconstructed aquapon...
Comparative analysis between traditional aquaponics and reconstructed aquapon...
 
Mechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdfMechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdf
 
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
 

<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Enterprises

  • 1. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. The Issue of Monorepo and Polyrepo In Large Enterprises ‹Programming› 2019 / ICW 2019 Nicolas Brousse | Director, SRE
  • 2. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Practical definitions Monorepo Use one unique source code repository for multiple projects and their dependencies. Polyrepo Use a source code repository for each project, component, and/or library. 2
  • 3. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. A decade of soul-searching Over the past 10 years, we went through: |-> Monorepo on SVN |-> Polyrepo on SVN with use of svn externals |-> Git polyrepo with Code Review (Gerrit) |-> Git polyrepo as mono with Code Review and use of submodules (Gerrit) |-> Git polyrepo with Github Pull Request Model (Bitbucket) |-> Git monorepo with Github Pull Request Model (Bitbucket) |-> Git monorepo with Github Pull Request Model (Github Enterprise) 3
  • 4. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Systems are becoming more complex 4 Complexity Microservices & Distributed Systems Human Cognitive Limit
  • 5. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Remember the Editor War? 5 Image credit: xkcd.com
  • 6. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. A repo war? 6 Structure Implementation Notable Adopters Polyrepo One distinct source code repository for each component and library Amazon, Netflix, Lyft Monorepo One source code repository for a whole company or large project Google, Facebook, Microsoft, Uber, Twitter, React, Angular, Kubernetes Hybrid Poly-as-Mono Updates are made to a polyrepo but managed like a monorepo Android, Chrome Hybrid Mono-as-Poly Updates are made into a monorepo but then split into read-only polyrepo for build or distribution purpose Symphony, Shopsys
  • 7. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 7 Monorepo Polyrepo Customized Developer workflows Unique Team Culture Use one unique source code repository for multiple projects and their dependencies Single source of truth Allow atomic changes simplify large scale refactoring Compound System Use a source code repository for each project, component, and/or library Independent releases cycles Each project may have a customized workflow Isolation
  • 8. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 8 “with a monolithic source tree it makes sense, and is easier, for the person updating a library to update all affected dependencies at the same time. The technical debt incurred by dependent systems is paid down immediately as changes are made.” Rachel Potvin and Josh Levenberg. 2016. Why Google Stores Billions of Lines of Code in a Single Repository. Commun. ACM 59, 7 (June 2016), 78–87. https://doi.org/10.1145/2854146 Diamond Dependency Problem
  • 9. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Culture at the center of the issue  Netflix’s Culture - “freedom and responsibility” and the “keeper test” (Polyrepo)  Google’s Philosophy - "It’s best to do one thing really, really well” and “Great just isn’t good enough” (Monorepo)  Microsoft - ”we needed a culture that allowed us to constantly refresh and renew” – Satya Nadella (Move from polyrepo to monorepo) 9 Source: levels.fyi
  • 10. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.  “An important aspect of Google culture that encourages code quality is the expectation that all code is reviewed before being committed to the repository.”  “A developer can make a major change touching hundreds or thousands of files across the repository in a single consistent operation.” 10 Rachel Potvin and Josh Levenberg. 2016. Why Google Stores Billions of Lines of Code in a Single Repository. Commun. ACM 59, 7 (June 2016), 78–87. https://doi.org/10.1145/2854146
  • 11. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 11 Phil Ensor. 1988. Organizational Renewal-Tearing Down the Functional Silos. In AME Study Group on Functional Organization. AME Target, 4–16.
  • 12. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 12 Jun He, Brian S. Butler, and William R. King. 2007. Team Cognition: Development and Evolution in Software Project Teams. J. of Management Information Systems 24 (2007), 261–292.
  • 13. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 13 “Software project teams’ ability to operate as a team arises from who they are (preexisting team characteristics) and how they interact (team communication). Team cognition concepts provide potential levers for managers seeking to improve the performance of these teams. An arbitrary collection of people can, with a great deal of effort and some luck, accomplish significant goals. However, by forming team cognition, those individuals can increase their chances of success. The more we understand about the formation of team cognition, both within software project teams and in general, the more effective we will be at explaining and supporting the formation of effective teams.” Jun He, Brian S. Butler, and William R. King. 2007. Team Cognition: Development and Evolution in Software Project Teams. J. of Management Information Systems 24 (2007), 261–292.
  • 14. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. “In 2014, we operationalized and validated a model of organizational culture proposed by sociologist Ron Westrum and showed that it drives both software delivery performance and organizational performance. Over the last few years we’ve found a number of management and technical capabilities that influence culture, showing that you can change culture by changing the way work is done in your organization.” “We find that technical and management practices shape culture and that culture in turn helps to improve performance outcomes.“ 14 DORA. 2018. Accelerate: State of DevOps Strategies for a New Economy.
  • 15. © 2018 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Paper Conclusion Technical arguments between one model and another are not a clear-cut. “A monorepo facilitates cultural change and enables a holistic team cognition that ensures high quality work and improves communication, while preserving necessary autonomy.” --- Can the decisioning process of choosing a source code repository structure be more data driven and scientific? Is there an opportunity for architecture / design patterns that could benefit practitioners?15

Editor's Notes

  1. Microservices, Service Mesh, AIops, etc. https://www.linkedin.com/pulse/top-5-machine-learning-self-healing-techniques-used-sre-brousse/
  2. Association for Manufacturing Excellence
  3. “high-performing teams communicate significantly more frequently than low-performing teams”
  4. Nicole Forsgren, Jez Humble, and Gene Kim (DORA: DevOps Research and Assessment) Ron Wstrum -> Westrum Organizational Culture: Pathological, Bureaucratic, Generative Employee Net Promoter Score (eNPS) “Influencing culture through leadership and autonomy” Inverse Conway Maneuver