SlideShare una empresa de Scribd logo
1 de 57
Descargar para leer sin conexión
Compartmentalized
Continuous Integration
David Neto            Devin Sundaram
Senior MTS            Senior MTS
             Altera Corp.
THAT SPECIAL THING




 2000          That special thing…


 2007          p4 vs. svn

 2009          Collaboration++
THREE TAKEAWAYS




•  Continuous Integration is tough with a complex build

•  Compartmentalize
   = Classify + filter the change going into your integration build


•  Track your own metadata for a codeline
   –  With triggers and a second Perforce repository
Continuous Integration
BROADCAST FEATURES / BUGFIX
FIND AND FIX DEFECTS EARLY



                               Release
                                date


Defect cost
Risk to fix




                    Time
SYSTEMS FAIL AT THE SEAMS




     No substitute for end-to-end test
INTEGRATION BUILD IS YOUR PRODUCT


•  Integration build = put all pieces together

•  It’s what you deliver. Everything else is just pretend.

•  Communicate functionality across your team
   –  Broadcast new feature / bugfix


•  Complex systems fail at the seams
   –  Feedback for developers
CONTINUOUS INTEGRATION


•  Make an Integration Build as often as possible

•  It’s the heartbeat of your project
SHAPES ALL PROCESS AND INFRASTUCTURE


 •  Supporting practices [Fowler]:
    –    Maintain a code repository
    –    Automate the build
    –    Make the build self-testing
    –    Commit as often as possible
    –    Every commit to mainline should be built

    – Keep the build fast
    –    Test in a clone of production environment
    –    Make it easy to get latest deliverables
    –    Everyone can see result of latest build
    –    Automate deployment
ALTERA’S SOFTWARE BUILD


•  Altera makes Field Programmable Gate Arrays (FPGA)
   –  Programming = Rewiring
   –  3.9 billion transistors!
•  Altera Complete Design Suite (ACDS)
   = Development tools
•  ACDS Build:
   –    255K source files, 45GB
   –    ~400 developers, 5 locations worldwide
   –    14 hour build, multiprocessor, multiplatform
   –    Hundreds of source changes per day
MULTI LAYER SYSTEM CHALLENGE

•  Long time to build Device data
•  Rapid development within and across layers
   –  E.g. Roll out new device family
   –  E.g. DDR memory interface support crosses 5 layers

                          Domain specific
                      IP cores
                 System integration tools
              Debug and analysis
         Low level compiler
     Physical models: logic, timing, power
 Device data
TOO MANY CHANGES à BUILD RISK


•  Probability of a clean build drops quickly with number of
   new changes
                 Probability of a clean build
           1
          0.9

                          37%
          0.8
          0.7
          0.6
          0.5
                                     13%        99% per change
          0.4                                   reliability
          0.3
                                                95% per change
          0.2
                                                reliability
          0.1
           0
                  1
                 11
                 21
                 31
                 41
                 51
                 61
                 71
                 81
                 91
                101
                111
                121
                131
                141
                151
                161
                171
                181
                191
                201
                 Number of changes


•  When it breaks, hard to tell whose fault
STALE BASELINE à COMPOUNDED RISK


•  The longer you go without an integration build, the
   higher the risk
   –  Blind to recent data, API, code


•  Skip too many heartbeats à PROJECT DIES
SOLUTION: COMPARTMENTALIZATION


•  Must keep integration build stable

•  Limit the damage to the whole by separating the parts

•  But how?
Compartmentalization:
Previous approaches
STAGED BUILDS [Fowler]


•  Full build = pipeline of smaller builds
•  Most developers work with output of earlier stage
•  In our case: Too slow
   –  Device data build = 4 hours
   –  Most layers built later: need device info
•  Verdict: Does not solve our problem
INCREMENTAL REBUILD BOT

•  Each change automatically built on latest stable base
   + changes since stable base
   –  Tell developer if it passed or broke the bot
•  Tricky policy:
   –  If a new change breaks the bot: Keep or Eject?
•  In our case:
   –  Can’t rely on perfect dependencies
   –  Device change à full integration build
   –  Apparent developer reliability improves
•  Verdict: We use it, but does not solve whole problem
MULTIPLE CODELINES: Strategy


•    Partition active work into different codelines
•    Qualify separately, with module build
•    Frequently integrate “main” à private
•    Occasionally integrate private à “main”


     Private1

Main

             Private2
MULTIPLE CODELINES: Variations


•  Development codelines [Wingerd]
•  Microsoft’s Virtual Build Labs [Maraia]
•  Inside/Outside codelines, Remote development lines,
   Change Propagation Queues, … [Appleton et. al.]
•  Virtual Codelines (one codeline + just-in-time
   branching) [Appleton et.al.]
MULTIPLE CODELINES: Issues


•  Integration is manual
   –  Requires superhero to integrate. Painful.
   –  Manual implies infrequent. Delays integration.

    Private1

Main

             Private2                                  Painful?!
•  Hard / impossible to develop a change across
   components
MULTIPLE CODELINES: Verdict


