![Page 1: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/1.jpg)
Abraham Marin-Perez@AbrahamMarin
fromfragiletoagile.com
Keeping Your CI / CD Pipeline as Fast as It Needs to Be
#MCRJava @AbrahamMarin @EqualExperts
![Page 2: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/2.jpg)
About Me
![Page 3: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/3.jpg)
About Me
![Page 4: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/4.jpg)
About Me
![Page 5: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/5.jpg)
About Me
![Page 6: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/6.jpg)
About Me
![Page 7: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/7.jpg)
About Me
![Page 8: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/8.jpg)
About Me
![Page 9: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/9.jpg)
![Page 10: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/10.jpg)
About This Talk
![Page 11: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/11.jpg)
Continuous Integration: check everything is still working after every commit
Continuous Deployment: every successful commit turns into a release
About This Talk
![Page 12: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/12.jpg)
About This Talk
![Page 13: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/13.jpg)
About This Talk
![Page 14: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/14.jpg)
About This Talk
![Page 15: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/15.jpg)
About This Talk
![Page 16: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/16.jpg)
![Page 17: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/17.jpg)
SUPER APP
# Files: 75# Tests: 800Build Time: 4 minOutput: superapp.war
![Page 18: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/18.jpg)
SUPER APP
# Files: 113# Tests: 1200Build Time: 6 minOutput: superapp.war
![Page 19: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/19.jpg)
SUPER APP
# Files: 169# Tests: 1800Build Time: 9 minOutput: superapp.war
![Page 20: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/20.jpg)
Slow feedback
Broken builds mask issues
Development paralysis
Impact on ability to meet our SLAs
Pay per use
Missed business opportunities
The Problems Of Size
![Page 21: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/21.jpg)
Live with it
Partial CD: only quick tests
Phased CD: split into components
Test Deprecation Policy
Microservices
How Organisations Manage Size
![Page 22: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/22.jpg)
Microservices
![Page 23: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/23.jpg)
Microservices
![Page 24: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/24.jpg)
Microservices
![Page 25: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/25.jpg)
![Page 26: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/26.jpg)
![Page 27: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/27.jpg)
SUPER APP
# Files: 169# Tests: 1800Build Time: 9 minOutput: superapp.war
APP BACKEN
DSUPER
APP
# Files: 115# Tests: 1200Build Time: 6 minOutput: superapp.war
# Files: 72# Tests: 800Build Time: 4 minOutput: appbackend.jar
![Page 28: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/28.jpg)
Microservices?
![Page 29: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/29.jpg)
Microservices
![Page 30: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/30.jpg)
Microservices
![Page 31: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/31.jpg)
Microservices
![Page 32: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/32.jpg)
Microservices
![Page 33: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/33.jpg)
Microservices
![Page 34: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/34.jpg)
Microservices
![Page 35: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/35.jpg)
Build Pipeline Becomes a Network
![Page 36: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/36.jpg)
![Page 37: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/37.jpg)
To Caesar what is Caesar’sBased on John Ferguson Smart’s“Real-World Strategies for Continuous Delivery with maven and Jenkins”
http://youtu.be/McTZtyb9M38
![Page 38: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/38.jpg)
John’s approachMaven wasn’t built for Continuous Deployment
commitcommitcommit...
0.0.1-SNAPSHOT
Release!
0.0.1
![Page 39: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/39.jpg)
Don’t use RELEASE pluginUse VERSIONS plugin
Set version to <version scheme>.<build number>Run mvn deployCommit pom file to repository
John’s approach
![Page 40: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/40.jpg)
Set version to <version scheme>.<build number>
mvn versions:set –DnewVersion=**your version**
John’s approach
![Page 41: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/41.jpg)
Run mvn deploy
mvn clean deploy
John’s approach
![Page 42: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/42.jpg)
Commit pom file to repository<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-scm-plugin</artifactId> <version>1.9.1</version> <executions> <execution> <id>commit</id> <phase>deploy</phase> <goals> <goal>checkin</goal> </goals> </execution> </executions></plugin>
John’s approach
![Page 43: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/43.jpg)
John’s approach
![Page 44: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/44.jpg)
0.0.1.1commit
BUILD!
0.0.1.2commit
BUILD!
0.0.1.3commit
BUILD!
John’s approach
![Page 45: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/45.jpg)
How do you scale this?
![Page 46: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/46.jpg)
<dependency> <groupId>com.superappfactory</groupId> <artifactId>appbackend</artifactId> <version>LATEST</version></dependency>
<dependency> <groupId>com.superappfactory</groupId> <artifactId>appbackend</artifactId> <version>??????</version></dependency>
APP BACKEN
DSUPER
APP
appbackend.jar superapp.war
Setting up dependencies
![Page 47: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/47.jpg)
![Page 48: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/48.jpg)
![Page 49: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/49.jpg)
![Page 50: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/50.jpg)
Setting up dependencies
APP BACKEN
DSUPER
APP
appbackend.jar superapp.war
![Page 51: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/51.jpg)
Rebuilding old versions
![Page 52: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/52.jpg)
Using “LATEST” makes it impossible to build old versions correctly
Rebuilding old versions
![Page 53: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/53.jpg)
<dependency> <groupId>com.superappfactory</groupId> <artifactId>appbackend</artifactId> <version>1.5.3.1</version></dependency>
<dependency> <groupId>com.superappfactory</groupId> <artifactId>appbackend</artifactId> <version>???????</version></dependency>
Rebuilding old versionsAPP
BACKEND
SUPER APP
appbackend.jar superapp.war
![Page 54: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/54.jpg)
Update versions of dependenciesmvn versions:use-latest-releases
![Page 55: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/55.jpg)
APP BACKEN
DSUPER
APP
APP BACKEN
DSUPER
APPDATA MODE
L
SUPER APP
DATA MODEL
GUI
APP BACKEND
![Page 56: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/56.jpg)
![Page 57: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/57.jpg)
commitbuild
deploy
commit
Problem: Infinite Trigger
![Page 58: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/58.jpg)
![Page 59: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/59.jpg)
![Page 60: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/60.jpg)
APP BACKEN
DSUPER
APP
commit
Problem: Unnecessary Rebuilds
![Page 61: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/61.jpg)
![Page 62: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/62.jpg)
Problem: Unnecessary Rebuilds
![Page 63: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/63.jpg)
Get last committer
buildAgent?
Proceed normally
Don’t run build
NO YES
touch skip_build
Problem: Unnecessary Rebuilds
![Page 64: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/64.jpg)
<profiles><!-- Plugins that need to be disabled when doing a no-run --> <profile> <id>do.nothing</id> <activation> <file>
<exists>skip_build</exists> </file> </activation>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <skipMain>true</skipMain> <skip>true</skip> </configuration> </plugin>
Problem: Unnecessary Rebuilds
![Page 65: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/65.jpg)
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> <configuration> <skip>true</skip> </configuration></plugin>
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> <configuration> <skip>true</skip> </configuration></plugin>
Problem: Unnecessary Rebuilds
![Page 66: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/66.jpg)
APP BACKEND
SUPER APP
commit
Problem: Unnecessary Rebuilds
![Page 67: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/67.jpg)
Problem: Unnecessary Rebuilds
![Page 68: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/68.jpg)
APP BACKEND
SUPER APP
commit
Problem: Necessary Rebuilds
![Page 69: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/69.jpg)
Get last committer
buildAgent?
Proceed normally
Don’t run build
NO YES
Problem: Necessary Rebuilds
![Page 70: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/70.jpg)
![Page 71: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/71.jpg)
Get last committer
buildAgent?
Proceed normally
NO YES
Check dependencies
Up to date?
NO Don’t run build
YES
touch skip_build
![Page 72: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/72.jpg)
Problem: Necessary Rebuilds
![Page 73: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/73.jpg)
build
deploy
commit
commit
commitpom.xml
Problem: Doomed Build
![Page 74: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/74.jpg)
Get last committer
buildAgent?
Proceed normally
NO YES
Check dependencies
Up to date?
NO Don’t run build
YES
touch skip_build
![Page 75: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/75.jpg)
Get last committer
buildAgent?
Check pom.xml
NO YES
Check dependencies
Up to date?
NO
Don’t run build
YES
touch skip_build
Up to date?
NO
Proceed normally
YES
![Page 76: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/76.jpg)
Problem: Doomed Build
![Page 77: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/77.jpg)
![Page 78: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/78.jpg)
![Page 79: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/79.jpg)
A real case scenario
![Page 80: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/80.jpg)
Service
Service
Service
Parent POM
Logging
![Page 81: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/81.jpg)
Service
Service
Service
Parent POM
Logging
28%
![Page 82: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/82.jpg)
Service
Service
Service
Parent POM
Logging
28%28%
28%
![Page 83: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/83.jpg)
Service
Service
Service
Parent POM
Logging
28%28%
28%
20%
![Page 84: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/84.jpg)
Service
Service
Service
Parent POM
Logging
48%
28%
28%
20%
![Page 85: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/85.jpg)
Service
Service
Service
Parent POM
Logging
![Page 86: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/86.jpg)
Service
Service
Service
![Page 87: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/87.jpg)
Build Time (BT): time an individual build takes to run
Change Rate (CR): percentage of commits upon an individual build with respect to the whole system
Useful Metrics
![Page 88: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/88.jpg)
Service
Service
Service
![Page 89: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/89.jpg)
Service
Service
Service
Parent POM
Logging
28%
![Page 90: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/90.jpg)
Impact Time (IT): total time to run a build and all the builds that will be triggered as a result
Useful Metrics
![Page 91: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/91.jpg)
No dependants IT(A) = BT(A)
A
Useful Metrics
![Page 92: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/92.jpg)
Serial execution IT(A) = BT(A) + IT(B) + IT(C)
B
A
C
Useful Metrics
![Page 93: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/93.jpg)
Parallel execution IT(A) = BT(A) + max(IT(B), IT(C))
B
A
C
Useful Metrics
![Page 94: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/94.jpg)
Service
Service
Service
![Page 95: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/95.jpg)
Weighted Impact Time (WIT): impact time of a build weighted according to its change rage
WIT(A) = IT(A) * CR(A)
Useful Metrics
![Page 96: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/96.jpg)
Average Impact Time (AIT): total time needed, on average, to execute all necessary builds after any given commit anywhere in the system
AIT = WIT(A) + WIT(B) + ... + WIT(Z)
Useful Metrics
![Page 97: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/97.jpg)
Sample Thresholds
![Page 98: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/98.jpg)
Average Impact Time
Average Impact Time is what indicates how well you have scaled your system
Sample Thresholds
![Page 99: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/99.jpg)
Maximum Impact Time
In a worst-case scenario, a build won’t take longer than this.
Sample Thresholds
![Page 100: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/100.jpg)
Maximum Impact Time for Critical Components
The same, but only for your most sensitive modules (log-in, payment gateway, etc.)
Beware of dependencies!
Sample Thresholds
![Page 101: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/101.jpg)
Service
Service
Service
![Page 102: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/102.jpg)
Manual processingtakes time...
![Page 103: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/103.jpg)
Most CI systems provide an API Calculations aren’t complex Multiple graphical tools available
Automating Build Analysis
![Page 104: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/104.jpg)
github.com/quiram/build-hotspotsBuild Hotspots
![Page 105: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/105.jpg)
https://commons.wikimedia.org/wiki/File:2012_Italian_GP_-_Lotus_wheel.jpg
![Page 106: Keeping your CI/CD pipeline as fast as it needs to be](https://reader035.vdocuments.net/reader035/viewer/2022070515/587b72351a28abc62f8b5af5/html5/thumbnails/106.jpg)
Thank You
@EqualExperts
equal-experts
equalexperts.com
Thank Youfromfragiletoagile.com
@AbrahamMarin#FastCI #MCRJava