SlideShare a Scribd company logo
1 of 140
Download to read offline
Modern Release
Engineering in a Nutshell
Why Researchers should Care
Bram Adams Shane McIntosh
,
M
C IS
Back in 2009 …
On average, we
release new code fifty
times a day.
Release engineering aims to …
4
Release engineering aims to …
4
code
change
Release engineering aims to …
4
code
change
Release engineering aims to …
4
code
change
Release engineering aims to …
4
code
change
FAST
Release
Engineering
Release
Engineering
Release
Engineering
integrating code changes
Release
Engineering
integrating code changes building/testing (CI)
Release
Engineering
integrating code changes building/testing (CI)
deploying a new release
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
Nowadays …
Time-boxed
releases
7
Time-boxed
releases
6 months
7
Time-boxed
releases
6 weeks
6 months
7
Time-boxed
releases
2 weeks
(mobile)
6 weeks
6 months
7
Time-boxed
releases
twice/day
(web)
2 weeks
(mobile)
6 weeks
6 months
7
Time-boxed
releases
twice/day
(web)
daily
2 weeks
(mobile)
6 weeks
6 months
7
http://www.informit.com/articles/article.aspx?p=1833567
Jez Humble
http://www.informit.com/articles/article.aspx?p=1833567
reduce the risk
of releasing software
if it hurts, do it
more frequently, and
bring the pain
forward
Jez Humble
• How quickly can we ship a chemspill release?
• 4-6 weeks 11 hours
• How long to ship a “new feature” release?
• 12-18 months 6 weeks
• How many active code lines?
• 1 1/2 42
• How many checkins per day?
• ~15 per day 325 per day
Before & After
http://oduinn.com/images/2013/blog_2013_RelEngAsForceMultiplier.pdf 9
• How quickly can we ship a chemspill release?
• 4-6 weeks 11 hours
• How long to ship a “new feature” release?
• 12-18 months 6 weeks
• How many active code lines?
• 1 1/2 42
• How many checkins per day?
• ~15 per day 325 per day
Before & After
http://oduinn.com/images/2013/blog_2013_RelEngAsForceMultiplier.pdf 9
• How quickly can we ship a chemspill release?
• 4-6 weeks 11 hours
• How long to ship a “new feature” release?
• 12-18 months 6 weeks
• How many active code lines?
• 1 1/2 42
• How many checkins per day?
• ~15 per day 325 per day
Before & After
http://oduinn.com/images/2013/blog_2013_RelEngAsForceMultiplier.pdf 9
https://xebialabs.com/periodic-table-of-devops-tools/ & https://xebialabs.com/the-ultimate-devops-tool-chest/
11
industry
Release
engineering
innovation
led by
industry!
11
industry
a
c
a
d
e
m
i
a
Release
engineering
innovation
led by
industry!
12
What can you
do for release
engineering?
RELENG: International Workshop on
Release Engineering
13
RELENG: International Workshop on
Release Engineering
13
230 participants3 editions
dozens of industry
& academic talks
RELENG: International Workshop on
Release Engineering
13
230 participants3 editions
dozens of industry
& academic talks
RELENG: International Workshop on
Release Engineering
13
230 participants3 editions
next RELENG:
in Fall 2016
http://releng.polymtl.ca
dozens of industry
& academic talks
How to predict integration effort?
14
How to predict integration effort?
14
git
repo
How to predict integration effort?
14
git
repo
myapp
v.1
How to predict integration effort?
14
git
repo
myapp
v.1
?
How to predict integration effort?
14
git
repo
myapp
v.1
How to predict integration effort?
14
feature branch 1
git
repo
myapp
v.1
How to predict integration effort?
14
feature branch 1
git
repo
myapp
v.1
How to predict integration effort?
14
feature branch 1
git
repo
myapp
v.1
master branch
How to predict integration effort?
14
feature branch 1
git
repo
myapp
v.1
master branch
How to predict integration effort?
14
feature branch 1
git
repo
MERGE
myapp
v.1
master branch
How to predict integration effort?
14
feature branch 1
git
repo
MERGE
myapp
v.1
master branch
How to predict integration effort?
14
feature branch 1
git
repo
MERGE
myapp
v.1
master branch
How to predict integration effort?
14
feature branch 1
git
repo
release branch
MERGE
myapp
v.1
master branch
How to predict integration effort?
14
feature branch 1
git
repo
release branch
MERGE
myapp
v.1
master branch
How to predict integration effort?
14
feature branch 1
git
repo
release branch
MERGE
myapp
v.1
feature branch 2
master branch
How to predict integration effort?
14
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2
master branch
How to predict integration effort?
14
3rd party
dependency
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2
master branch
How to predict integration effort?
14
3rd party
dependency
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2
master branch
How to predict integration effort?
14
3rd party
dependency
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2 sync
15
https://xkcd.com/303/
user acceptance/system tests
performance tests
(selection of) unit tests
all unit tests
integration tests
time to run (hours)
full compilation
incremental compilation
`
Why do CI builds take so long?
16
user acceptance/system tests
performance tests
(selection of) unit tests
all unit tests
integration tests
time to run (hours)
full compilation
incremental compilation
`
local developer build
Why do CI builds take so long?
16
user acceptance/system tests
performance tests
(selection of) unit tests
all unit tests
integration tests
time to run (hours)
full compilation
incremental compilation
`
local developer build
Why do CI builds take so long?
16
user acceptance/system tests
performance tests
(selection of) unit tests
all unit tests
integration tests
time to run (hours)
full compilation
incremental compilation
` CI build of merged change
local developer build
Why do CI builds take so long?
16
user acceptance/system tests
performance tests
(selection of) unit tests
all unit tests
integration tests
time to run (hours)
full compilation
incremental compilation
CI build of merged change
local developer build
Why do CI builds take so long?
16
user acceptance/system tests
performance tests
(selection of) unit tests
all unit tests
integration tests
time to run (hours)
full compilation
incremental compilation
closer to release
CI build of merged change
local developer build
Why do CI builds take so long?
16
user acceptance/system tests
performance tests
(selection of) unit tests
all unit tests
integration tests
time to run (hours)
full compilation
incremental compilation
closer to release
CI build of merged change
local developer build
Why do CI builds take so long?
16
Even worse …
17
Even worse …
17
build machinery run
on each commit!
Even worse …
17
build machinery run
on each commit!
Even worse …
17
build machinery run
on each commit!
different feature
configurations
Even worse …
17
build machinery run
on each commit!
not just build and
test, also code
quality builds,
nightly builds, etc.
different feature
configurations
Even worse …
17
build machinery run
on each commit!
not just build and
test, also code
quality builds,
nightly builds, etc.
not all builds
succeed
different feature
configurations
What are deployment best practices?
18
What are deployment best practices?
18
v.1 v.1v.1
What are deployment best practices?
18
v.1v.2 v.1
What are deployment best practices?
18
v.2 v.1v.2
What are deployment best practices?
18
v.2 v.1v.1
What are deployment best practices?
18
v.1v.1v.1
Infrastructure code
19
#	
  Install	
  PostgreSQL	
  server	
  and	
  client	
  