•    Ok if perfect modularity
•    Manual
•    Infrequent
•    Inflexible: Can’t develop across components

•  “Occasional” integration, not Continuous!

“90% of SCM "process" is enforcing codeline promotion
  to compensate for the lack of a mainline” -- Wingerd
Compartmentalization:
  Altera’s solution
REQUIREMENTS


•  One codeline

•  No client customization: Server side only

•  Transparent to most users, most of the time

•  Support ad hoc cross-component development

•  Automatic: Hands off operation
GATEKEEPER STRATEGY

•  Limit the amount of untested code accepted into the
   integration build

•  All code is guilty until proven innocent
•  Integration build uses only innocent (verified) code*

•  Each file revision in one of two integration states:

               Fresh                  Verified
•  Upgrade from Fresh to Verified when used in a
   successful Gatekeeper build


                                                 *Some exceptions
COMPARTMENTALIZE = CLASSIFY + FILTER


       Classify
         into     Gatekeepers
       Domains




                                Integration
CLASSIFICATION: ZONES, DOMAINS


•  Classify each submitted change into a domain
•  Site = Dev location that makes an integration build
•  Zone = named set of depot paths
   –  One zone for each major component
   –  Zone can be “site specific”
       •  When lots of activity in that zone, and want to protect a site from
          bad changes from other sites
•  Domains =
   –  Zone
   –  { Zone:Site | for each Site, each site-specific Zone }
   –  COMBO
       •  If a change touches files in more than one Zone
GATEKEEPER RESPONSIBILITY


•  Each Gatekeeper is responsible for a Domain
   –  Validates Fresh changes in that Domain
•  Run part or all of the build
   –  Uses Fresh revisions from its own Domain
   –  Verified code otherwise
•  If ok, update integration state:


           foo.c #1     #2     #3     #4   #5

           foo.c #1     #2     #3     #4   #5
EXAMPLE GATEKEEPER



     N         Gatekeeper     N+1
                                          Runs part of the
                                          build, on top of
                                          previous full
                                          build.

                                          Responsible for
                                          one domain,
                                          uses verified
                                          source from two
                                          others.
 Integration                Integration
OTHER GATEKEEPER: SPREAD + LIMIT RISK



      N         Gatekeeper     N+1
                                           In general, limited
                                           amount of
                                               Fresh
                                           change going into
                                           any one build.

                                           Climb the reliability
                                           curve!

  Integration                Integration
GATEKEEPER CAN RUN WHOLE BUILD



           Gatekeeper     N+1


                                      But responsible
                                      for just one
                                      domain.

                                      COMBO builds
                                      do this



                        Integration
EXCLUSION RULE

•  Should avoid “broken by construction” gatekeepers
•  Rule: Each file may have fresh revisions from at
   most one domain
   –  Conflicts from: Site-specific zones; COMBO
•  Allow many fresh revisions from same domain
   –  Enable rapid development



                            #3      #4      #5
 foo.c     #1       #2
                            A       A       A

                            #3      #4      #5
 foo.c     #1       #2
                            A       A       B
E.g. Alice (site TO) submits foo.c, foo.h



                               q:SJ         q:TO
           Alice changed    Gatekeeper   Gatekeeper
            param type         uses         uses

                  #5            #4             #5
 foo.c     #4
                 q:TO                         q:TO
                  #2                           #2
 foo.h     #1    q:TO           #1            q:TO


Zone “q” is site-specific
   TO, SJ are sites
Bob (site SJ) develops update to foo.c …


        Bob does not know about Alice’s change




             #5?
foo.c   #4
             q:SJ

foo.h   #1
Bob resolves to Alice’s change




              #5    #6?
foo.c   #4
             q:TO   q:SJ
              #2
foo.h   #1   q:TO
What if we allow Bob to submit?



                              q:SJ
                           Gatekeeper
                              uses

              #5     #6        #6
foo.c   #4
             q:TO   q:SJ      q:SJ      Sees only half of
              #2                        Alice’s change!
foo.h   #1   q:TO              #1



                                      BROKEN BY
                                     CONSTRUCTION
Exclusion Rule avoids broken-by-construction




              #5     #6?
                     #6    Exclusion rule detects
foo.c   #4                 this conflict,
             q:TO   q:SJ
                    q:SJ
                           Rejects Bob’s change
              #2
foo.h   #1   q:TO
Bob waits until Alice’s change is verified




                    #6
                    #6      Now Bob’s change is
foo.c   #4   #5
                   q:SJ
                   q:TO     accepted

foo.h   #1   #2
NOMADIC OWNERSHIP


•  Exclusion Rule creates temporary “ownership” of a file
   –  Delays updates destined to other domains
   –  Especially within site-specific zones
•  Sometimes annoying
   –  Willing to pay the price
   –  Better than the alternatives!
•  Minimized by refactoring: break up files
•  But it’s flexible and automatic
   –  Temporary ownership migrates according to update patterns
SOMETIMES BYPASS GATEKEEPERS



                   •  Rare, long build time
                      –  E.g. COMBO


                   •  Site-protected, long
                      build time

                   •  Acceptable
                      integration risk
