SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Large Scale
                      Development with
                         Git and Gerrit




                        EclipseCon Europe 2012, Ludwigsburg
Matthias   Matthias
Männich     Sohn
Git
 … a distributed revision control system built by the
 Linux project to facilitate code review



JGit & EGit
… Git in Java and Eclipse



Gerrit
 … a JGit based code review system built by the
 Android project

                   Copyright © Matthias Männich, Matthias Sohn
How this journey started…
2006 first experiments:
•  Git wasn’t ready for prime time

2009 SAP joining the Git party
•  join JGit, EGit, Gerrit
•  piloting Git & Gerrit at Eclipse
•  start Lean Development Infrastructure
•  first internal pilots

large SAP projects moving to Git&Gerrit
•  Feb 2010 “Netweaver Cloud” on-demand platform
•  Jul 2011 large C++ Engine Project

Soon: generally available to all kinds of projects
                   Copyright © Matthias Männich, Matthias Sohn
Lean Development Infrastructure
Agile project organization
•  Teams of 10
•  Large projects: Product team + n dev teams

Learn from Open Source
•  Tools:
   Git, EGit, Gerrit, Skalli
   Maven, Nexus, Tycho, Sonar …
•  Communication: mailing lists, forums
•  Contributions between projects/products




                 Copyright © Matthias Männich, Matthias Sohn
Git / Gerrit for Lean DI

 All repositories hosted on central Gerrit server
 •  Used around the globe
 •  2k repositories, >2k users
 •  Scales pretty well if repository < 1G

 Central admins operate server and ensure standards

 Self Services for Projects (Skalli)
 •  create Git repository
 •  self-administer their repositories




                    Copyright © Matthias Männich, Matthias Sohn
Introducing Code Review

Learning from successful open source projects
•  transparency through code review and mailing lists

Code Review
... is new for most SAP developers
... is optional
... used by many projects today
... some teams do reviews across teams

Takes time to learn




                  Copyright © Matthias Männich, Matthias Sohn
Gerrit Code Review
                                                                             Gerrit
                          master

                                   change 12                                git    git
                                                                               git     git
                  change 10
                                            change 23




        Developer PC                                                   Developer PC



      git                                                          git
            git                                                          git

                              Copyright © Matthias Männich, Matthias Sohn
Code Review
                      push change




                      Gerrit notifies
                      reviewers
                                                                 other teams




          verify change            review code            team           Jenkins CI




                      comment &
improve               vote
change



abandon                                                   merge change
change                                                    into master


          Copyright © Matthias Männich, Matthias Sohn
Examples

Large C++ Engine Project
•  > 250 developers, many locations
•  large code base: > 1M lines of code
•  1 huge Git repository, many branches

“Netweaver Cloud” on-demand platform
•  ~150 developers, 3 locations
•  modular Java stack
•  >100 Git repositories




                 Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Motivation

in central VCS branching might get complicated

mostly single development branch models

continuous integration does not scale well
       tested                               tested                     error detected
                                                                       (introduced by?)
                1 hour



                                                                            30 commits/hour




not every commit gets full test coverage

high delay between erroneous submit and detection
                         Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Considerations

good training of the team is essential
- convincing       80%       rather easy
                   95%       takes some time
                 100%        …

infrastructure needs will increase

responsibilities might shift from quality team to
development

standard compliance (if applicable)



                  Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching

appealing to implement workflows inspired by
•  Linux Kernel Development
•  Gerrit Development
•  Git Flow
•  …



preconditions might not be feasible
•  strong hierarchies
•  modular code structure
•  “it’s done when it’s done” <> commercial interests


                  Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching

currently implemented and constantly evolving

- lots of topic branches (> 100 active)
       - topic owner concept (responsibility role)
       - small teams
       - different branch lifetimes
       - team defined quality barriers

- flat hierarchy

- high level branches maintained by quality team



                   Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching
                                                         Delivery



                           Main Topic 1                                       Main Topic 2




            Subtopic 1      Suptopic 2             ...           Subtopic 3    Suptopic 4    ...




consider
•  main topic branches should be distinct
   development areas (modularization?)
•  possible delays caused by topic integration
   (always acceptable?)
•  integration of main topics is done by quality team
                         Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching
                                                                   Authority
                                Delivery




                                                                 Quality Team
                               Integration


                                             Strong Quality Barriers



                  Subtopic 1   Suptopic 2      ...               Development




integration is done by developers
approval is given by quality team

quality barriers implemented with Gerrit Code Review

pretested code states => always stable integration branch
Migrate large projects – Quality barriers

