SlideShare a Scribd company logo
1 of 18
Download to read offline
Increasing productivity with
continuous delivery
André Luís Pitombeira
Goal
Talk about how we can use continuous delivery to increase the team productivity and what kind of
software development practices we need to effectively do that.
Agenda
● What is continuous delivery?
● Why continuous delivery?
● Continuous delivery benefits
● Continuous delivery practices
● Trunk-based development
● Branch by abstraction
What is continuous delivery
“Continuous Delivery is the ability to get changes of all types—including
new features, configuration changes, bug fixes and experiments—into
production, or into the hands of users, safely and quickly in a sustainable
way.”
See: Continuous Delivery Site
Why continuous delivery?
“It is often assumed that if we want to deploy software more frequently, we must accept lower
levels of stability and reliability in our systems. In fact, peer-reviewed research shows that this
is not the case—high performance teams consistently deliver services faster and more reliably
than their low performing competition. This is true even in highly regulated domains such as
financial services and government. This capability provides an incredible competitive advantage
for organizations that are willing to invest the effort to pursue it.”
See: Continuous Delivery Site
Continuous delivery benefits
● Low risk releases (canary, blue green deployments)
● Faster time to market (incorporate integration and regression testing into their daily work)
● Higher quality (building a deployment pipeline)
● Lower costs (delivering incremental changes are cheaper)
● Better products (test ideas with users before building out whole features)
● Happier teams (releases are less painful)
See: Continuous Delivery Site
Continuous delivery benefits
Continuous delivery practices
See: Accelerate Book
Trunk-based development
“A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’ *, resist
any pressure to create other long-lived development branches by employing documented techniques. They
therefore avoid merge hell, do not break the build, and live happily ever after.”
“Trunk-Based Development is a key enabler of Continuous Integration and by extension Continuous Delivery.
When individuals on a team are committing their changes to the trunk multiple times a day it becomes easy to
satisfy the core requirement of Continuous Integration that all team members commit to trunk at least once every
24 hours. This ensures the codebase is always releasable on demand and helps to make Continuous Delivery a
reality.”
See: Trunk-based development site
Trunk-based development
See: Trunk-based development site
Trunk-based development (conditions)
● Short lived feature branches (enable code reviews)
● Release branches
● Adopt branch by abstraction technique (also consider feature flags)
● Resistance of people used to other workflows
See: Trunk-based development site
Branch by abstraction
“Branch by Abstraction is a set-piece technique to effect a ‘longer to complete’ change in the
trunk. Say a developer (or a pair of developers), has a change that is going to take five days to
complete. There could easily be pressure to create a branch for this - somewhere that can be
unstable for a period of time before it completes (and gets merged back somewhere).”
See: Trunk-based development site
Branch by abstraction
● Introduce an abstraction around the code that is to be replaced, and commit that for all to see. If needed, this can
take multiple commits. None of those are allowed to break the build, and all of them could be pushed to the shared
repository in order, and as done.
● Write a second implementation of the abstraction for the to-be-introduced code, and commit that, but maybe as
‘turned off’ within the trunk so that other developers are not depending on it yet. If needed, this can take multiple
commits as above. The abstraction from #1 may also be occasionally tweaked, but must follow the same rule - do not
break the build.
● Flip the software ‘off’ switch to ‘on’ for the rest of the team, and commit/push that.
● Remove the to-be-replaced implementation
● Remove the abstraction
See: Trunk-based development site
Branch by abstraction
See: Trunk-based development site
Open discussion 🗣
Summary
● Continuous delivery is a set of practices to improve productivity
● Trunk-based development is an enabler for Continuous Integration (CI) and by extension
Continuous Delivery (CD)
● Branch by abstraction is a technique to help developers to break down big changes into
small pieces and merge them into the trunk without breaking the build
References
● Continuous delivery site
● Trunk-based development site
● Accelerate Book
● Continuous Delivery Book
● Working with Legacy Code Book
Thank you 🙏

More Related Content

What's hot

Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Binary Studio
 
Continuous Delivery - From the Trenches
Continuous Delivery - From the TrenchesContinuous Delivery - From the Trenches
Continuous Delivery - From the TrenchesJohan Rydström
 
VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"
VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"
VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"Dakiry
 
Domenico Musto "Continuous Delivery Made Possible"
Domenico Musto "Continuous Delivery Made Possible"Domenico Musto "Continuous Delivery Made Possible"
Domenico Musto "Continuous Delivery Made Possible"Agile Lietuva
 
Chrome release cycle
Chrome release cycleChrome release cycle
Chrome release cycleJolicloud
 
