SlideShare a Scribd company logo
Blast Radius
How my team tackled Continuous Deployment and a handy tool I
developed to minimise how much we deployed for each commit
FrankFarrell
Some context
• 3 Engineers
• One app with lots of Deployable Components
• Medium Sized project
1 or many repositories?
vs
• share libraries
• do code reviews across
modules
• refactor across modules
Easier to
1 or many repositories?
vs
• do Continuous Deployment
• work with tooling
• enforce architectural decisions
We decided on 1 big repo
Easier to
• share libraries
• do code reviews across
modules
• refactor across modules
Easier to
Continuous Deployment from 1 big repo
• Why not deploy everything on every commit?
Risk Time Visibility
We need something better
Safety
Speed
Precision
Blast Radius Gradle Plugin
How it works
git diff:
• /src/main/Foo.java in Library B
• README.md in Library A
Foo.java is deployable code, so we
deploy its only dependency
A README.md isn’t code so we
won’t deploy any of its dependencies
/src/main/Foo.javaREADME.md
SCENARIO 1
How it works
git diff:
• /src/main/Foo.java in Library B
• README.md in Library A
Foo.java is deployable code, so we
deploy its only dependency
A README.md isn’t code so we
won’t deploy any of its dependencies
/src/main/Foo.javaREADME.md
SCENARIO 1
How it works
git diff
• /src/main/Bar.java in Library A
• /src/test/FooTest.java in
Library B
Bar.java is deployable code, so we
deploy its 2 dependencies
A unit test isn’t deployable code so it
doesn’t have an effect.
/src/main/Bar.java /src/test/FooTest.java
SCENARIO 2
Hypothesis: Pareto Distribution
I analysed our CD
pipeline for the last 8
months with ~200
builds to try and get
some insights into our
codebase.
Roughly speaking
20% of commits
would cause 80% of
module deployments.
# Modules Deployed Per Commit
0
#Commits 50
100
0 5 10 20 30 40
So much for the theory
This graph is a count of commits that
triggered X deployments
• Does nothing where nothing to deploy
• Small set where everything deployed
NO
DEPLOYMENTS
(79)
JUST ONE
(77)
A SMALL SUBSET
(22)
EFFECTIVELY EVERYTHING
(17)
#Commits
# Modules Deployed Per Commit
So much for the theory
• Single module changes surprisingly common
• The small subset is less frequent than I
expected, but that’s the real advantage of
the tool
NO
DEPLOYMENTS
(79)
JUST ONE
(77)
A SMALL SUBSET
(22)
EFFECTIVELY EVERYTHING
(17)
#Commits
# Modules Deployed Per Commit
How often are individual Modules changing?
More of a Pareto distribution J
But, the plateau in the middle* helped us identify
hidden coupling between modules
* folk statistics
Module Name
#Deployments
TERRAFORM
API
Coincidence of
Deployment
How likely are any 2
modules to be deployed
together?
Bottom group is clearly
coupled
API
TERRAFORM
EVENT PIPELINE
Coincidence of
Deployment
Not very coupled, which is
surprising for
infrastructure.
Did Blast Radius influence
commit behaviour?
TERRAFORM
Coincidence of
Deployment
Our API on the other hand
has a lot of hidden
coupling to other
modules.
Could it indicate design
flaws in our code?
API
Key takeaways
•Tool worked to keep our builds fast & precise
•Hidden coupling probably means some design flaws
•However, lots of positives for design and workflow
Other takeaways
•Maintaining a complicated pipeline is in itself time
consuming
•Deploy concurrently from 1 big repo
•Simple tools can have a big impact
Get it:
github.com/frankfarrell/blast-radius
It could easily be translated to your favourite
language and build tool
Thanks for listening!

More Related Content

PPTX
Openstack dev on
PDF
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
PPTX
Continous testing for grails
PDF
From monitoring to automated testing, Jesse Reynolds, Puppet
PDF
Testing MidoNet
PDF
Chaos Engineering - Limiting Damage During Chaos Experiments
PDF
Making Continuous Security a Reality with OWASP’s AppSec Pipeline - Matt Tesa...
PDF
Continuous Delivery at Netflix, and beyond
Openstack dev on
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
Continous testing for grails
From monitoring to automated testing, Jesse Reynolds, Puppet
Testing MidoNet
Chaos Engineering - Limiting Damage During Chaos Experiments
Making Continuous Security a Reality with OWASP’s AppSec Pipeline - Matt Tesa...
Continuous Delivery at Netflix, and beyond

What's hot (20)