Gerrit usage allows “pretested commits”

commits have to pass (before integration!)
•  Code review (human)
•  Builds and tests on several platforms

test coverage dependent on branch hierarchy level

ideal: every quality metric on every level




                   Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Recommendations

there is no golden rule (sorry)

get inspired by similar projects

discuss and implement a solution

heavily review your design and stay able to adjust

shift responsibilities to expertise location
•  code integration:          development
•  quality judgment:          quality team

implement extensive tool support

                   Copyright © Matthias Männich, Matthias Sohn
Migrate large projects – Some rough stats

250 developers

120 topic branches (lowest level)

50k Gerrit changes per year

100 “big” build and test servers




                  Copyright © Matthias Männich, Matthias Sohn
Netweaver Cloud Platform

~150 developers

Cloud infrastructure
Cloud services
OSGi (Equinox) based Java server
Tools

many mid-size repositories
modular Maven build
versioned API
p2 deployment

delivery every 2 weeks
                  Copyright © Matthias Männich, Matthias Sohn
Code Review & Scrum

     changes refined
     in review




                                      2 weekly Sprints




         Review

                                                             Planning
                  Release




                        Copyright © Matthias Männich, Matthias Sohn
Continuous Delivery


                                                    2 weekly sprint
                                                                                          Fix
                                                                                        Release

                                     Release
                                                                                   Fix bugs
                                                          Pull release
       staging
                         Deploy to
                          Staging                                                                   factory

                                                                                        Deploy to
                                                                                         Factory
                 Integration
                     Test                        2 weekly delivery




                   Deploy to
prod                                                                                      Q Gate
                 Internal Prod

                                     Copyright © Matthias Männich, Matthias Sohn
Integrating Core Cloud Infrastructure
                                                                 select comp.
                                                                  commit(s)
              Main
              Build
                                                                     trigger
                                                                    release

    Comp. A
                      linked as
                      submodules
                                                  update versions                   build
    Comp. B


                                                                                    stage
    Comp. C



                                                                               integration test
    Comp. D



    Comp. E                                          tag release                  release



                            Copyright © Matthias Männich, Matthias Sohn
Summary

Benefits
•  (many) developers like it
•  review and pre-tested commits improve quality
•  always able to ship

Future
•  scale
•  improve tools based on feedback

•  make use of submodule support in Gerrit
•  better support correction process
•  manage contributions between projects
   (inner source)

                 Copyright © Matthias Männich, Matthias Sohn
Q&A

Contenu connexe

Tendances

Git Gerrit Mit Teamforge
Git Gerrit Mit TeamforgeGit Gerrit Mit Teamforge
Git Gerrit Mit Teamforge
CollabNet
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final
Mythri P K
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflow
Ruben Tan
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21
Stefan Lay
 
Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29
Stefan Lay
 

Tendances (20)

Git/Gerrit with TeamForge
Git/Gerrit with TeamForgeGit/Gerrit with TeamForge
Git/Gerrit with TeamForge
 
Git Gerrit Mit Teamforge
Git Gerrit Mit TeamforgeGit Gerrit Mit Teamforge
Git Gerrit Mit Teamforge
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
 
Git strategies for DevOps
Git strategies for DevOpsGit strategies for DevOps
Git strategies for DevOps
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflow
 
It's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxIt's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolbox
 
You shall not pass - Control your code quality gates with a wizard.
You shall not pass - Control your code quality gates with a wizard.You shall not pass - Control your code quality gates with a wizard.
You shall not pass - Control your code quality gates with a wizard.
 
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21
 
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
 
How Git and Gerrit make you more productive
How Git and Gerrit make you more productiveHow Git and Gerrit make you more productive
How Git and Gerrit make you more productive
 
How we git - commit policy and code review
How we git - commit policy and code reviewHow we git - commit policy and code review
How we git - commit policy and code review
 
Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29
 
OSGi Versioning & Testing
OSGi Versioning & TestingOSGi Versioning & Testing
OSGi Versioning & Testing
 
Trunk-Based Development
Trunk-Based DevelopmentTrunk-Based Development
Trunk-Based Development
 
Gerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginGerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub plugin
 
Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce Innovations Showcase 
Perforce Innovations Showcase 
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in Eclipse
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3
 

Similaire à Large Scale Development with Git and Gerrit - EclipseCon Europe 2012

The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft AjaxThe Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
Darren Sim
 
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
Aberla
 

Similaire à Large Scale Development with Git and Gerrit - EclipseCon Europe 2012 (20)

Agile & ALM tools
Agile & ALM toolsAgile & ALM tools
Agile & ALM tools
 
Cloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOpsCloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOps
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
 
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHubIncrease the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
 
Git usage (Basics and workflow)
Git usage (Basics and workflow)Git usage (Basics and workflow)
Git usage (Basics and workflow)
 
Git essential training & sharing self
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing self
 
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft AjaxThe Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
 
Multi-QA Environment, parallel development with Git
Multi-QA Environment, parallel development with GitMulti-QA Environment, parallel development with Git
Multi-QA Environment, parallel development with Git
 
How We Use GitHub
How We Use GitHubHow We Use GitHub
How We Use GitHub
 
Blue Monitor Software Development
Blue Monitor Software DevelopmentBlue Monitor Software Development
Blue Monitor Software Development
 
Blue Monitor Systems Software Development Services
Blue Monitor Systems Software Development ServicesBlue Monitor Systems Software Development Services
Blue Monitor Systems Software Development Services
 
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
 
Optimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git Webinar
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 
Migrate to microservices
Migrate to microservicesMigrate to microservices
Migrate to microservices
 
Accelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUpAccelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUp
 

Plus de msohn

Plus de msohn (20)

Project Gardener - EclipseCon Europe - 2018-10-23
Project Gardener - EclipseCon Europe - 2018-10-23Project Gardener - EclipseCon Europe - 2018-10-23
Project Gardener - EclipseCon Europe - 2018-10-23
 
News from Git in Eclipse - EclipseCon EU - 2016-10-26
News from Git in Eclipse - EclipseCon EU - 2016-10-26News from Git in Eclipse - EclipseCon EU - 2016-10-26
News from Git in Eclipse - EclipseCon EU - 2016-10-26
 
Git journey from mars to neon EclipseCon North America - 2016-03-08
Git journey from mars to neon   EclipseCon North America - 2016-03-08Git journey from mars to neon   EclipseCon North America - 2016-03-08
Git journey from mars to neon EclipseCon North America - 2016-03-08
 
Versioning large binary files with JGit, EGit and Gerrit
Versioning large binary files with JGit, EGit and GerritVersioning large binary files with JGit, EGit and Gerrit
Versioning large binary files with JGit, EGit and Gerrit
 
News from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 EuropeNews from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 Europe
 
Git missiontomars 2015-03-10
Git missiontomars 2015-03-10Git missiontomars 2015-03-10
Git missiontomars 2015-03-10
 
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
News from EGit - Talk EclipseCon Europe 2014 - LudwigsburgNews from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreenGit Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest stateGit Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
 
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blameGit Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
 
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebaseGit Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
 
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history viewGit Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
 
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

