SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Google Confidential and Proprietary
Continuous Integration at
Google Scale
By John Micco
Developer Infrastructure
Google Confidential and Proprietary
● >30,000 developers in 40+ offices
● 13,000+ projects under active development
● 30k submissions per day (1 every 3 seconds)
● Single monolithic code tree with mixed language code
● Development on one branch - submissions at head
● All builds from source
● 30+ sustained code changes per minute with 90+ peaks
● 50% of code changes monthly
● 150+ million test cases / day, > 150 years of test / day
● Supports continuous deployment for all Google teams!
Speed and Scale
Google Confidential and Proprietary
Overview
1. Continuous Integration Goals
2. Continuous Integration at Google
3. Future of testing
Google Confidential and Proprietary
● Provide real-time information to build monitors
○ Identify failures fast
○ Identify culprit Changes
○ Handle flaky tests
● Provide frequent green builds for cutting releases
○ Identify recent green builds
○ Show results of all testing together
○ Allow release tooling to choose a green build
○ Handle flaky tests
"green build" = all tests contained in that build are passing at a given
Change.
Continuous Integration
Google Confidential and Proprietary
● Develop Safely
○Sync to last green changelist
○Identify whether change will break the build before submit
○Submit with confidence
○Handle flaky tests
Continuous Integration (cont)
Google Confidential and Proprietary
Standard Continuous Build System
● Triggers builds in continuous cycle
● Cycle time = longest build + test cycle
● Tests many changes together
● Which change broke the build?
Google Confidential and Proprietary
● Triggers tests on every change
● Uses fine-grained dependencies
● Change 2 broke test 1
Google Continuous Build System
Google Confidential and Proprietary
Continuous Integration Display
Google Confidential and Proprietary
● Identifies failures sooner
● Identifies culprit change precisely
○ Avoids divide-and-conquer and tribal knowledge
● Lower compute costs using fine grained dependencies
● Keeps the build green by reducing time to fix breaks
● Accepted enthusiastically by product teams
● Enables teams to ship with fast iteration times
○ Supports submit-to-production times of less than 36
hours for some projects
Benefits
Google Confidential and Proprietary
● Requires enormous investment in compute resources (it
helps to be at Google) grows in proportion to:
○ Submission rate
○ Average build + test time
○ Variants (debug, opt, valgrind, etc.)
○ Increasing dependencies on core libraries
○ Branches
● Requires updating dependencies on each change
○ Takes time to update - delays start of testing
Costs
Google Confidential and Proprietary
● Makes testing available before submit
● Uses fine-grained dependencies
○ Recalculate any dependency changes
● Uses same pool of compute resources at high priority
● Avoids breaking the build
● Captures contents of a change and tests in isolation
○ Tests against head
○ Identifies problems with missing files
● Integrates with
○ submission tool - submit iff testing is green
○ Code Review Tool - results are posted to the review thread
Developing Safely - presubmit
Google Confidential and Proprietary
Example Presubmit Display
Google Confidential and Proprietary
Practical Matters - Test Growth
● Sources of growth in test execution time
○ More developers = increased submission rate
○ More tests
○ Longer running tests
○ Tests consuming more resources (threading)
● Examine the growth trends
○ Predict compute needs
○ Look for any build system features required
Build / Test Compute Resources
Jan
2011
Jan
2012
Jan
2013
Jul 2012
Jul 2011
Google Confidential and Proprietary
● Problems
○ Quadratic execution time growth w/ 2 factors
■ Submit rate - grows linearly
■ Test pool size - grows linearly
○ Ultimately cannot run every affected test @ every change
○ Low latency results still top requirement
● Solution: Just in time scheduling (JIT)
Test Growth
Continuous Integration:
● Run every test affected at every changelist.
In Production:
● Build and run tests concurrently on Google’s distributed
build and test backend.
JIT
as often as possible
JIT Scheduling
Schedule tests to run only when
system has capacity.
Produce project-wide results at
periodic changelists.
Milestone Property
A changelist C is a milestone iff ...
● All tests affected at C are run
● All tests affected since the previous
milestone are run.
● All these tests are run at their greatest
affecting changelist <= C.
Milestone Property
A changelist C is a milestone iff ...
● All tests affected at C are run
● All tests affected since the previous
milestone are run.
● All these tests are run at their greatest
affecting changelist <= C.
Exactly the work
necessary to deliver a
conclusive project status
Confidential + Proprietary
Change Lists
AffectedTestTargetset
Cut milestone
at this CL
21
Confidential + Proprietary
Change Lists
AffectedTestTargetset
22
Confidential + Proprietary
Change Lists
AffectedTestTargetset
23
Confidential + Proprietary
Change Lists
AffectedTestTargetset
24
Confidential + Proprietary
Change Lists
AffectedTestTargetset
25
Google Confidential and Proprietary
JIT scheduling results
● JIT scheduler changed compute growth from quadratic to linear!
● Without it, compute demand would have already consumed all of
Google's capacity
○ We literally either would have had to stop testing this way or stop
running user searches
● Enabled Google to keep providing fast feedback to developers with
reasonable compute costs
Google Confidential and Proprietary
Cuprit Finding - Transition to Fail
A
Time
Targets
Changelists
1 2 3
Passed
Affected, but not run (yet)
Milestone
Non-milestone
4
Failed
Schedule these
Google Confidential and Proprietary
Cuprit Finding - Transition to Fail
A
Time
Targets
Changelists
1 2 3
Passed
Affected, but not run (yet)
Milestone
Non-milestone
4
Failed
A: Change 3 broke test A.
Google Confidential and Proprietary
Future Direction
● Atif Memon is working with us (on sabbatical) to analyze our data
● He is finding that the dependency distance between a target and
the triggering source file is highly correlated with the probability of
introducing a non-flaky failure. We are working with him to publish
his findings.
Google Confidential and Proprietary
Q & A
For more information:
● http://google-engtools.blogspot.com/2011/06/testing-at-speed-and-scale-of-google.html
● http://www.youtube.com/watch?v=b52aXZ2yi08
● http://www.infoq.com/presentations/Development-at-Google
● http://google-engtools.blogspot.com/
● http://misko.hevery.com/2008/11/11/clean-code-talks-dependency-injection/
● https://www.youtube.com/watch?v=KH2_sB1A6lA&feature=youtube_gdata_player
Q & A