TURN OFF GATEKEEPERS



                       •  Late in release cycle
                          –  Development has
                             slowed
                          –  Each change carefully
                             reviewed


                       •  Low integration risk

                       •  Avoid annoyance of
                          Exclusion Rule
Mechanics
INTEGRATION STATUS TRACKING: WHAT


•  For each file revision keep:
   –  State:   Fresh, or Verified
   –  Domain
   –  User, change#, depot path
•  Store in log-structured control file
•  But only need this for recent revisions
   –  Only Fresh revisions can conflict
   –  Each revision eventually Verified
   –  Need only from oldest Fresh until #head
       •  Purge older records
INTEGRATION STATUS TRACKING: HOW


•  Integration status must always be up-to-date
   –  Needed for Exclusion Rule, checked in change-submit trigger
•  Can’t just use floating labels:
   –  P4 triggers can’t update P4 metadata !


•  Need:
   –  Fast atomic updates to control file
   –  Only need latest version
   –  Compact storage
•  Store in a second Perforce repository!
   –  Filetype text+S512: Purges old contents
USING A SECOND PERFORCE REPOSITORY

            Primary P4D

                        Triggers
Users
submit                             Sister P4D

                                            One control file
                                             per tracked
                                               codeline
          Build scripts:
         Code selection.
         Mark-as-Verified
CONFIGURATION


•  Map developers to sites via P4 Group membership
   –  E.g. p4sip.to.users, p4sip.sj.users
•  Codeline policy defined in “p4sip.zone” file
   –  Stored in root of codeline: Carried into branches
   –  Sites
   –  Named zones
       •  Mapping to depot paths relative to the codeline
       •  Which zones are site-specific
   –  Parse output of “p4 print”: Safe in triggers
•  Triggers
   –  From-out, form-in: “change” forms
   –  Per codeline: change-submit, change-commit
LIFE CYCLE OF A CHANGE SUBMISSION (1/2)

 User               Primary P4D             Sister P4D
 p4 submit
               Form-out:
               Lookup user site, insert
               into change description

Edit change    Form-in:
    form*
               Validate site in change
                     description
               Ok
Send list of
   files                     * Can change site string:
                             Masquerade as other site, or
                             force COMBO
LIFE CYCLE OF A CHANGE SUBMISSION (2/2)

 User                  Primary P4D                  Sister P4D

Send list of       Change-submit
   files             Assign to domain          p4 print
                      Read control file
                   Check Exclusion Rule
 Send file         Ok, or Error with list of conflicts
 contents
                                            Point of no return
                  Change-commit
                    Assign to domain          p4 revert, sync,
                     Edit control file              edit
                   Add revision records       p4 submit
               Ok        Submit
MAKING A BUILD


1.  Produce “build label”: revisions to use
    –     Select: Base build label + base domains, Verified domains,
          Fresh domains
    –     Use “painter algorithm”:
         •    For each file, take latest revision in any category
2.  Compile + smoketest (subset of) code
3.  If not ok:
    –     Notify errant developer
    –     If integration build: Repair build, update label
4.  If ok:
    –     Publish build label along with binary
    –     Mark revisions in label as Verified
         •    Use same revert/sync/edit/submit logic as the commit trigger
Summary
WHY DOES IT WORK?


•  Climb the reliability curve

•  Gatekeepers catch most breaks
•  Run Gatekeepers often: usually fast
•  Reduce “fog of war” in Integration build
USABILITY


•  Most people never notice
•  Exclusion rule can annoy
•  “Build temporal mechanics”
   –  Uncertain delay between submit and getting into the build
   –  Changes appear out of order in different sites
EFFECTIVENESS


•  Integration build each day x 3 sites
•  Changes from site X
   –  In site X’s integration build next day
   –  In site Y’s integration build 36-48 hours later


•  No performance loss
•  Control file typically ~ 2K revision records
•  175,000 changes in 3 years
OTHER USES FOR YOUR OWN METADATA?


•  Can track whatever metadata you want
   –  Within a “recent” time window


•  Change review and approval

•  Nested transactions?
   –  “Group commit” emerges from Exclusion rule
       •  Alice, Andrew, Amy commit changes in TO
       •  SJ build sees all or none of them
   –  Could generalize this…?
ANOTHER TOOL FOR YOUR TOOLBOX




                                                  s
                                  Sta ged build




                     Unit tests
Acknowledgements


•    Rob Romano
•    Jeff Da Silva
•    David Karchmer
•    Mun Soon Yap
•    Addy Yeow
•    Alan Herrmann

•  And all the developers and builders at Altera
Thank You!

Más contenido relacionado

La actualidad más candente

Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Qualcomm Developer Network
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2Qualcomm Developer Network
 
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiTap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiZeroTurnaround
 
OPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full DeploymentOPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full DeploymentOPNFV
 
ZENworks Configuration Management and Windows 10
ZENworks Configuration Management and Windows 10ZENworks Configuration Management and Windows 10
ZENworks Configuration Management and Windows 10Roel van Bueren
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1Qualcomm Developer Network
 