include_recipe	
  "postgresql::server"	
  
include_recipe	
  "postgresql::client"	
  
#	
  Make	
  postgresql_database	
  resource	
  available	
  
include_recipe	
  "database::postgresql"	
  
#	
  Create	
  database	
  for	
  Rails	
  app	
  
db	
  =	
  node["practicingruby"]["database"]	
  
postgresql_database	
  db["name"]	
  do	
  
	
  	
  connection(	
  
	
  	
  	
  	
  :host	
  	
  	
  	
  	
  =>	
  db["host"],	
  
	
  	
  	
  	
  :port	
  	
  	
  	
  	
  =>	
  node["postgresql"]["config"]["port"],	
  
	
  	
  	
  	
  :username	
  =>	
  db["username"],	
  
	
  	
  	
  	
  :password	
  =>	
  db["password"],	
  
	
  	
  )	
  
end
Infrastructure code
19
#	
  Install	
  PostgreSQL	
  server	
  and	
  client	
  
include_recipe	
  "postgresql::server"	
  
include_recipe	
  "postgresql::client"	
  
#	
  Make	
  postgresql_database	
  resource	
  available	
  
include_recipe	
  "database::postgresql"	
  
#	
  Create	
  database	
  for	
  Rails	
  app	
  
db	
  =	
  node["practicingruby"]["database"]	
  
postgresql_database	
  db["name"]	
  do	
  
	
  	
  connection(	
  
	
  	
  	
  	
  :host	
  	
  	
  	
  	
  =>	
  db["host"],	
  
	
  	
  	
  	
  :port	
  	
  	
  	
  	
  =>	
  node["postgresql"]["config"]["port"],	
  
	
  	
  	
  	
  :username	
  =>	
  db["username"],	
  
	
  	
  	
  	
  :password	
  =>	
  db["password"],	
  
	
  	
  )	
  
end
Infrastructure code
19
#	
  Install	
  PostgreSQL	
  server	
  and	
  client	
  
include_recipe	
  "postgresql::server"	
  
include_recipe	
  "postgresql::client"	
  
#	
  Make	
  postgresql_database	
  resource	
  available	
  
include_recipe	
  "database::postgresql"	
  
#	
  Create	
  database	
  for	
  Rails	
  app	
  
db	
  =	
  node["practicingruby"]["database"]	
  
postgresql_database	
  db["name"]	
  do	
  
	
  	
  connection(	
  
	
  	
  	
  	
  :host	
  	
  	
  	
  	
  =>	
  db["host"],	
  
	
  	
  	
  	
  :port	
  	
  	
  	
  	
  =>	
  node["postgresql"]["config"]["port"],	
  
	
  	
  	
  	
  :username	
  =>	
  db["username"],	
  
	
  	
  	
  	
  :password	
  =>	
  db["password"],	
  
	
  	
  )	
  