Weitere ähnliche Inhalte

Was ist angesagt?

Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos EngineeringYury Roa
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven DevelopmentViraf Karai
 
Agile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueAgile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueLeadingAgile
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at NetflixDianne Marsh
 
Spiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli KazatchkovSpiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli KazatchkovAtlassian
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Thoughtworks
 
Build your own Tech Radar
Build your own Tech RadarBuild your own Tech Radar
Build your own Tech RadarBruno Trecenti
 
Agile Transformation v1.27
Agile Transformation v1.27Agile Transformation v1.27
Agile Transformation v1.27LeadingAgile
 
Introduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft AzureIntroduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft AzureAna Medina
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsWeaveworks
 
DevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesDevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesShiva Narayanaswamy
 
【概要資料】FORCASとは?
【概要資料】FORCASとは?【概要資料】FORCASとは?
【概要資料】FORCASとは?ZhijiePan1
 
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdfRetrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdfPo-Chuan Chen
 
Agile Fundamentals
Agile FundamentalsAgile Fundamentals
Agile FundamentalsAtlassian
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with GherkinChristian Hassa
 
Next Generation Functional & Visual Testing powered by AI
Next Generation Functional & Visual Testing powered by AINext Generation Functional & Visual Testing powered by AI
Next Generation Functional & Visual Testing powered by AIAnand Bagmar
 

Was ist angesagt? (20)

Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos Engineering
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven Development
 
Agile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueAgile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to Value
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at Netflix
 
Spiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli KazatchkovSpiking Your Way to Improved Agile Development - Anatoli Kazatchkov
Spiking Your Way to Improved Agile Development - Anatoli Kazatchkov
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?
 
Build your own Tech Radar
Build your own Tech RadarBuild your own Tech Radar
Build your own Tech Radar
 
Agile Transformation v1.27
Agile Transformation v1.27Agile Transformation v1.27
Agile Transformation v1.27
 
Introduction to Chaos Engineering
Introduction to Chaos EngineeringIntroduction to Chaos Engineering
Introduction to Chaos Engineering
 
Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos Engineering
 
Introduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft AzureIntroduction to Chaos Engineering with Microsoft Azure
Introduction to Chaos Engineering with Microsoft Azure
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOps
 
DevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesDevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best Practices
 
Business Agility
Business AgilityBusiness Agility
Business Agility
 