Skype testing overview
Skype testing overviewSkype testing overview
Skype testing overviewQA Club Kiev
 
Source Control For The Domino Developer
Source Control For The Domino DeveloperSource Control For The Domino Developer
Source Control For The Domino DeveloperDeclan Sciolla-Lynch
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Arun Gupta
 
Hudson at FISL 2009
Hudson at FISL 2009Hudson at FISL 2009
Hudson at FISL 2009Arun Gupta
 
Hudson
HudsonHudson
Hudson8x8
 
ZENworks Configuration Management 11.4.1 and Windows 10
ZENworks Configuration Management 11.4.1 and Windows 10ZENworks Configuration Management 11.4.1 and Windows 10
ZENworks Configuration Management 11.4.1 and Windows 10Roel van Bueren
 
IP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryIP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryMandi Walls
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVNPHPBelgium
 
Sneak Peek into the New ChangeMan ZMF Release
Sneak Peek into the New ChangeMan ZMF ReleaseSneak Peek into the New ChangeMan ZMF Release
Sneak Peek into the New ChangeMan ZMF ReleaseNavita Sood
 
How we test tvideo at skype
How we test tvideo at skypeHow we test tvideo at skype
How we test tvideo at skypeQA Club Kiev
 
A Skype case study (2011)
A Skype case study (2011)A Skype case study (2011)
A Skype case study (2011)Vasia Kalavri
 

La actualidad más candente (20)

Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 2
 
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiTap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
 
OPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full DeploymentOPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full Deployment
 
ZENworks Configuration Management and Windows 10
ZENworks Configuration Management and Windows 10ZENworks Configuration Management and Windows 10
ZENworks Configuration Management and Windows 10
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 1
 
Branching Over The Top!
Branching Over The Top!Branching Over The Top!
Branching Over The Top!
 
Skype testing overview
Skype testing overviewSkype testing overview
Skype testing overview
 
Source Control For The Domino Developer
Source Control For The Domino DeveloperSource Control For The Domino Developer
Source Control For The Domino Developer
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010
 
Hudson at FISL 2009
Hudson at FISL 2009Hudson at FISL 2009
Hudson at FISL 2009
 
Balancing Power & Performance Webinar
Balancing Power & Performance WebinarBalancing Power & Performance Webinar
Balancing Power & Performance Webinar
 
Hudson
HudsonHudson
Hudson
 
ZENworks Configuration Management 11.4.1 and Windows 10
ZENworks Configuration Management 11.4.1 and Windows 10ZENworks Configuration Management 11.4.1 and Windows 10
ZENworks Configuration Management 11.4.1 and Windows 10
 
IP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryIP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous Delivery
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVN
 
Sneak Peek into the New ChangeMan ZMF Release
Sneak Peek into the New ChangeMan ZMF ReleaseSneak Peek into the New ChangeMan ZMF Release
Sneak Peek into the New ChangeMan ZMF Release
 
How we test tvideo at skype
How we test tvideo at skypeHow we test tvideo at skype
How we test tvideo at skype
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
 
A Skype case study (2011)
A Skype case study (2011)A Skype case study (2011)
A Skype case study (2011)
 

Destacado

Week 8 - The Invasion of Abyssinia
Week 8 - The Invasion of AbyssiniaWeek 8 - The Invasion of Abyssinia
Week 8 - The Invasion of AbyssiniaJason Fowler
 
Reaching Teens through Social Media
Reaching Teens through Social MediaReaching Teens through Social Media
Reaching Teens through Social MediaMedia Barker
 
Clipping New Fashion Week 15/11/11 @ IED Barcelona
Clipping New Fashion Week 15/11/11 @ IED BarcelonaClipping New Fashion Week 15/11/11 @ IED Barcelona
Clipping New Fashion Week 15/11/11 @ IED BarcelonaIED Barcelona
 
Week 1 - Setting up the League of Nations
Week 1 - Setting up the League of NationsWeek 1 - Setting up the League of Nations
Week 1 - Setting up the League of NationsJason Fowler
 
Clipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED BarcelonaClipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED BarcelonaIED Barcelona
 
Mormonism Beyond the Gender Binary
Mormonism Beyond the Gender BinaryMormonism Beyond the Gender Binary
Mormonism Beyond the Gender BinaryBrad Carmack
 
Noicattaro. allerta meteo20.01.2015 784_3777
Noicattaro. allerta meteo20.01.2015 784_3777Noicattaro. allerta meteo20.01.2015 784_3777
Noicattaro. allerta meteo20.01.2015 784_3777Redazione Noicattaro Web
 
2013 magnify aims presentation
2013 magnify aims presentation2013 magnify aims presentation
2013 magnify aims presentationdmadetroit
 
Adidas' Digital Platform for High Performance Creativity
Adidas' Digital Platform for High Performance CreativityAdidas' Digital Platform for High Performance Creativity
Adidas' Digital Platform for High Performance CreativityPerforce
 
Perforce on Tour - Keynote: The Technology Garden Revisited
Perforce on Tour -  Keynote: The Technology Garden RevisitedPerforce on Tour -  Keynote: The Technology Garden Revisited
Perforce on Tour - Keynote: The Technology Garden RevisitedPerforce
 