end
Infrastructure code smells?
19
Is the
release in good
shape?
Was the release a
success?
Is the
release in good
shape?
Was the release a
success?
Is the
release in good
shape?
The release is
botched, how can we
roll back?
Was the release a
success?
What’s the optimal cycle
time for us?
Is the
release in good
shape?
The release is
botched, how can we
roll back?
Chuck
Rossi
21
Continuous delivery
for mobile apps is a serious
challenge!
Chuck
Rossi
21
What can you
do for release
engineering?
22
What can you
do for release
engineering?
22
What can
release
engineering
do for you?
When noble intentions meet reality
23
Harmful assumptions about release pipelines
that can impact predictive modelling
24
Harmful assumptions about release pipelines
that can impact predictive modelling
1. All releases are equal
24
25
Look at Project X!
It had a crazy number of
bugs in the typical six-month
post-release window!
25
Look at Project X!
It had a crazy number of
bugs in the typical six-month
post-release window!
Well, Project X releases
every 6 weeks, so
you’re counting several
releases…
25
Release cycles vary among
popular studied systems
Daysbetweenreleases
An Empirical Study of Delays in the Integration of
Addressed Issues
D. A. da Costa et al.
[ICSME 2014]
Release cycles can even
vary within systems!
1.0
2.0
2.5
3.0
3.5
4.0
5.0
6.0
7.0
8.0
9.0
10.0
0 200 400 600 800
Firefoxrelease
Days since prior release 27
The rapid release cycle of modern
software systems
28
The rapid release cycle of modern
software systems
Often release several times
in one day!
28
1. All releases are equal
Harmful assumptions about release pipelines
that can impact predictive modelling
29
1. All releases are equal
2. All branches are equal
Harmful assumptions about release pipelines
that can impact predictive modelling
29
30
Weird… The size of this
project fluctuates between
50k and 45k lines!
30
Weird… The size of this
project fluctuates between
50k and 45k lines!
Hmm, did you select the
relevant branch? Several
are developed in parallel!
30
An example of defect prediction
Feature development
Defect repairing
Merge
Commit types
31
An example of defect prediction
Feature development
Defect repairing
Merge
Commit types
31
An example of defect prediction
v1.0
Feature development
Defect repairing
Merge
Commit types
31
An example of defect prediction
v1.0
Feature development
Defect repairing
Merge
Commit types
Pre-
release
31
An example of defect prediction
v1.0
Feature development
Defect repairing
Merge
Commit types
Pre-
release
Post-
release
31
An example of defect prediction
v1.0
Feature development
Defect repairing
Merge
Commit types
Pre-
release
Post-
release
31
Handling the intricacies of a multi-
branch release pipeline
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
v1.0
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
v1.0
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
v1.0
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
v1.0
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
v1.0
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Handling the intricacies of a multi-
branch release pipeline
v1.0
Dev
Stable
Feature development
Defect repairing
Merge
Commit types
32
Branching can get really complex…
33
1. All releases are equal
2. All branches are equal
Harmful assumptions about release pipelines
that can impact predictive modelling
34
1. All releases are equal
2. All branches are equal
3. All files are equal
Harmful assumptions about release pipelines
that can impact predictive modelling
34
35
This popular web browser
has an enormous codebase!
>30M lines!
35
This popular web browser
has an enormous codebase!
>30M lines!
Yes, but the codebase
contains several systems!
The build configuration
decides which one is
produced!
35
36
Many files are conditionally
included in deliverables
Tracing Software Build
Processes to Uncover
License Compliance
Inconsistencies
S. van der Berg et al.
[ASE 2014]
Aterm
Opkg
Bash
CUPS
Xalan
OpenSSL
FFmpeg
% Excluded Files
0% 20% 40% 60% 80%
36
Many files are conditionally
included in deliverables
Fixes in these files may have a
smaller impact (if any) on customers
Tracing Software Build
Processes to Uncover
License Compliance
Inconsistencies
S. van der Berg et al.
[ASE 2014]
Aterm
Opkg
Bash
CUPS
Xalan
OpenSSL
FFmpeg
% Excluded Files
0% 20% 40% 60% 80%
Understanding conditionally
included files using the build system
Design recovery and maintenance
of build systems
B. Adams et al.
[ICSM 2007]
37
1. All releases are equal,
2. All branches are equal,
Harmful assumptions about release pipelines
that can impact predictive modelling
3. All files are equal
38
but some are more equal than others
1. All releases are equal,
2. All branches are equal,
Harmful assumptions about release pipelines
that can impact predictive modelling
3. All files are equal
38
My nightmare
Amassing and indexing a large
sample of version control systems
Audris Mockus
[MSR 2009]
Boa: a language and infrastructure for analyzing
ultra-large-scale software repositories
R. Dyer et al.
[ICSE 2013]
The GHTorrent Dataset and Tool
Suite
G. Gousios
[MSR 2013]
My nightmare
Amassing and indexing a large
sample of version control systems
Audris Mockus
[MSR 2009]
Boa: a language and infrastructure for analyzing
ultra-large-scale software repositories
R. Dyer et al.
[ICSE 2013]
The GHTorrent Dataset and Tool
Suite
G. Gousios
[MSR 2013]
We collect all of the data in the world,
but it’s meaningless without context!
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
http://www.informit.com/articles/article.aspx?p=1833567
reduce the risk
of releasing software
if it hurts, do it
more frequently, and
bring the pain
forward
Jez Humble
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
http://www.informit.com/articles/article.aspx?p=1833567
reduce the risk
of releasing software
if it hurts, do it
more frequently, and
bring the pain
forward
Jez Humble
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
http://www.informit.com/articles/article.aspx?p=1833567
reduce the risk
of releasing software
if it hurts, do it
more frequently, and
bring the pain
forward
Jez Humble
master branch
How to Predict Integration Effort?
14
3rd party
dependency
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2 sync
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
http://www.informit.com/articles/article.aspx?p=1833567
reduce the risk
of releasing software
if it hurts, do it
more frequently, and
bring the pain
forward
Jez Humble
master branch
How to Predict Integration Effort?
14
3rd party
dependency
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2
sync
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
http://www.informit.com/articles/article.aspx?p=1833567
reduce the risk
of releasing software
if it hurts, do it
more frequently, and
bring the pain
forward
Jez Humble
master branch
How to Predict Integration Effort?
14
3rd party
dependency
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2
sync
but some are more equal than others
1. All releases are equal,
2. All branches are equal,
Harmful assumptions about release pipelines
that can impact predictive modelling
3. All files are equal
Release
Engineering
integrating code changes building/testing (CI)
releasing to the user deploying a new release
http://www.informit.com/articles/article.aspx?p=1833567
reduce the risk
of releasing software
if it hurts, do it
more frequently, and
bring the pain
forward
Jez Humble
master branch
How to Predict Integration Effort?
14
3rd party
dependency
feature branch 1
git
repo
release branch
MERGE CONFLICT?
myapp
v.1
feature branch 2
sync
but some are more equal than others
1. All releases are equal,
2. All branches are equal,
Harmful assumptions about release pipelines
that can impact predictive modelling
3. All files are equal