Large Scale Development with Git and Gerrit - EclipseCon Europe 2012

  • 1. Large Scale Development with Git and Gerrit EclipseCon Europe 2012, Ludwigsburg Matthias Matthias Männich Sohn
  • 2. Git … a distributed revision control system built by the Linux project to facilitate code review JGit & EGit … Git in Java and Eclipse Gerrit … a JGit based code review system built by the Android project Copyright © Matthias Männich, Matthias Sohn
  • 3. How this journey started… 2006 first experiments: •  Git wasn’t ready for prime time 2009 SAP joining the Git party •  join JGit, EGit, Gerrit •  piloting Git & Gerrit at Eclipse •  start Lean Development Infrastructure •  first internal pilots large SAP projects moving to Git&Gerrit •  Feb 2010 “Netweaver Cloud” on-demand platform •  Jul 2011 large C++ Engine Project Soon: generally available to all kinds of projects Copyright © Matthias Männich, Matthias Sohn
  • 4. Lean Development Infrastructure Agile project organization •  Teams of 10 •  Large projects: Product team + n dev teams Learn from Open Source •  Tools: Git, EGit, Gerrit, Skalli Maven, Nexus, Tycho, Sonar … •  Communication: mailing lists, forums •  Contributions between projects/products Copyright © Matthias Männich, Matthias Sohn
  • 5. Git / Gerrit for Lean DI All repositories hosted on central Gerrit server •  Used around the globe •  2k repositories, >2k users •  Scales pretty well if repository < 1G Central admins operate server and ensure standards Self Services for Projects (Skalli) •  create Git repository •  self-administer their repositories Copyright © Matthias Männich, Matthias Sohn
  • 6. Introducing Code Review Learning from successful open source projects •  transparency through code review and mailing lists Code Review ... is new for most SAP developers ... is optional ... used by many projects today ... some teams do reviews across teams Takes time to learn Copyright © Matthias Männich, Matthias Sohn
  • 7. Gerrit Code Review Gerrit master change 12 git git git git change 10 change 23 Developer PC Developer PC git git git git Copyright © Matthias Männich, Matthias Sohn
  • 8. Code Review push change Gerrit notifies reviewers other teams verify change review code team Jenkins CI comment & improve vote change abandon merge change change into master Copyright © Matthias Männich, Matthias Sohn
  • 9. Examples Large C++ Engine Project •  > 250 developers, many locations •  large code base: > 1M lines of code •  1 huge Git repository, many branches “Netweaver Cloud” on-demand platform •  ~150 developers, 3 locations •  modular Java stack •  >100 Git repositories Copyright © Matthias Männich, Matthias Sohn
  • 10. Migrate large projects - Motivation in central VCS branching might get complicated mostly single development branch models continuous integration does not scale well tested tested error detected (introduced by?) 1 hour 30 commits/hour not every commit gets full test coverage high delay between erroneous submit and detection Copyright © Matthias Männich, Matthias Sohn
  • 11. Migrate large projects - Considerations good training of the team is essential - convincing 80% rather easy 95% takes some time 100% … infrastructure needs will increase responsibilities might shift from quality team to development standard compliance (if applicable) Copyright © Matthias Männich, Matthias Sohn
  • 12. Migrate large projects - Branching appealing to implement workflows inspired by •  Linux Kernel Development •  Gerrit Development •  Git Flow •  … preconditions might not be feasible •  strong hierarchies •  modular code structure •  “it’s done when it’s done” <> commercial interests Copyright © Matthias Männich, Matthias Sohn
  • 13. Migrate large projects - Branching currently implemented and constantly evolving - lots of topic branches (> 100 active) - topic owner concept (responsibility role) - small teams - different branch lifetimes - team defined quality barriers - flat hierarchy - high level branches maintained by quality team Copyright © Matthias Männich, Matthias Sohn
  • 14. Migrate large projects - Branching Delivery Main Topic 1 Main Topic 2 Subtopic 1 Suptopic 2 ... Subtopic 3 Suptopic 4 ... consider •  main topic branches should be distinct development areas (modularization?) •  possible delays caused by topic integration (always acceptable?) •  integration of main topics is done by quality team Copyright © Matthias Männich, Matthias Sohn
  • 15. Migrate large projects - Branching Authority Delivery Quality Team Integration Strong Quality Barriers Subtopic 1 Suptopic 2 ... Development integration is done by developers approval is given by quality team quality barriers implemented with Gerrit Code Review pretested code states => always stable integration branch
  • 16. Migrate large projects – Quality barriers Gerrit usage allows “pretested commits” commits have to pass (before integration!) •  Code review (human) •  Builds and tests on several platforms test coverage dependent on branch hierarchy level ideal: every quality metric on every level Copyright © Matthias Männich, Matthias Sohn
  • 17. Migrate large projects - Recommendations there is no golden rule (sorry) get inspired by similar projects discuss and implement a solution heavily review your design and stay able to adjust shift responsibilities to expertise location •  code integration: development •  quality judgment: quality team implement extensive tool support Copyright © Matthias Männich, Matthias Sohn
  • 18. Migrate large projects – Some rough stats 250 developers 120 topic branches (lowest level) 50k Gerrit changes per year 100 “big” build and test servers Copyright © Matthias Männich, Matthias Sohn
  • 19. Netweaver Cloud Platform ~150 developers Cloud infrastructure Cloud services OSGi (Equinox) based Java server Tools many mid-size repositories modular Maven build versioned API p2 deployment delivery every 2 weeks Copyright © Matthias Männich, Matthias Sohn
  • 20. Code Review & Scrum changes refined in review 2 weekly Sprints Review Planning Release Copyright © Matthias Männich, Matthias Sohn
  • 21. Continuous Delivery 2 weekly sprint Fix Release Release Fix bugs Pull release staging Deploy to Staging factory Deploy to Factory Integration Test 2 weekly delivery Deploy to prod Q Gate Internal Prod Copyright © Matthias Männich, Matthias Sohn
  • 22. Integrating Core Cloud Infrastructure select comp. commit(s) Main Build trigger release Comp. A linked as submodules update versions build Comp. B stage Comp. C integration test Comp. D Comp. E tag release release Copyright © Matthias Männich, Matthias Sohn
  • 23. Summary Benefits •  (many) developers like it •  review and pre-tested commits improve quality •  always able to ship Future •  scale •  improve tools based on feedback •  make use of submodule support in Gerrit •  better support correction process •  manage contributions between projects (inner source) Copyright © Matthias Männich, Matthias Sohn
  • 24. Q&A