Continuous Integration - Step by Step
Continuous Integration - Step by StepContinuous Integration - Step by Step
Continuous Integration - Step by StepWilliam Simms
 
Continuous integration in large programs
Continuous integration in large programsContinuous integration in large programs
Continuous integration in large programsNaveen Kumar Singh
 
Agile Development Method
Agile Development MethodAgile Development Method
Agile Development MethodJohn Liebenau
 
Tetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El AriefTetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El AriefDicodingEvent
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
Continuous Integration Approach
Continuous Integration ApproachContinuous Integration Approach
Continuous Integration ApproachNigel Thurlow
 
Continuous delivery made
Continuous delivery madeContinuous delivery made
Continuous delivery mademimmozzo_
 

What's hot (17)

Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
 
Agile model
Agile modelAgile model
Agile model
 
Continuous Delivery - From the Trenches
Continuous Delivery - From the TrenchesContinuous Delivery - From the Trenches
Continuous Delivery - From the Trenches
 
VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"
VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"
VOLODYMYR TSAP, BAQ, "CI/CD Infrastructure as a Code"
 
SDLC-Waterfall-Model
SDLC-Waterfall-ModelSDLC-Waterfall-Model
SDLC-Waterfall-Model
 
Domenico Musto "Continuous Delivery Made Possible"
Domenico Musto "Continuous Delivery Made Possible"Domenico Musto "Continuous Delivery Made Possible"
Domenico Musto "Continuous Delivery Made Possible"
 
Chrome release cycle
Chrome release cycleChrome release cycle
Chrome release cycle
 
Sdlc plan
Sdlc planSdlc plan
Sdlc plan
 
Continuous Integration - Step by Step
Continuous Integration - Step by StepContinuous Integration - Step by Step
Continuous Integration - Step by Step
 
Continuous integration in large programs
Continuous integration in large programsContinuous integration in large programs
Continuous integration in large programs
 
Scrum
ScrumScrum
Scrum
 
Agile Development Method
Agile Development MethodAgile Development Method
Agile Development Method
 
Tetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El AriefTetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El Arief
 
Scrum Training
Scrum TrainingScrum Training
Scrum Training
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
Continuous Integration Approach
Continuous Integration ApproachContinuous Integration Approach
Continuous Integration Approach
 
Continuous delivery made
Continuous delivery madeContinuous delivery made
Continuous delivery made
 

Similar to Increasing productivity with continuous delivery

Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOpsEklove Mohan
 
DevOps - Introduction to data science
DevOps - Introduction to data scienceDevOps - Introduction to data science
DevOps - Introduction to data scienceFrank Kienle
 
The Evolution from Agile to DevOps
The Evolution from Agile to DevOpsThe Evolution from Agile to DevOps
The Evolution from Agile to DevOpsXMPlify Tech
 
Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)Sergio Navarro Pino
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile ME
 
Testing in the new age of DevOps
Testing in the new age of DevOpsTesting in the new age of DevOps
Testing in the new age of DevOpsMoataz Mahmoud
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopWajih Aslam
 
Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Moss Drake
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile EngineeringJohn Lewis
 
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...Jitendra Bafna
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
How to go from waterfall app dev to secure agile development in 2 weeks
How to go from waterfall app dev to secure agile development in 2 weeks How to go from waterfall app dev to secure agile development in 2 weeks
How to go from waterfall app dev to secure agile development in 2 weeks Ulf Mattsson
 
Continuous Integration Introduction
Continuous Integration IntroductionContinuous Integration Introduction
Continuous Integration IntroductionFáber D. Giraldo
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...DevOps.com
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityIvan Porta
 

Similar to Increasing productivity with continuous delivery (20)

Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOps
 
DevOps - Introduction to data science
DevOps - Introduction to data scienceDevOps - Introduction to data science
DevOps - Introduction to data science
 
The Evolution from Agile to DevOps
The Evolution from Agile to DevOpsThe Evolution from Agile to DevOps
The Evolution from Agile to DevOps
 
Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)
 
Devops
DevopsDevops
Devops
 
Dev ops lpi-701
Dev ops lpi-701Dev ops lpi-701
Dev ops lpi-701
 
Software management for tech startups
Software management for tech startupsSoftware management for tech startups
Software management for tech startups
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
 
Testing in the new age of DevOps
Testing in the new age of DevOpsTesting in the new age of DevOps
Testing in the new age of DevOps
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loop
 
Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
 
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
How to go from waterfall app dev to secure agile development in 2 weeks
How to go from waterfall app dev to secure agile development in 2 weeks How to go from waterfall app dev to secure agile development in 2 weeks
How to go from waterfall app dev to secure agile development in 2 weeks
 