More Related Content

What's hot

MOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous DeliveryMOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous Deliveryanistar sung
 
Continuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYCContinuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYCMike Brittain
 
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battleSimple tools to fight bigger quality battle
Simple tools to fight bigger quality battleAnand Ramdeo
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點William Yeh
 
Continuous Performance Testing for Microservices
Continuous Performance Testing for MicroservicesContinuous Performance Testing for Microservices
Continuous Performance Testing for MicroservicesVincenzo Ferme
 
Continuous Integration and PHP
Continuous Integration and PHPContinuous Integration and PHP
Continuous Integration and PHPArno Schneider
 
不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradlesam chiu
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestMarcin Grzejszczak
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDGlobalLogic Ukraine
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformTechsophy Inc.
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Controlelliando dias
 
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...QAFest
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by stepBinh Quan Duc
 
ScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency InjectionScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency Injection7mind
 
Architecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDCArchitecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDCDaniel Barker
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Marcin Grzejszczak
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
Hyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkitHyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkit7mind
 
有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?William Yeh
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineRobert McDermott
 

What's hot (20)

MOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous DeliveryMOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous Delivery
 
Continuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYCContinuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYC
 
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battleSimple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
Continuous Performance Testing for Microservices
Continuous Performance Testing for MicroservicesContinuous Performance Testing for Microservices
Continuous Performance Testing for Microservices
 
Continuous Integration and PHP
Continuous Integration and PHPContinuous Integration and PHP
Continuous Integration and PHP
 
不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfest
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CD
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
 
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
QA Fest 2018. Adam Stasiak. React Native is Coming – the story of hybrid mobi...
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
 
ScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency InjectionScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency Injection
 
Architecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDCArchitecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDC
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
Hyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkitHyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkit
 
有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 

Viewers also liked

Development Lifecycle: From Requirement to Release
Development Lifecycle: From Requirement to ReleaseDevelopment Lifecycle: From Requirement to Release
Development Lifecycle: From Requirement to ReleaseJulie Meloni
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)Bram Adams
 
A Qualitative Study on Performance Bugs (MSR 2012)
A Qualitative Study on Performance Bugs (MSR 2012)A Qualitative Study on Performance Bugs (MSR 2012)
A Qualitative Study on Performance Bugs (MSR 2012)Bram Adams
 
The Evolution of the R Software Ecosystem (CSMR 2013)
The Evolution of the R Software Ecosystem (CSMR 2013)The Evolution of the R Software Ecosystem (CSMR 2013)
The Evolution of the R Software Ecosystem (CSMR 2013)Bram Adams
 
An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)Bram Adams
 
Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)Bram Adams
 
How much does this commit cost? -A position paper
How much does this commit cost? -A position paperHow much does this commit cost? -A position paper
How much does this commit cost? -A position paperYujuan Jiang
 

Viewers also liked (7)

Development Lifecycle: From Requirement to Release
Development Lifecycle: From Requirement to ReleaseDevelopment Lifecycle: From Requirement to Release
Development Lifecycle: From Requirement to Release
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
 
A Qualitative Study on Performance Bugs (MSR 2012)
A Qualitative Study on Performance Bugs (MSR 2012)A Qualitative Study on Performance Bugs (MSR 2012)
A Qualitative Study on Performance Bugs (MSR 2012)
 
The Evolution of the R Software Ecosystem (CSMR 2013)
The Evolution of the R Software Ecosystem (CSMR 2013)The Evolution of the R Software Ecosystem (CSMR 2013)
The Evolution of the R Software Ecosystem (CSMR 2013)
 
An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)An Empirical Study of Build System Migrations in Practice (ICSM 2012)
An Empirical Study of Build System Migrations in Practice (ICSM 2012)
 
Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)Why do Automated Builds Break? An Empirical Study (ICSME 2014)
Why do Automated Builds Break? An Empirical Study (ICSME 2014)
 
How much does this commit cost? -A position paper
How much does this commit cost? -A position paperHow much does this commit cost? -A position paper
How much does this commit cost? -A position paper
 

Similar to Modern Release Engineering in a Nutshell - Why Researchers should Care!

State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopmentgillygize
 
Cloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCCCloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCCAdrian Cockcroft
 
Prepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenPrepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenSonatype
 
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenAll Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenFab L
 
Turnkey Continuous Delivery
Turnkey Continuous DeliveryTurnkey Continuous Delivery
Turnkey Continuous DeliveryGianni Bombelli
 
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in ActionBill Scott
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerBill Scott
 
Automation and Developer Infrastructure — Empowering Engineers to Move from I...
Automation and Developer Infrastructure — Empowering Engineers to Move from I...Automation and Developer Infrastructure — Empowering Engineers to Move from I...
Automation and Developer Infrastructure — Empowering Engineers to Move from I...indeedeng
 
Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Fwdays
 
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)Alexandre Gouaillard
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024Cloud Native NoVA
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainKen Collins
 
How to build Sdk? Best practices
How to build Sdk? Best practicesHow to build Sdk? Best practices
How to build Sdk? Best practicesVitali Pekelis
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherPavan Kumar
 