【概要資料】FORCASとは?
【概要資料】FORCASとは?【概要資料】FORCASとは?
【概要資料】FORCASとは?
 
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdfRetrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.pdf
 
Agile Fundamentals
Agile FundamentalsAgile Fundamentals
Agile Fundamentals
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with Gherkin
 
SRE From Scratch
SRE From ScratchSRE From Scratch
SRE From Scratch
 
Next Generation Functional & Visual Testing powered by AI
Next Generation Functional & Visual Testing powered by AINext Generation Functional & Visual Testing powered by AI
Next Generation Functional & Visual Testing powered by AI
 

Andere mochten auch

La Hora del Código (2016)
La Hora del Código (2016)La Hora del Código (2016)
La Hora del Código (2016)Alberto Pacheco
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy VirinCocoaHeads France
 
Continuous integration at scale
Continuous integration at scaleContinuous integration at scale
Continuous integration at scaleVivek Singh
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016Gaetano Paternò
 
Inverting The Testing Pyramid
Inverting The Testing PyramidInverting The Testing Pyramid
Inverting The Testing PyramidNaresh Jain
 
Achieving DevOps using Open Source Tools in the Enterprise
Achieving DevOps using Open Source Tools in the EnterpriseAchieving DevOps using Open Source Tools in the Enterprise
Achieving DevOps using Open Source Tools in the EnterpriseCollabNet
 
Continuous Delivery Sounds Great but it Won't Work Here
Continuous Delivery Sounds Great but it Won't Work HereContinuous Delivery Sounds Great but it Won't Work Here
Continuous Delivery Sounds Great but it Won't Work HereJez Humble
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLCAbdul Karim
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Andere mochten auch (11)

La Hora del Código (2016)
La Hora del Código (2016)La Hora del Código (2016)
La Hora del Código (2016)
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy Virin
 
Continuous integration at scale
Continuous integration at scaleContinuous integration at scale
Continuous integration at scale
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016
 
Inverting The Testing Pyramid
Inverting The Testing PyramidInverting The Testing Pyramid
Inverting The Testing Pyramid
 
Achieving DevOps using Open Source Tools in the Enterprise
Achieving DevOps using Open Source Tools in the EnterpriseAchieving DevOps using Open Source Tools in the Enterprise
Achieving DevOps using Open Source Tools in the Enterprise
 
Continuous Delivery Sounds Great but it Won't Work Here
Continuous Delivery Sounds Great but it Won't Work HereContinuous Delivery Sounds Great but it Won't Work Here
Continuous Delivery Sounds Great but it Won't Work Here
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
How Google Works
How Google WorksHow Google Works
How Google Works
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Ähnlich wie Google's Continuous Integration at Scale

Continuous Infrastructure First
Continuous Infrastructure FirstContinuous Infrastructure First
Continuous Infrastructure FirstKris Buytaert
 
Testing in a continuous delivery environment
Testing in a continuous delivery environmentTesting in a continuous delivery environment
Testing in a continuous delivery environmentStefan Verhoeff
 
Continues delivery - Introduction
Continues delivery - IntroductionContinues delivery - Introduction
Continues delivery - IntroductionErez Attar
 
Release & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual TestingRelease & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual TestingDrew Hannay
 
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...Weaveworks
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Vietnam Open Infrastructure User Group
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CDHoang Le
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentationDrew Hannay
 
Building Sustainable Software: An Introduction to Software Engineering
Building Sustainable Software: An Introduction to Software EngineeringBuilding Sustainable Software: An Introduction to Software Engineering
Building Sustainable Software: An Introduction to Software EngineeringMuhammad Shehata
 
Release Engineering
Release EngineeringRelease Engineering
Release EngineeringGDG Odessa
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesLars Rosenquist
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesLars Rosenquist
 
Agile lifecycle handbook by bhawani nandan prasad
Agile lifecycle handbook by bhawani nandan prasadAgile lifecycle handbook by bhawani nandan prasad
Agile lifecycle handbook by bhawani nandan prasadBhawani N Prasad
 
Agile Development Lifecycle and Best Practices with Denodo
Agile Development Lifecycle and Best Practices with DenodoAgile Development Lifecycle and Best Practices with Denodo
Agile Development Lifecycle and Best Practices with DenodoDenodo
 
Agile process with a fixed cost
Agile process with a fixed costAgile process with a fixed cost
Agile process with a fixed costRalph Johnson
 
Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013Moataz Nabil
 