Google's take on Developing a Marketing Strategy
Google's take on Developing a Marketing StrategyGoogle's take on Developing a Marketing Strategy
Google's take on Developing a Marketing Strategy4Ps Marketing
 
Superfoods consumer final
Superfoods consumer finalSuperfoods consumer final
Superfoods consumer finalvsuce
 
The power of marketing metrics proving marketing's value to the organization ...
The power of marketing metrics proving marketing's value to the organization ...The power of marketing metrics proving marketing's value to the organization ...
The power of marketing metrics proving marketing's value to the organization ...dmadetroit
 
[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure[MathWorks] Versioning Infrastructure
[MathWorks] Versioning InfrastructurePerforce
 
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...Perforce
 
Reduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting Coalition
Reduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting CoalitionReduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting Coalition
Reduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting CoalitionChristian Dawson
 
Changes to the Owners Corporation Act 2006
Changes to the Owners Corporation Act 2006 Changes to the Owners Corporation Act 2006
Changes to the Owners Corporation Act 2006 TEYS Lawyers
 

Destacado (20)

Week 8 - The Invasion of Abyssinia
Week 8 - The Invasion of AbyssiniaWeek 8 - The Invasion of Abyssinia
Week 8 - The Invasion of Abyssinia
 
Reaching Teens through Social Media
Reaching Teens through Social MediaReaching Teens through Social Media
Reaching Teens through Social Media
 
Introductory Offers
Introductory OffersIntroductory Offers
Introductory Offers
 
Clipping New Fashion Week 15/11/11 @ IED Barcelona
Clipping New Fashion Week 15/11/11 @ IED BarcelonaClipping New Fashion Week 15/11/11 @ IED Barcelona
Clipping New Fashion Week 15/11/11 @ IED Barcelona
 
Week 1 - Setting up the League of Nations
Week 1 - Setting up the League of NationsWeek 1 - Setting up the League of Nations
Week 1 - Setting up the League of Nations
 
Clipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED BarcelonaClipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED Barcelona
 
Mormonism Beyond the Gender Binary
Mormonism Beyond the Gender BinaryMormonism Beyond the Gender Binary
Mormonism Beyond the Gender Binary
 
Noicattaro. allerta meteo20.01.2015 784_3777
Noicattaro. allerta meteo20.01.2015 784_3777Noicattaro. allerta meteo20.01.2015 784_3777
Noicattaro. allerta meteo20.01.2015 784_3777
 
2013 magnify aims presentation
2013 magnify aims presentation2013 magnify aims presentation
2013 magnify aims presentation
 
Adidas' Digital Platform for High Performance Creativity
Adidas' Digital Platform for High Performance CreativityAdidas' Digital Platform for High Performance Creativity
Adidas' Digital Platform for High Performance Creativity
 
Perforce on Tour - Keynote: The Technology Garden Revisited
Perforce on Tour -  Keynote: The Technology Garden RevisitedPerforce on Tour -  Keynote: The Technology Garden Revisited
Perforce on Tour - Keynote: The Technology Garden Revisited
 
Google's take on Developing a Marketing Strategy
Google's take on Developing a Marketing StrategyGoogle's take on Developing a Marketing Strategy
Google's take on Developing a Marketing Strategy
 
Superfoods consumer final
Superfoods consumer finalSuperfoods consumer final
Superfoods consumer final
 
The power of marketing metrics proving marketing's value to the organization ...
The power of marketing metrics proving marketing's value to the organization ...The power of marketing metrics proving marketing's value to the organization ...
The power of marketing metrics proving marketing's value to the organization ...
 
Il libroscopio2014 programma definitivo
Il libroscopio2014 programma definitivoIl libroscopio2014 programma definitivo
Il libroscopio2014 programma definitivo
 
[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure
 
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
High-Performance Coding, Building and Testing for Multiple Platforms and Devi...
 
Reduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting Coalition
Reduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting CoalitionReduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting Coalition
Reduce Fraud and Liabilty: Tactics, Tech, and the Save Hosting Coalition
 
Changes to the Owners Corporation Act 2006
Changes to the Owners Corporation Act 2006 Changes to the Owners Corporation Act 2006
Changes to the Owners Corporation Act 2006
 
TheWHIR presentation
TheWHIR presentationTheWHIR presentation
TheWHIR presentation
 

Similar a Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaboration for Complex Software Projects

Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to knowdaveymni
 
Continuous Integration as a Way of Life
Continuous Integration as a Way of LifeContinuous Integration as a Way of Life
Continuous Integration as a Way of LifeMelissa Benua
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Weaveworks
 
Continuous Integration - Mobile Practice
Continuous Integration - Mobile PracticeContinuous Integration - Mobile Practice
Continuous Integration - Mobile PracticeHARMAN Services
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Weaveworks
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012Jan Jongboom
 
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...hamidsamadi
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps JumpstartOri Donner
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesLuke Marsden
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
Use Docker to Enhance Your Testing
Use Docker to Enhance Your TestingUse Docker to Enhance Your Testing
Use Docker to Enhance Your TestingTechWell
 
InvisibleStudio for Oracle's CRM Desktop
InvisibleStudio for Oracle's CRM DesktopInvisibleStudio for Oracle's CRM Desktop
InvisibleStudio for Oracle's CRM DesktopInvisibleCRM
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Controlindiver
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud RoadGert Drapers
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?Macpaul Lin
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir DeploymentPete Gamache
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsRightScale
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 

Similar a Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaboration for Complex Software Projects (20)

Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
 
Continuous Integration as a Way of Life
Continuous Integration as a Way of LifeContinuous Integration as a Way of Life
Continuous Integration as a Way of Life
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 
Continuous Integration - Mobile Practice
Continuous Integration - Mobile PracticeContinuous Integration - Mobile Practice
Continuous Integration - Mobile Practice
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012
 
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Use Docker to Enhance Your Testing
Use Docker to Enhance Your TestingUse Docker to Enhance Your Testing
Use Docker to Enhance Your Testing
 
InvisibleStudio for Oracle's CRM Desktop
InvisibleStudio for Oracle's CRM DesktopInvisibleStudio for Oracle's CRM Desktop
InvisibleStudio for Oracle's CRM Desktop
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud Applications
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 

Más de Perforce

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsPerforce
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...Perforce
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Perforce
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsPerforce
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessPerforce
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsPerforce
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog Perforce
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Perforce
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowPerforce
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldPerforce
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterprisePerforce
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMPerforce
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog Perforce
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Perforce
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure Perforce
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Perforce
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Perforce
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Perforce
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4Perforce
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Perforce
 

Más de Perforce (20)

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development Process
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New Workflow
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated World
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALM
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison
 

Último

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
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 CVKhem
 
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 TerraformAndrey Devyatkin
 
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...Miguel Araújo
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
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 2024The Digital Insurer
 
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 SavingEdi Saputra
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
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.pptxRustici Software
 

Último (20)

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
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
 
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
 
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...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
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
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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
 

Compartmentalized Continuous Integration: Enabling Rapid, Flexible Collaboration for Complex Software Projects

  • 1. Compartmentalized Continuous Integration David Neto Devin Sundaram Senior MTS Senior MTS Altera Corp.
  • 2. THAT SPECIAL THING 2000 That special thing… 2007 p4 vs. svn 2009 Collaboration++
  • 3. THREE TAKEAWAYS •  Continuous Integration is tough with a complex build •  Compartmentalize = Classify + filter the change going into your integration build •  Track your own metadata for a codeline –  With triggers and a second Perforce repository
  • 6. FIND AND FIX DEFECTS EARLY Release date Defect cost Risk to fix Time
  • 7. SYSTEMS FAIL AT THE SEAMS No substitute for end-to-end test
  • 8. INTEGRATION BUILD IS YOUR PRODUCT •  Integration build = put all pieces together •  It’s what you deliver. Everything else is just pretend. •  Communicate functionality across your team –  Broadcast new feature / bugfix •  Complex systems fail at the seams –  Feedback for developers
  • 9. CONTINUOUS INTEGRATION •  Make an Integration Build as often as possible •  It’s the heartbeat of your project
  • 10. SHAPES ALL PROCESS AND INFRASTUCTURE •  Supporting practices [Fowler]: –  Maintain a code repository –  Automate the build –  Make the build self-testing –  Commit as often as possible –  Every commit to mainline should be built – Keep the build fast –  Test in a clone of production environment –  Make it easy to get latest deliverables –  Everyone can see result of latest build –  Automate deployment
  • 11. ALTERA’S SOFTWARE BUILD •  Altera makes Field Programmable Gate Arrays (FPGA) –  Programming = Rewiring –  3.9 billion transistors! •  Altera Complete Design Suite (ACDS) = Development tools •  ACDS Build: –  255K source files, 45GB –  ~400 developers, 5 locations worldwide –  14 hour build, multiprocessor, multiplatform –  Hundreds of source changes per day
  • 12. MULTI LAYER SYSTEM CHALLENGE •  Long time to build Device data •  Rapid development within and across layers –  E.g. Roll out new device family –  E.g. DDR memory interface support crosses 5 layers Domain specific IP cores System integration tools Debug and analysis Low level compiler Physical models: logic, timing, power Device data
  • 13. TOO MANY CHANGES à BUILD RISK •  Probability of a clean build drops quickly with number of new changes Probability of a clean build 1 0.9 37% 0.8 0.7 0.6 0.5 13% 99% per change 0.4 reliability 0.3 95% per change 0.2 reliability 0.1 0 1 11 21 31 41 51 61 71 81 91 101 111 121 131 141 151 161 171 181 191 201 Number of changes •  When it breaks, hard to tell whose fault
  • 14. STALE BASELINE à COMPOUNDED RISK •  The longer you go without an integration build, the higher the risk –  Blind to recent data, API, code •  Skip too many heartbeats à PROJECT DIES
  • 15. SOLUTION: COMPARTMENTALIZATION •  Must keep integration build stable •  Limit the damage to the whole by separating the parts •  But how?
  • 17. STAGED BUILDS [Fowler] •  Full build = pipeline of smaller builds •  Most developers work with output of earlier stage •  In our case: Too slow –  Device data build = 4 hours –  Most layers built later: need device info •  Verdict: Does not solve our problem
  • 18. INCREMENTAL REBUILD BOT •  Each change automatically built on latest stable base + changes since stable base –  Tell developer if it passed or broke the bot •  Tricky policy: –  If a new change breaks the bot: Keep or Eject? •  In our case: –  Can’t rely on perfect dependencies –  Device change à full integration build –  Apparent developer reliability improves •  Verdict: We use it, but does not solve whole problem
  • 19. MULTIPLE CODELINES: Strategy •  Partition active work into different codelines •  Qualify separately, with module build •  Frequently integrate “main” à private •  Occasionally integrate private à “main” Private1 Main Private2
  • 20. MULTIPLE CODELINES: Variations •  Development codelines [Wingerd] •  Microsoft’s Virtual Build Labs [Maraia] •  Inside/Outside codelines, Remote development lines, Change Propagation Queues, … [Appleton et. al.] •  Virtual Codelines (one codeline + just-in-time branching) [Appleton et.al.]
  • 21. MULTIPLE CODELINES: Issues •  Integration is manual –  Requires superhero to integrate. Painful. –  Manual implies infrequent. Delays integration. Private1 Main Private2 Painful?! •  Hard / impossible to develop a change across components
  • 22. MULTIPLE CODELINES: Verdict •  Ok if perfect modularity •  Manual •  Infrequent •  Inflexible: Can’t develop across components •  “Occasional” integration, not Continuous! “90% of SCM "process" is enforcing codeline promotion to compensate for the lack of a mainline” -- Wingerd
  • 24. REQUIREMENTS •  One codeline •  No client customization: Server side only •  Transparent to most users, most of the time •  Support ad hoc cross-component development •  Automatic: Hands off operation
  • 25. GATEKEEPER STRATEGY •  Limit the amount of untested code accepted into the integration build •  All code is guilty until proven innocent •  Integration build uses only innocent (verified) code* •  Each file revision in one of two integration states: Fresh Verified •  Upgrade from Fresh to Verified when used in a successful Gatekeeper build *Some exceptions
  • 26. COMPARTMENTALIZE = CLASSIFY + FILTER Classify into Gatekeepers Domains Integration
  • 27. CLASSIFICATION: ZONES, DOMAINS •  Classify each submitted change into a domain •  Site = Dev location that makes an integration build •  Zone = named set of depot paths –  One zone for each major component –  Zone can be “site specific” •  When lots of activity in that zone, and want to protect a site from bad changes from other sites •  Domains = –  Zone –  { Zone:Site | for each Site, each site-specific Zone } –  COMBO •  If a change touches files in more than one Zone
  • 28. GATEKEEPER RESPONSIBILITY •  Each Gatekeeper is responsible for a Domain –  Validates Fresh changes in that Domain •  Run part or all of the build –  Uses Fresh revisions from its own Domain –  Verified code otherwise •  If ok, update integration state: foo.c #1 #2 #3 #4 #5 foo.c #1 #2 #3 #4 #5
  • 29. EXAMPLE GATEKEEPER N Gatekeeper N+1 Runs part of the build, on top of previous full build. Responsible for one domain, uses verified source from two others. Integration Integration
  • 30. OTHER GATEKEEPER: SPREAD + LIMIT RISK N Gatekeeper N+1 In general, limited amount of Fresh change going into any one build. Climb the reliability curve! Integration Integration
  • 31. GATEKEEPER CAN RUN WHOLE BUILD Gatekeeper N+1 But responsible for just one domain. COMBO builds do this Integration
  • 32. EXCLUSION RULE •  Should avoid “broken by construction” gatekeepers •  Rule: Each file may have fresh revisions from at most one domain –  Conflicts from: Site-specific zones; COMBO •  Allow many fresh revisions from same domain –  Enable rapid development #3 #4 #5 foo.c #1 #2 A A A #3 #4 #5 foo.c #1 #2 A A B
  • 33. E.g. Alice (site TO) submits foo.c, foo.h q:SJ q:TO Alice changed Gatekeeper Gatekeeper param type uses uses #5 #4 #5 foo.c #4 q:TO q:TO #2 #2 foo.h #1 q:TO #1 q:TO Zone “q” is site-specific TO, SJ are sites
  • 34. Bob (site SJ) develops update to foo.c … Bob does not know about Alice’s change #5? foo.c #4 q:SJ foo.h #1
  • 35. Bob resolves to Alice’s change #5 #6? foo.c #4 q:TO q:SJ #2 foo.h #1 q:TO
  • 36. What if we allow Bob to submit? q:SJ Gatekeeper uses #5 #6 #6 foo.c #4 q:TO q:SJ q:SJ Sees only half of #2 Alice’s change! foo.h #1 q:TO #1 BROKEN BY CONSTRUCTION
  • 37. Exclusion Rule avoids broken-by-construction #5 #6? #6 Exclusion rule detects foo.c #4 this conflict, q:TO q:SJ q:SJ Rejects Bob’s change #2 foo.h #1 q:TO
  • 38. Bob waits until Alice’s change is verified #6 #6 Now Bob’s change is foo.c #4 #5 q:SJ q:TO accepted foo.h #1 #2
  • 39. NOMADIC OWNERSHIP •  Exclusion Rule creates temporary “ownership” of a file –  Delays updates destined to other domains –  Especially within site-specific zones •  Sometimes annoying –  Willing to pay the price –  Better than the alternatives! •  Minimized by refactoring: break up files •  But it’s flexible and automatic –  Temporary ownership migrates according to update patterns
  • 40. SOMETIMES BYPASS GATEKEEPERS •  Rare, long build time –  E.g. COMBO •  Site-protected, long build time •  Acceptable integration risk
  • 41. TURN OFF GATEKEEPERS •  Late in release cycle –  Development has slowed –  Each change carefully reviewed •  Low integration risk •  Avoid annoyance of Exclusion Rule
  • 43. INTEGRATION STATUS TRACKING: WHAT •  For each file revision keep: –  State: Fresh, or Verified –  Domain –  User, change#, depot path •  Store in log-structured control file •  But only need this for recent revisions –  Only Fresh revisions can conflict –  Each revision eventually Verified –  Need only from oldest Fresh until #head •  Purge older records
  • 44. INTEGRATION STATUS TRACKING: HOW •  Integration status must always be up-to-date –  Needed for Exclusion Rule, checked in change-submit trigger •  Can’t just use floating labels: –  P4 triggers can’t update P4 metadata ! •  Need: –  Fast atomic updates to control file –  Only need latest version –  Compact storage •  Store in a second Perforce repository! –  Filetype text+S512: Purges old contents
  • 45. USING A SECOND PERFORCE REPOSITORY Primary P4D Triggers Users submit Sister P4D One control file per tracked codeline Build scripts: Code selection. Mark-as-Verified
  • 46. CONFIGURATION •  Map developers to sites via P4 Group membership –  E.g. p4sip.to.users, p4sip.sj.users •  Codeline policy defined in “p4sip.zone” file –  Stored in root of codeline: Carried into branches –  Sites –  Named zones •  Mapping to depot paths relative to the codeline •  Which zones are site-specific –  Parse output of “p4 print”: Safe in triggers •  Triggers –  From-out, form-in: “change” forms –  Per codeline: change-submit, change-commit
  • 47. LIFE CYCLE OF A CHANGE SUBMISSION (1/2) User Primary P4D Sister P4D p4 submit Form-out: Lookup user site, insert into change description Edit change Form-in: form* Validate site in change description Ok Send list of files * Can change site string: Masquerade as other site, or force COMBO
  • 48. LIFE CYCLE OF A CHANGE SUBMISSION (2/2) User Primary P4D Sister P4D Send list of Change-submit files Assign to domain p4 print Read control file Check Exclusion Rule Send file Ok, or Error with list of conflicts contents Point of no return Change-commit Assign to domain p4 revert, sync, Edit control file edit Add revision records p4 submit Ok Submit
  • 49. MAKING A BUILD 1.  Produce “build label”: revisions to use –  Select: Base build label + base domains, Verified domains, Fresh domains –  Use “painter algorithm”: •  For each file, take latest revision in any category 2.  Compile + smoketest (subset of) code 3.  If not ok: –  Notify errant developer –  If integration build: Repair build, update label 4.  If ok: –  Publish build label along with binary –  Mark revisions in label as Verified •  Use same revert/sync/edit/submit logic as the commit trigger
  • 51. WHY DOES IT WORK? •  Climb the reliability curve •  Gatekeepers catch most breaks •  Run Gatekeepers often: usually fast •  Reduce “fog of war” in Integration build
  • 52. USABILITY •  Most people never notice •  Exclusion rule can annoy •  “Build temporal mechanics” –  Uncertain delay between submit and getting into the build –  Changes appear out of order in different sites
  • 53. EFFECTIVENESS •  Integration build each day x 3 sites •  Changes from site X –  In site X’s integration build next day –  In site Y’s integration build 36-48 hours later •  No performance loss •  Control file typically ~ 2K revision records •  175,000 changes in 3 years
  • 54. OTHER USES FOR YOUR OWN METADATA? •  Can track whatever metadata you want –  Within a “recent” time window •  Change review and approval •  Nested transactions? –  “Group commit” emerges from Exclusion rule •  Alice, Andrew, Amy commit changes in TO •  SJ build sees all or none of them –  Could generalize this…?
  • 55. ANOTHER TOOL FOR YOUR TOOLBOX s Sta ged build Unit tests
  • 56. Acknowledgements •  Rob Romano •  Jeff Da Silva •  David Karchmer •  Mun Soon Yap •  Addy Yeow •  Alan Herrmann •  And all the developers and builders at Altera