Lean engineering for lean/balanced teams: lessons learned (and still learning...
Lean engineering for lean/balanced teams: lessons learned (and still learning...Lean engineering for lean/balanced teams: lessons learned (and still learning...
Lean engineering for lean/balanced teams: lessons learned (and still learning...Balanced Team
 
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)Aysylu Greenberg
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development WorkflowVũ Nguyễn
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014Oliver N
 

Similar to Modern Release Engineering in a Nutshell - Why Researchers should Care! (20)

State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
Cloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCCCloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCC
 
Prepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenPrepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/Green
 
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenAll Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
 
Turnkey Continuous Delivery
Turnkey Continuous DeliveryTurnkey Continuous Delivery
Turnkey Continuous Delivery
 
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
6 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
 
Don't screw it up! How to build durable API
Don't screw it up! How to build durable API Don't screw it up! How to build durable API
Don't screw it up! How to build durable API
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
 
Enabling Lean at Enterprise Scale: Lean Engineering in Action
Enabling Lean at Enterprise Scale: Lean Engineering in ActionEnabling Lean at Enterprise Scale: Lean Engineering in Action
Enabling Lean at Enterprise Scale: Lean Engineering in Action
 
Automation and Developer Infrastructure — Empowering Engineers to Move from I...
Automation and Developer Infrastructure — Empowering Engineers to Move from I...Automation and Developer Infrastructure — Empowering Engineers to Move from I...
Automation and Developer Infrastructure — Empowering Engineers to Move from I...
 
Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"
 
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
 
How to build Sdk? Best practices
How to build Sdk? Best practicesHow to build Sdk? Best practices
How to build Sdk? Best practices
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
 
Lean engineering for lean/balanced teams: lessons learned (and still learning...
Lean engineering for lean/balanced teams: lessons learned (and still learning...Lean engineering for lean/balanced teams: lessons learned (and still learning...
Lean engineering for lean/balanced teams: lessons learned (and still learning...
 
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
 

Recently uploaded

DEVICE DRIVERS AND INTERRUPTS SERVICE MECHANISM.pdf
DEVICE DRIVERS AND INTERRUPTS  SERVICE MECHANISM.pdfDEVICE DRIVERS AND INTERRUPTS  SERVICE MECHANISM.pdf
DEVICE DRIVERS AND INTERRUPTS SERVICE MECHANISM.pdfAkritiPradhan2
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Coursebim.edu.pl
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfBalamuruganV28
 
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.pptROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.pptJohnWilliam111370
 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating SystemRashmi Bhat
 
A brief look at visionOS - How to develop app on Apple's Vision Pro
A brief look at visionOS - How to develop app on Apple's Vision ProA brief look at visionOS - How to develop app on Apple's Vision Pro
A brief look at visionOS - How to develop app on Apple's Vision ProRay Yuan Liu
 
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书rnrncn29
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Communityprachaibot
 
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTESCME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTESkarthi keyan
 
Secure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech LabsSecure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech Labsamber724300
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfalene1
 
Turn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptxTurn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptxStephen Sitton
 
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptxPython Programming for basic beginners.pptx
Python Programming for basic beginners.pptxmohitesoham12
 
Robotics Group 10 (Control Schemes) cse.pdf
Robotics Group 10  (Control Schemes) cse.pdfRobotics Group 10  (Control Schemes) cse.pdf
Robotics Group 10 (Control Schemes) cse.pdfsahilsajad201
 
Javier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptxJavier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptxJavier Fernández Muñoz
 
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONTHE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONjhunlian
 
priority interrupt computer organization
priority interrupt computer organizationpriority interrupt computer organization
priority interrupt computer organizationchnrketan
 
70 POWER PLANT IAE V2500 technical training
70 POWER PLANT IAE V2500 technical training70 POWER PLANT IAE V2500 technical training
70 POWER PLANT IAE V2500 technical trainingGladiatorsKasper
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodManicka Mamallan Andavar
 
Curve setting (Basic Mine Surveying)_MI10412MI.pptx
Curve setting (Basic Mine Surveying)_MI10412MI.pptxCurve setting (Basic Mine Surveying)_MI10412MI.pptx
Curve setting (Basic Mine Surveying)_MI10412MI.pptxRomil Mishra
 

Recently uploaded (20)

DEVICE DRIVERS AND INTERRUPTS SERVICE MECHANISM.pdf
DEVICE DRIVERS AND INTERRUPTS  SERVICE MECHANISM.pdfDEVICE DRIVERS AND INTERRUPTS  SERVICE MECHANISM.pdf
DEVICE DRIVERS AND INTERRUPTS SERVICE MECHANISM.pdf
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Course
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdf
 
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.pptROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
ROBOETHICS-CCS345 ETHICS AND ARTIFICIAL INTELLIGENCE.ppt
 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating System
 
A brief look at visionOS - How to develop app on Apple's Vision Pro
A brief look at visionOS - How to develop app on Apple's Vision ProA brief look at visionOS - How to develop app on Apple's Vision Pro
A brief look at visionOS - How to develop app on Apple's Vision Pro
 
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Community
 
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTESCME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
 
Secure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech LabsSecure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech Labs
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
 
Turn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptxTurn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptx
 
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptxPython Programming for basic beginners.pptx
Python Programming for basic beginners.pptx
 
Robotics Group 10 (Control Schemes) cse.pdf
Robotics Group 10  (Control Schemes) cse.pdfRobotics Group 10  (Control Schemes) cse.pdf
Robotics Group 10 (Control Schemes) cse.pdf
 
Javier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptxJavier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptx
 
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONTHE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
 
priority interrupt computer organization
priority interrupt computer organizationpriority interrupt computer organization
priority interrupt computer organization
 
70 POWER PLANT IAE V2500 technical training
70 POWER PLANT IAE V2500 technical training70 POWER PLANT IAE V2500 technical training
70 POWER PLANT IAE V2500 technical training
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument method
 
Curve setting (Basic Mine Surveying)_MI10412MI.pptx
Curve setting (Basic Mine Surveying)_MI10412MI.pptxCurve setting (Basic Mine Surveying)_MI10412MI.pptx
Curve setting (Basic Mine Surveying)_MI10412MI.pptx
 

Modern Release Engineering in a Nutshell - Why Researchers should Care!

  • 1. Modern Release Engineering in a Nutshell Why Researchers should Care Bram Adams Shane McIntosh , M C IS
  • 3.
  • 4. On average, we release new code fifty times a day.
  • 6. Release engineering aims to … 4 code change
  • 7. Release engineering aims to … 4 code change
  • 8. Release engineering aims to … 4 code change
  • 9. Release engineering aims to … 4 code change FAST
  • 14. Release Engineering integrating code changes building/testing (CI) deploying a new release
  • 15. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release
  • 24. http://www.informit.com/articles/article.aspx?p=1833567 reduce the risk of releasing software if it hurts, do it more frequently, and bring the pain forward Jez Humble
  • 25. • How quickly can we ship a chemspill release? • 4-6 weeks 11 hours • How long to ship a “new feature” release? • 12-18 months 6 weeks • How many active code lines? • 1 1/2 42 • How many checkins per day? • ~15 per day 325 per day Before & After http://oduinn.com/images/2013/blog_2013_RelEngAsForceMultiplier.pdf 9
  • 26. • How quickly can we ship a chemspill release? • 4-6 weeks 11 hours • How long to ship a “new feature” release? • 12-18 months 6 weeks • How many active code lines? • 1 1/2 42 • How many checkins per day? • ~15 per day 325 per day Before & After http://oduinn.com/images/2013/blog_2013_RelEngAsForceMultiplier.pdf 9
  • 27. • How quickly can we ship a chemspill release? • 4-6 weeks 11 hours • How long to ship a “new feature” release? • 12-18 months 6 weeks • How many active code lines? • 1 1/2 42 • How many checkins per day? • ~15 per day 325 per day Before & After http://oduinn.com/images/2013/blog_2013_RelEngAsForceMultiplier.pdf 9
  • 31. 12 What can you do for release engineering?
  • 32. RELENG: International Workshop on Release Engineering 13
  • 33. RELENG: International Workshop on Release Engineering 13 230 participants3 editions dozens of industry & academic talks
  • 34. RELENG: International Workshop on Release Engineering 13 230 participants3 editions dozens of industry & academic talks
  • 35. RELENG: International Workshop on Release Engineering 13 230 participants3 editions next RELENG: in Fall 2016 http://releng.polymtl.ca dozens of industry & academic talks
  • 36. How to predict integration effort? 14
  • 37. How to predict integration effort? 14 git repo
  • 38. How to predict integration effort? 14 git repo myapp v.1
  • 39. How to predict integration effort? 14 git repo myapp v.1 ?
  • 40. How to predict integration effort? 14 git repo myapp v.1
  • 41. How to predict integration effort? 14 feature branch 1 git repo myapp v.1
  • 42. How to predict integration effort? 14 feature branch 1 git repo myapp v.1
  • 43. How to predict integration effort? 14 feature branch 1 git repo myapp v.1
  • 44. master branch How to predict integration effort? 14 feature branch 1 git repo myapp v.1
  • 45. master branch How to predict integration effort? 14 feature branch 1 git repo MERGE myapp v.1
  • 46. master branch How to predict integration effort? 14 feature branch 1 git repo MERGE myapp v.1
  • 47. master branch How to predict integration effort? 14 feature branch 1 git repo MERGE myapp v.1
  • 48. master branch How to predict integration effort? 14 feature branch 1 git repo release branch MERGE myapp v.1
  • 49. master branch How to predict integration effort? 14 feature branch 1 git repo release branch MERGE myapp v.1
  • 50. master branch How to predict integration effort? 14 feature branch 1 git repo release branch MERGE myapp v.1 feature branch 2
  • 51. master branch How to predict integration effort? 14 feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2
  • 52. master branch How to predict integration effort? 14 3rd party dependency feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2
  • 53. master branch How to predict integration effort? 14 3rd party dependency feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2
  • 54. master branch How to predict integration effort? 14 3rd party dependency feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2 sync
  • 56. user acceptance/system tests performance tests (selection of) unit tests all unit tests integration tests time to run (hours) full compilation incremental compilation ` Why do CI builds take so long? 16
  • 57. user acceptance/system tests performance tests (selection of) unit tests all unit tests integration tests time to run (hours) full compilation incremental compilation ` local developer build Why do CI builds take so long? 16
  • 58. user acceptance/system tests performance tests (selection of) unit tests all unit tests integration tests time to run (hours) full compilation incremental compilation ` local developer build Why do CI builds take so long? 16
  • 59. user acceptance/system tests performance tests (selection of) unit tests all unit tests integration tests time to run (hours) full compilation incremental compilation ` CI build of merged change local developer build Why do CI builds take so long? 16
  • 60. user acceptance/system tests performance tests (selection of) unit tests all unit tests integration tests time to run (hours) full compilation incremental compilation CI build of merged change local developer build Why do CI builds take so long? 16
  • 61. user acceptance/system tests performance tests (selection of) unit tests all unit tests integration tests time to run (hours) full compilation incremental compilation closer to release CI build of merged change local developer build Why do CI builds take so long? 16
  • 62. user acceptance/system tests performance tests (selection of) unit tests all unit tests integration tests time to run (hours) full compilation incremental compilation closer to release CI build of merged change local developer build Why do CI builds take so long? 16
  • 64. Even worse … 17 build machinery run on each commit!
  • 65. Even worse … 17 build machinery run on each commit!
  • 66. Even worse … 17 build machinery run on each commit! different feature configurations
  • 67. Even worse … 17 build machinery run on each commit! not just build and test, also code quality builds, nightly builds, etc. different feature configurations
  • 68. Even worse … 17 build machinery run on each commit! not just build and test, also code quality builds, nightly builds, etc. not all builds succeed different feature configurations
  • 69. What are deployment best practices? 18
  • 70. What are deployment best practices? 18 v.1 v.1v.1
  • 71. What are deployment best practices? 18 v.1v.2 v.1
  • 72. What are deployment best practices? 18 v.2 v.1v.2
  • 73. What are deployment best practices? 18 v.2 v.1v.1
  • 74. What are deployment best practices? 18 v.1v.1v.1
  • 76. #  Install  PostgreSQL  server  and  client   include_recipe  "postgresql::server"   include_recipe  "postgresql::client"   #  Make  postgresql_database  resource  available   include_recipe  "database::postgresql"   #  Create  database  for  Rails  app   db  =  node["practicingruby"]["database"]   postgresql_database  db["name"]  do      connection(          :host          =>  db["host"],          :port          =>  node["postgresql"]["config"]["port"],          :username  =>  db["username"],          :password  =>  db["password"],      )   end Infrastructure code 19
  • 77. #  Install  PostgreSQL  server  and  client   include_recipe  "postgresql::server"   include_recipe  "postgresql::client"   #  Make  postgresql_database  resource  available   include_recipe  "database::postgresql"   #  Create  database  for  Rails  app   db  =  node["practicingruby"]["database"]   postgresql_database  db["name"]  do      connection(          :host          =>  db["host"],          :port          =>  node["postgresql"]["config"]["port"],          :username  =>  db["username"],          :password  =>  db["password"],      )   end Infrastructure code 19
  • 78. #  Install  PostgreSQL  server  and  client   include_recipe  "postgresql::server"   include_recipe  "postgresql::client"   #  Make  postgresql_database  resource  available   include_recipe  "database::postgresql"   #  Create  database  for  Rails  app   db  =  node["practicingruby"]["database"]   postgresql_database  db["name"]  do      connection(          :host          =>  db["host"],          :port          =>  node["postgresql"]["config"]["port"],          :username  =>  db["username"],          :password  =>  db["password"],      )   end Infrastructure code smells? 19
  • 79.
  • 80. Is the release in good shape?
  • 81. Was the release a success? Is the release in good shape?
  • 82. Was the release a success? Is the release in good shape? The release is botched, how can we roll back?
  • 83. Was the release a success? What’s the optimal cycle time for us? Is the release in good shape? The release is botched, how can we roll back?
  • 85. Continuous delivery for mobile apps is a serious challenge! Chuck Rossi 21
  • 86. What can you do for release engineering? 22
  • 87. What can you do for release engineering? 22 What can release engineering do for you?
  • 88. When noble intentions meet reality 23
  • 89. Harmful assumptions about release pipelines that can impact predictive modelling 24
  • 90. Harmful assumptions about release pipelines that can impact predictive modelling 1. All releases are equal 24
  • 91. 25
  • 92. Look at Project X! It had a crazy number of bugs in the typical six-month post-release window! 25
  • 93. Look at Project X! It had a crazy number of bugs in the typical six-month post-release window! Well, Project X releases every 6 weeks, so you’re counting several releases… 25
  • 94. Release cycles vary among popular studied systems Daysbetweenreleases An Empirical Study of Delays in the Integration of Addressed Issues D. A. da Costa et al. [ICSME 2014]
  • 95. Release cycles can even vary within systems! 1.0 2.0 2.5 3.0 3.5 4.0 5.0 6.0 7.0 8.0 9.0 10.0 0 200 400 600 800 Firefoxrelease Days since prior release 27
  • 96. The rapid release cycle of modern software systems 28
  • 97. The rapid release cycle of modern software systems Often release several times in one day! 28
  • 98. 1. All releases are equal Harmful assumptions about release pipelines that can impact predictive modelling 29
  • 99. 1. All releases are equal 2. All branches are equal Harmful assumptions about release pipelines that can impact predictive modelling 29
  • 100. 30
  • 101. Weird… The size of this project fluctuates between 50k and 45k lines! 30
  • 102. Weird… The size of this project fluctuates between 50k and 45k lines! Hmm, did you select the relevant branch? Several are developed in parallel! 30
  • 103. An example of defect prediction Feature development Defect repairing Merge Commit types 31
  • 104. An example of defect prediction Feature development Defect repairing Merge Commit types 31
  • 105. An example of defect prediction v1.0 Feature development Defect repairing Merge Commit types 31
  • 106. An example of defect prediction v1.0 Feature development Defect repairing Merge Commit types Pre- release 31
  • 107. An example of defect prediction v1.0 Feature development Defect repairing Merge Commit types Pre- release Post- release 31
  • 108. An example of defect prediction v1.0 Feature development Defect repairing Merge Commit types Pre- release Post- release 31
  • 109. Handling the intricacies of a multi- branch release pipeline Dev Stable Feature development Defect repairing Merge Commit types 32
  • 110. Handling the intricacies of a multi- branch release pipeline Dev Stable Feature development Defect repairing Merge Commit types 32
  • 111. Handling the intricacies of a multi- branch release pipeline Dev Stable Feature development Defect repairing Merge Commit types 32
  • 112. Handling the intricacies of a multi- branch release pipeline Dev Stable Feature development Defect repairing Merge Commit types 32
  • 113. Handling the intricacies of a multi- branch release pipeline v1.0 Dev Stable Feature development Defect repairing Merge Commit types 32
  • 114. Handling the intricacies of a multi- branch release pipeline v1.0 Dev Stable Feature development Defect repairing Merge Commit types 32
  • 115. Handling the intricacies of a multi- branch release pipeline v1.0 Dev Stable Feature development Defect repairing Merge Commit types 32
  • 116. Handling the intricacies of a multi- branch release pipeline v1.0 Dev Stable Feature development Defect repairing Merge Commit types 32
  • 117. Handling the intricacies of a multi- branch release pipeline v1.0 Dev Stable Feature development Defect repairing Merge Commit types 32
  • 118. Handling the intricacies of a multi- branch release pipeline v1.0 Dev Stable Feature development Defect repairing Merge Commit types 32
  • 119. Branching can get really complex… 33
  • 120. 1. All releases are equal 2. All branches are equal Harmful assumptions about release pipelines that can impact predictive modelling 34
  • 121. 1. All releases are equal 2. All branches are equal 3. All files are equal Harmful assumptions about release pipelines that can impact predictive modelling 34
  • 122. 35
  • 123. This popular web browser has an enormous codebase! >30M lines! 35
  • 124. This popular web browser has an enormous codebase! >30M lines! Yes, but the codebase contains several systems! The build configuration decides which one is produced! 35
  • 125. 36 Many files are conditionally included in deliverables Tracing Software Build Processes to Uncover License Compliance Inconsistencies S. van der Berg et al. [ASE 2014] Aterm Opkg Bash CUPS Xalan OpenSSL FFmpeg % Excluded Files 0% 20% 40% 60% 80%
  • 126. 36 Many files are conditionally included in deliverables Fixes in these files may have a smaller impact (if any) on customers Tracing Software Build Processes to Uncover License Compliance Inconsistencies S. van der Berg et al. [ASE 2014] Aterm Opkg Bash CUPS Xalan OpenSSL FFmpeg % Excluded Files 0% 20% 40% 60% 80%
  • 127. Understanding conditionally included files using the build system Design recovery and maintenance of build systems B. Adams et al. [ICSM 2007] 37
  • 128. 1. All releases are equal, 2. All branches are equal, Harmful assumptions about release pipelines that can impact predictive modelling 3. All files are equal 38
  • 129. but some are more equal than others 1. All releases are equal, 2. All branches are equal, Harmful assumptions about release pipelines that can impact predictive modelling 3. All files are equal 38
  • 130. My nightmare Amassing and indexing a large sample of version control systems Audris Mockus [MSR 2009] Boa: a language and infrastructure for analyzing ultra-large-scale software repositories R. Dyer et al. [ICSE 2013] The GHTorrent Dataset and Tool Suite G. Gousios [MSR 2013]
  • 131. My nightmare Amassing and indexing a large sample of version control systems Audris Mockus [MSR 2009] Boa: a language and infrastructure for analyzing ultra-large-scale software repositories R. Dyer et al. [ICSE 2013] The GHTorrent Dataset and Tool Suite G. Gousios [MSR 2013] We collect all of the data in the world, but it’s meaningless without context!
  • 132.
  • 133. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release
  • 134. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release
  • 135. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release http://www.informit.com/articles/article.aspx?p=1833567 reduce the risk of releasing software if it hurts, do it more frequently, and bring the pain forward Jez Humble
  • 136. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release http://www.informit.com/articles/article.aspx?p=1833567 reduce the risk of releasing software if it hurts, do it more frequently, and bring the pain forward Jez Humble
  • 137. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release http://www.informit.com/articles/article.aspx?p=1833567 reduce the risk of releasing software if it hurts, do it more frequently, and bring the pain forward Jez Humble master branch How to Predict Integration Effort? 14 3rd party dependency feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2 sync
  • 138. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release http://www.informit.com/articles/article.aspx?p=1833567 reduce the risk of releasing software if it hurts, do it more frequently, and bring the pain forward Jez Humble master branch How to Predict Integration Effort? 14 3rd party dependency feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2 sync
  • 139. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release http://www.informit.com/articles/article.aspx?p=1833567 reduce the risk of releasing software if it hurts, do it more frequently, and bring the pain forward Jez Humble master branch How to Predict Integration Effort? 14 3rd party dependency feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2 sync but some are more equal than others 1. All releases are equal, 2. All branches are equal, Harmful assumptions about release pipelines that can impact predictive modelling 3. All files are equal
  • 140. Release Engineering integrating code changes building/testing (CI) releasing to the user deploying a new release http://www.informit.com/articles/article.aspx?p=1833567 reduce the risk of releasing software if it hurts, do it more frequently, and bring the pain forward Jez Humble master branch How to Predict Integration Effort? 14 3rd party dependency feature branch 1 git repo release branch MERGE CONFLICT? myapp v.1 feature branch 2 sync but some are more equal than others 1. All releases are equal, 2. All branches are equal, Harmful assumptions about release pipelines that can impact predictive modelling 3. All files are equal