Bots on guard of sdlc
Bots on guard of sdlcBots on guard of sdlc
Bots on guard of sdlcAlexey Tokar
 

Ähnlich wie Google's Continuous Integration at Scale (20)

Continuous Infrastructure First
Continuous Infrastructure FirstContinuous Infrastructure First
Continuous Infrastructure First
 
Testing in a continuous delivery environment
Testing in a continuous delivery environmentTesting in a continuous delivery environment
Testing in a continuous delivery environment
 
Continues delivery - Introduction
Continues delivery - IntroductionContinues delivery - Introduction
Continues delivery - Introduction
 
Release & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual TestingRelease & Iterate Faster: Stop Manual Testing
Release & Iterate Faster: Stop Manual Testing
 
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...
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
 
Gerrit Code Review
Gerrit Code ReviewGerrit Code Review
Gerrit Code Review
 
GitOps , done Right
GitOps , done RightGitOps , done Right
GitOps , done Right
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
 
Building Sustainable Software: An Introduction to Software Engineering
Building Sustainable Software: An Introduction to Software EngineeringBuilding Sustainable Software: An Introduction to Software Engineering
Building Sustainable Software: An Introduction to Software Engineering
 
Release Engineering
Release EngineeringRelease Engineering
Release Engineering
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
Agile lifecycle handbook by bhawani nandan prasad
Agile lifecycle handbook by bhawani nandan prasadAgile lifecycle handbook by bhawani nandan prasad
Agile lifecycle handbook by bhawani nandan prasad
 
Software management for tech startups
Software management for tech startupsSoftware management for tech startups
Software management for tech startups
 
Agile Development Lifecycle and Best Practices with Denodo
Agile Development Lifecycle and Best Practices with DenodoAgile Development Lifecycle and Best Practices with Denodo
Agile Development Lifecycle and Best Practices with Denodo
 
Agile process with a fixed cost
Agile process with a fixed costAgile process with a fixed cost
Agile process with a fixed cost
 
Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013
 
Bots on guard of sdlc
Bots on guard of sdlcBots on guard of sdlc
Bots on guard of sdlc
 

