SlideShare uma empresa Scribd logo
1 de 16
© 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

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

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
 
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
 
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
 
summer file - Copy
summer file - Copysummer file - Copy
summer file - Copy
Rakesh Kumar
 

Semelhante a <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 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.
 
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.
 
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
 

Mais de 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
 

Mais de 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...
 

Último

Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Christo Ananth
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Último (20)

Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 

<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

Notas do Editor

  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