Continuous Integration Introduction
Continuous Integration IntroductionContinuous Integration Introduction
Continuous Integration Introduction
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivity
 
Lecture 3 se
Lecture 3 seLecture 3 se
Lecture 3 se
 

More from André Pitombeira

More from André Pitombeira (6)

Software estimation techniques
Software estimation techniquesSoftware estimation techniques
Software estimation techniques
 
Best Practices in Software Development
Best Practices in Software DevelopmentBest Practices in Software Development
Best Practices in Software Development
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScript
 
Clustering
ClusteringClustering
Clustering
 
TDD e Refactoring
TDD e RefactoringTDD e Refactoring
TDD e Refactoring
 
Computação Ubíqua
Computação UbíquaComputação Ubíqua
Computação Ubíqua
 

Recently uploaded

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 

Recently uploaded (20)

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 

Increasing productivity with continuous delivery

  • 1. Increasing productivity with continuous delivery André Luís Pitombeira
  • 2. Goal Talk about how we can use continuous delivery to increase the team productivity and what kind of software development practices we need to effectively do that.
  • 3. Agenda ● What is continuous delivery? ● Why continuous delivery? ● Continuous delivery benefits ● Continuous delivery practices ● Trunk-based development ● Branch by abstraction
  • 4. What is continuous delivery “Continuous Delivery is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.” See: Continuous Delivery Site
  • 5. Why continuous delivery? “It is often assumed that if we want to deploy software more frequently, we must accept lower levels of stability and reliability in our systems. In fact, peer-reviewed research shows that this is not the case—high performance teams consistently deliver services faster and more reliably than their low performing competition. This is true even in highly regulated domains such as financial services and government. This capability provides an incredible competitive advantage for organizations that are willing to invest the effort to pursue it.” See: Continuous Delivery Site
  • 6. Continuous delivery benefits ● Low risk releases (canary, blue green deployments) ● Faster time to market (incorporate integration and regression testing into their daily work) ● Higher quality (building a deployment pipeline) ● Lower costs (delivering incremental changes are cheaper) ● Better products (test ideas with users before building out whole features) ● Happier teams (releases are less painful) See: Continuous Delivery Site
  • 9. Trunk-based development “A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’ *, resist any pressure to create other long-lived development branches by employing documented techniques. They therefore avoid merge hell, do not break the build, and live happily ever after.” “Trunk-Based Development is a key enabler of Continuous Integration and by extension Continuous Delivery. When individuals on a team are committing their changes to the trunk multiple times a day it becomes easy to satisfy the core requirement of Continuous Integration that all team members commit to trunk at least once every 24 hours. This ensures the codebase is always releasable on demand and helps to make Continuous Delivery a reality.” See: Trunk-based development site
  • 11. Trunk-based development (conditions) ● Short lived feature branches (enable code reviews) ● Release branches ● Adopt branch by abstraction technique (also consider feature flags) ● Resistance of people used to other workflows See: Trunk-based development site
  • 12. Branch by abstraction “Branch by Abstraction is a set-piece technique to effect a ‘longer to complete’ change in the trunk. Say a developer (or a pair of developers), has a change that is going to take five days to complete. There could easily be pressure to create a branch for this - somewhere that can be unstable for a period of time before it completes (and gets merged back somewhere).” See: Trunk-based development site
  • 13. Branch by abstraction ● Introduce an abstraction around the code that is to be replaced, and commit that for all to see. If needed, this can take multiple commits. None of those are allowed to break the build, and all of them could be pushed to the shared repository in order, and as done. ● Write a second implementation of the abstraction for the to-be-introduced code, and commit that, but maybe as ‘turned off’ within the trunk so that other developers are not depending on it yet. If needed, this can take multiple commits as above. The abstraction from #1 may also be occasionally tweaked, but must follow the same rule - do not break the build. ● Flip the software ‘off’ switch to ‘on’ for the rest of the team, and commit/push that. ● Remove the to-be-replaced implementation ● Remove the abstraction See: Trunk-based development site
  • 14. Branch by abstraction See: Trunk-based development site
  • 16. Summary ● Continuous delivery is a set of practices to improve productivity ● Trunk-based development is an enabler for Continuous Integration (CI) and by extension Continuous Delivery (CD) ● Branch by abstraction is a technique to help developers to break down big changes into small pieces and merge them into the trunk without breaking the build
  • 17. References ● Continuous delivery site ● Trunk-based development site ● Accelerate Book ● Continuous Delivery Book ● Working with Legacy Code Book