Kürzlich hochgeladen

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Kürzlich hochgeladen (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

Google's Continuous Integration at Scale

  • 1. Google Confidential and Proprietary Continuous Integration at Google Scale By John Micco Developer Infrastructure
  • 2. Google Confidential and Proprietary ● >30,000 developers in 40+ offices ● 13,000+ projects under active development ● 30k submissions per day (1 every 3 seconds) ● Single monolithic code tree with mixed language code ● Development on one branch - submissions at head ● All builds from source ● 30+ sustained code changes per minute with 90+ peaks ● 50% of code changes monthly ● 150+ million test cases / day, > 150 years of test / day ● Supports continuous deployment for all Google teams! Speed and Scale
  • 3. Google Confidential and Proprietary Overview 1. Continuous Integration Goals 2. Continuous Integration at Google 3. Future of testing
  • 4. Google Confidential and Proprietary ● Provide real-time information to build monitors ○ Identify failures fast ○ Identify culprit Changes ○ Handle flaky tests ● Provide frequent green builds for cutting releases ○ Identify recent green builds ○ Show results of all testing together ○ Allow release tooling to choose a green build ○ Handle flaky tests "green build" = all tests contained in that build are passing at a given Change. Continuous Integration
  • 5. Google Confidential and Proprietary ● Develop Safely ○Sync to last green changelist ○Identify whether change will break the build before submit ○Submit with confidence ○Handle flaky tests Continuous Integration (cont)
  • 6. Google Confidential and Proprietary Standard Continuous Build System ● Triggers builds in continuous cycle ● Cycle time = longest build + test cycle ● Tests many changes together ● Which change broke the build?
  • 7. Google Confidential and Proprietary ● Triggers tests on every change ● Uses fine-grained dependencies ● Change 2 broke test 1 Google Continuous Build System
  • 8. Google Confidential and Proprietary Continuous Integration Display
  • 9. Google Confidential and Proprietary ● Identifies failures sooner ● Identifies culprit change precisely ○ Avoids divide-and-conquer and tribal knowledge ● Lower compute costs using fine grained dependencies ● Keeps the build green by reducing time to fix breaks ● Accepted enthusiastically by product teams ● Enables teams to ship with fast iteration times ○ Supports submit-to-production times of less than 36 hours for some projects Benefits
  • 10. Google Confidential and Proprietary ● Requires enormous investment in compute resources (it helps to be at Google) grows in proportion to: ○ Submission rate ○ Average build + test time ○ Variants (debug, opt, valgrind, etc.) ○ Increasing dependencies on core libraries ○ Branches ● Requires updating dependencies on each change ○ Takes time to update - delays start of testing Costs
  • 11. Google Confidential and Proprietary ● Makes testing available before submit ● Uses fine-grained dependencies ○ Recalculate any dependency changes ● Uses same pool of compute resources at high priority ● Avoids breaking the build ● Captures contents of a change and tests in isolation ○ Tests against head ○ Identifies problems with missing files ● Integrates with ○ submission tool - submit iff testing is green ○ Code Review Tool - results are posted to the review thread Developing Safely - presubmit
  • 12. Google Confidential and Proprietary Example Presubmit Display
  • 13. Google Confidential and Proprietary Practical Matters - Test Growth ● Sources of growth in test execution time ○ More developers = increased submission rate ○ More tests ○ Longer running tests ○ Tests consuming more resources (threading) ● Examine the growth trends ○ Predict compute needs ○ Look for any build system features required
  • 14. Build / Test Compute Resources Jan 2011 Jan 2012 Jan 2013 Jul 2012 Jul 2011
  • 15.
  • 16. Google Confidential and Proprietary ● Problems ○ Quadratic execution time growth w/ 2 factors ■ Submit rate - grows linearly ■ Test pool size - grows linearly ○ Ultimately cannot run every affected test @ every change ○ Low latency results still top requirement ● Solution: Just in time scheduling (JIT) Test Growth
  • 17. Continuous Integration: ● Run every test affected at every changelist. In Production: ● Build and run tests concurrently on Google’s distributed build and test backend. JIT as often as possible
  • 18. JIT Scheduling Schedule tests to run only when system has capacity. Produce project-wide results at periodic changelists.
  • 19. Milestone Property A changelist C is a milestone iff ... ● All tests affected at C are run ● All tests affected since the previous milestone are run. ● All these tests are run at their greatest affecting changelist <= C.
  • 20. Milestone Property A changelist C is a milestone iff ... ● All tests affected at C are run ● All tests affected since the previous milestone are run. ● All these tests are run at their greatest affecting changelist <= C. Exactly the work necessary to deliver a conclusive project status
  • 21. Confidential + Proprietary Change Lists AffectedTestTargetset Cut milestone at this CL 21
  • 22. Confidential + Proprietary Change Lists AffectedTestTargetset 22
  • 23. Confidential + Proprietary Change Lists AffectedTestTargetset 23
  • 24. Confidential + Proprietary Change Lists AffectedTestTargetset 24
  • 25. Confidential + Proprietary Change Lists AffectedTestTargetset 25
  • 26. Google Confidential and Proprietary JIT scheduling results ● JIT scheduler changed compute growth from quadratic to linear! ● Without it, compute demand would have already consumed all of Google's capacity ○ We literally either would have had to stop testing this way or stop running user searches ● Enabled Google to keep providing fast feedback to developers with reasonable compute costs
  • 27. Google Confidential and Proprietary Cuprit Finding - Transition to Fail A Time Targets Changelists 1 2 3 Passed Affected, but not run (yet) Milestone Non-milestone 4 Failed Schedule these
  • 28. Google Confidential and Proprietary Cuprit Finding - Transition to Fail A Time Targets Changelists 1 2 3 Passed Affected, but not run (yet) Milestone Non-milestone 4 Failed A: Change 3 broke test A.
  • 29. Google Confidential and Proprietary Future Direction ● Atif Memon is working with us (on sabbatical) to analyze our data ● He is finding that the dependency distance between a target and the triggering source file is highly correlated with the probability of introducing a non-flaky failure. We are working with him to publish his findings.
  • 30. Google Confidential and Proprietary Q & A For more information: ● http://google-engtools.blogspot.com/2011/06/testing-at-speed-and-scale-of-google.html ● http://www.youtube.com/watch?v=b52aXZ2yi08 ● http://www.infoq.com/presentations/Development-at-Google ● http://google-engtools.blogspot.com/ ● http://misko.hevery.com/2008/11/11/clean-code-talks-dependency-injection/ ● https://www.youtube.com/watch?v=KH2_sB1A6lA&feature=youtube_gdata_player Q & A