PDF
Principles Of Chaos Engineering - Chaos Engineering Hamburg
PPTX
DevOps checklist or how to understand where is your team in DevOps landscape ...
PDF
Puppet Camp Portland 2015: Keynote
PPTX
TRACK H: On-the-fly design exploration framework for simulation/ lior Altman
PDF
DevSecCon London 2017: Shift happens ... by Colin Domoney
PDF
Top 8 mistakes developer teams make in their first serverless project
PPTX
DevOps Security Coffee - Lazy hackers who think out of the box, but stay in t...
PDF
Continuous Security: Using Automation to Expand Security's Reach
PDF
swampUP - 2018 - The Divine and Felonious Nature of Cyber Security
PDF
OSMC 2015: Monitoring at Spotify-When things go ping in the night by Martin Parm
PPTX
Testing From The Trenches - Salesforce1 World Tour 2014
PDF
Reactive Programming or Reactive Systems? (spoiler: both)
PDF
DevOps in the Real World
PPTX
Helpful Automation Techniques - Selenium Camp 2014
PPTX
Introduction to Puppet Enterprise
PDF
Myth vs Reality: Understanding AI/ML for QA Automation - w/ Jonathan Lipps
PPTX
Are Your Microservices Naked and Afraid?
PPTX
The World Outside - The Blind Spot of TDD
PPTX
DevOps and All the Continuouses w/ Helen Beal
PPTX
DevSecCon Singapore 2018 - Pushing left like a boss by Tanya Janca
Principles Of Chaos Engineering - Chaos Engineering Hamburg
DevOps checklist or how to understand where is your team in DevOps landscape ...
Puppet Camp Portland 2015: Keynote
TRACK H: On-the-fly design exploration framework for simulation/ lior Altman
DevSecCon London 2017: Shift happens ... by Colin Domoney
Top 8 mistakes developer teams make in their first serverless project
DevOps Security Coffee - Lazy hackers who think out of the box, but stay in t...
Continuous Security: Using Automation to Expand Security's Reach
swampUP - 2018 - The Divine and Felonious Nature of Cyber Security
OSMC 2015: Monitoring at Spotify-When things go ping in the night by Martin Parm
Testing From The Trenches - Salesforce1 World Tour 2014
Reactive Programming or Reactive Systems? (spoiler: both)
DevOps in the Real World
Helpful Automation Techniques - Selenium Camp 2014
Introduction to Puppet Enterprise
Myth vs Reality: Understanding AI/ML for QA Automation - w/ Jonathan Lipps
Are Your Microservices Naked and Afraid?
The World Outside - The Blind Spot of TDD
DevOps and All the Continuouses w/ Helen Beal
DevSecCon Singapore 2018 - Pushing left like a boss by Tanya Janca
Ad

Similar to Blast Radius (20)

PDF
Continuous Delivery
PDF
Fasten Industry Meeting with GitHub about Dependancy Management
PDF
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
PDF
The future of paas is serverless
PDF
Continuous Deployment: Beyond Continuous Delivery
PPTX
Terraform: Tales from the Trenches
PPTX
Continuous Integration
PPTX
Continuous Delivery for Open Source Java projects
PPTX
Software Composition Analysis Deep Dive
PDF
[Perforce] Git Fusion
PDF
Exploring the GitHub Service Universe
PDF
Dealing with large code bases. cd ams meetup
PPTX
GitHub Actions (Nakov at RuseConf, Sept 2022)
PDF
Learning GitHub Actions 1 / converted Edition Brent Laster
PDF
Learning GitHub Actions 1 / converted Edition Brent Laster
PDF
Serverless in production, an experience report (CoDe-Conf)
PPTX
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
PDF
DevOps: Automate all the things
PDF
DevOps Workshop Part 1
Continuous Delivery
Fasten Industry Meeting with GitHub about Dependancy Management
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
The future of paas is serverless
Continuous Deployment: Beyond Continuous Delivery
Terraform: Tales from the Trenches
Continuous Integration
Continuous Delivery for Open Source Java projects
Software Composition Analysis Deep Dive
[Perforce] Git Fusion
Exploring the GitHub Service Universe
Dealing with large code bases. cd ams meetup
GitHub Actions (Nakov at RuseConf, Sept 2022)
Learning GitHub Actions 1 / converted Edition Brent Laster
Learning GitHub Actions 1 / converted Edition Brent Laster
Serverless in production, an experience report (CoDe-Conf)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
DevOps: Automate all the things
DevOps Workshop Part 1
Ad

Recently uploaded (20)

PPTX
history of c programming in notes for students .pptx
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
assetexplorer- product-overview - presentation
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Complete Guide to Website Development in Malaysia for SMEs
PPTX
L1 - Introduction to python Backend.pptx
DOCX
Greta — No-Code AI for Building Full-Stack Web & Mobile Apps
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
history of c programming in notes for students .pptx
Design an Analysis of Algorithms II-SECS-1021-03
Designing Intelligence for the Shop Floor.pdf
assetexplorer- product-overview - presentation
Monitoring Stack: Grafana, Loki & Promtail
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
iTop VPN Free 5.6.0.5262 Crack latest version 2025
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Odoo Companies in India – Driving Business Transformation.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Complete Guide to Website Development in Malaysia for SMEs
L1 - Introduction to python Backend.pptx
Greta — No-Code AI for Building Full-Stack Web & Mobile Apps
17 Powerful Integrations Your Next-Gen MLM Software Needs
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
CHAPTER 2 - PM Management and IT Context
Adobe Illustrator 28.6 Crack My Vision of Vector Design
How to Choose the Right IT Partner for Your Business in Malaysia

Blast Radius

  • 1. Blast Radius How my team tackled Continuous Deployment and a handy tool I developed to minimise how much we deployed for each commit FrankFarrell
  • 2. Some context • 3 Engineers • One app with lots of Deployable Components • Medium Sized project
  • 3. 1 or many repositories? vs • share libraries • do code reviews across modules • refactor across modules Easier to
  • 4. 1 or many repositories? vs • do Continuous Deployment • work with tooling • enforce architectural decisions We decided on 1 big repo Easier to • share libraries • do code reviews across modules • refactor across modules Easier to
  • 5. Continuous Deployment from 1 big repo • Why not deploy everything on every commit? Risk Time Visibility
  • 6. We need something better Safety Speed Precision
  • 8. How it works git diff: • /src/main/Foo.java in Library B • README.md in Library A Foo.java is deployable code, so we deploy its only dependency A README.md isn’t code so we won’t deploy any of its dependencies /src/main/Foo.javaREADME.md SCENARIO 1
  • 9. How it works git diff: • /src/main/Foo.java in Library B • README.md in Library A Foo.java is deployable code, so we deploy its only dependency A README.md isn’t code so we won’t deploy any of its dependencies /src/main/Foo.javaREADME.md SCENARIO 1
  • 10. How it works git diff • /src/main/Bar.java in Library A • /src/test/FooTest.java in Library B Bar.java is deployable code, so we deploy its 2 dependencies A unit test isn’t deployable code so it doesn’t have an effect. /src/main/Bar.java /src/test/FooTest.java SCENARIO 2
  • 11. Hypothesis: Pareto Distribution I analysed our CD pipeline for the last 8 months with ~200 builds to try and get some insights into our codebase. Roughly speaking 20% of commits would cause 80% of module deployments. # Modules Deployed Per Commit 0 #Commits 50 100 0 5 10 20 30 40
  • 12. So much for the theory This graph is a count of commits that triggered X deployments • Does nothing where nothing to deploy • Small set where everything deployed NO DEPLOYMENTS (79) JUST ONE (77) A SMALL SUBSET (22) EFFECTIVELY EVERYTHING (17) #Commits # Modules Deployed Per Commit
  • 13. So much for the theory • Single module changes surprisingly common • The small subset is less frequent than I expected, but that’s the real advantage of the tool NO DEPLOYMENTS (79) JUST ONE (77) A SMALL SUBSET (22) EFFECTIVELY EVERYTHING (17) #Commits # Modules Deployed Per Commit
  • 14. How often are individual Modules changing? More of a Pareto distribution J But, the plateau in the middle* helped us identify hidden coupling between modules * folk statistics Module Name #Deployments TERRAFORM API
  • 15. Coincidence of Deployment How likely are any 2 modules to be deployed together? Bottom group is clearly coupled API TERRAFORM EVENT PIPELINE
  • 16. Coincidence of Deployment Not very coupled, which is surprising for infrastructure. Did Blast Radius influence commit behaviour? TERRAFORM
  • 17. Coincidence of Deployment Our API on the other hand has a lot of hidden coupling to other modules. Could it indicate design flaws in our code? API
  • 18. Key takeaways •Tool worked to keep our builds fast & precise •Hidden coupling probably means some design flaws •However, lots of positives for design and workflow
  • 19. Other takeaways •Maintaining a complicated pipeline is in itself time consuming •Deploy concurrently from 1 big repo •Simple tools can have a big impact
  • 20. Get it: github.com/frankfarrell/blast-radius It could easily be translated to your favourite language and build tool Thanks for listening!