SlideShare a Scribd company logo
1 of 142
Download to read offline
Feature branches and toggles
in a post-GitHub world
Devoxx Poland 2017
Sam Newman
@samnewman@devoxxpl
Sam Newman &
Associates
@samnewman@devoxxpl
Sam Newman
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
@samnewman@devoxxpl
2004
@samnewman@devoxxpl
@samnewman@devoxxpl
to
Banbury
Oxford
Reading
High Wycombe
London Marylebone
to
Luton
St Albans
London St Pancras
Rugby
Milton Keynes
Central
Watford Junction
London Euston
Bedford
Wolverton
Fenny Stratford
Bow Brickhill
Woburn Sands
Aspley Guise
Ridgmont
Lidlington
Watford North
Garston
Bricket Wood
How Wood
Park Street
St Albans Abbey
Millbrook
Stewartby
Kempston Hardwick
Bedford St Johns
Bletchley
Leighton Buzzard
Cheddington
Tring
Berkhamsted
Hemel Hempstead
Apsley
Kings Langley
Bushey
Harrow & Wealdstone
Wembley Central
wick
Coventry
Leamington
Spa
Northampton
Long Buckby
Coventry
Arena
@samnewman@devoxxpl
to
Banbury
Oxford
Reading
High Wycombe
London Marylebone
to
Luton
St Albans
London St Pancras
Rugby
Milton Keynes
Central
Watford Junction
London Euston
Bedford
Wolverton
Fenny Stratford
Bow Brickhill
Woburn Sands
Aspley Guise
Ridgmont
Lidlington
Watford North
Garston
Bricket Wood
How Wood
Park Street
St Albans Abbey
Millbrook
Stewartby
Kempston Hardwick
Bedford St Johns
Bletchley
Leighton Buzzard
Cheddington
Tring
Berkhamsted
Hemel Hempstead
Apsley
Kings Langley
Bushey
Harrow & Wealdstone
Wembley Central
wick
Coventry
Leamington
Spa
Northampton
Long Buckby
Coventry
Arena
@samnewman@devoxxpl
to
Banbury
Oxford
Reading
High Wycombe
London Marylebone
to
Luton
St Albans
London St Pancras
Rugby
Milton Keynes
Central
Watford Junction
London Euston
Bedford
Wolverton
Fenny Stratford
Bow Brickhill
Woburn Sands
Aspley Guise
Ridgmont
Lidlington
Watford North
Garston
Bricket Wood
How Wood
Park Street
St Albans Abbey
Millbrook
Stewartby
Kempston Hardwick
Bedford St Johns
Bletchley
Leighton Buzzard
Cheddington
Tring
Berkhamsted
Hemel Hempstead
Apsley
Kings Langley
Bushey
Harrow & Wealdstone
Wembley Central
wick
Coventry
Leamington
Spa
Northampton
Long Buckby
Coventry
Arena
@samnewman@devoxxpl
to
Banbury
Oxford
Reading
High Wycombe
London Marylebone
to
Luton
St Albans
London St Pancras
Rugby
Milton Keynes
Central
Watford Junction
London Euston
Bedford
Wolverton
Fenny Stratford
Bow Brickhill
Woburn Sands
Aspley Guise
Ridgmont
Lidlington
Watford North
Garston
Bricket Wood
How Wood
Park Street
St Albans Abbey
Millbrook
Stewartby
Kempston Hardwick
Bedford St Johns
Bletchley
Leighton Buzzard
Cheddington
Tring
Berkhamsted
Hemel Hempstead
Apsley
Kings Langley
Bushey
Harrow & Wealdstone
Wembley Central
wick
Coventry
Leamington
Spa
Northampton
Long Buckby
Coventry
Arena
@samnewman@devoxxpl
R3
@samnewman@devoxxpl
R3
@samnewman@devoxxpl
R3
R4
@samnewman@devoxxpl
R3
R4
@samnewman@devoxxpl
R3
R4
@samnewman@devoxxpl
R3
R4
@samnewman@devoxxpl
R3
R4
@samnewman@devoxxpl https://www.flickr.com/photos/jubilo/6965626176/
@samnewman@devoxxpl
R3-R4 Merge Bug Fix Team
@samnewman@devoxxpl
R3-R4 Merge Bug Fix Team
yay
@samnewman@devoxxpl
Continuous Integration
@samnewman@devoxxpl
@samnewman@devoxxpl
@samnewman@devoxxpl
CI Tool
@samnewman@devoxxpl
CI Tool
!
@samnewman@devoxxpl
CI Tool
! "
@samnewman@devoxxpl
@samnewman@devoxxpl
@samnewman@devoxxpl
!
@samnewman@devoxxpl
! !
@samnewman@devoxxpl
! !
1. Validate the integration
@samnewman@devoxxpl
! ! "
1. Validate the integration
@samnewman@devoxxpl
! ! "
2. When the build breaks, fix it!
1. Validate the integration
@samnewman@devoxxpl
! ! " !
2. When the build breaks, fix it!
1. Validate the integration
@samnewman@devoxxpl
! ! " !
2. When the build breaks, fix it!
1. Validate the integration
…
@samnewman@devoxxpl
! ! " !
2. When the build breaks, fix it!
1. Validate the integration
…
@samnewman@devoxxpl
! ! " !
2. When the build breaks, fix it!
1. Validate the integration
…
"
"
"
"
@samnewman@devoxxpl
! ! " !
2. When the build breaks, fix it!
3. Integrate daily
1. Validate the integration
…
"
"
"
"
@samnewman@devoxxpl
R3
R4
@samnewman@devoxxpl
R3
R4
! ! !
@samnewman@devoxxpl
R3
R4
! ! !
! ! !
@samnewman@devoxxpl
R3
R4
! ! !
! ! !
@samnewman@devoxxpl
Integrate Once A Day
@samnewman@devoxxpl
How can you deal with
half-finished work?
@samnewman@devoxxpl
Option 1:
@samnewman@devoxxpl
Option 1:
Wait to check in
@samnewman@devoxxpl
Option 2:
@samnewman@devoxxpl
Option 2:
Make a branch!
@samnewman@devoxxpl
Trunk
@samnewman@devoxxpl
Trunk
@samnewman@devoxxpl
Trunk
F1
@samnewman@devoxxpl
Trunk
F1
@samnewman@devoxxpl
Trunk
F1
@samnewman@devoxxpl
Trunk
F1
F2
@samnewman@devoxxpl
Trunk
F1
F2
@samnewman@devoxxpl
Trunk
F1
F2
@samnewman@devoxxpl
Trunk
F1
F2
@samnewman@devoxxpl
Trunk
F1
F2
@samnewman@devoxxpl
we are deferring integration!
Trunk
F1
F2
@samnewman@devoxxpl
Pain of merge = fn (
size_of_merge,
duration_since_last_merge)
@samnewman@devoxxpl
Big merges = commit race!
@samnewman@devoxxpl
Merging refactoring is
*really* hard
@samnewman@devoxxpl
Option 3:
@samnewman@devoxxpl
Option 3:
Check in anyway
@samnewman@devoxxpl
Option 3:
Check in anyway
err…wat?
@samnewman@devoxxpl
Trunk-based development
@samnewman@devoxxpl
Everyone integrates into trunk
@samnewman@devoxxpl
Trunk
@samnewman@devoxxpl
Trunk
@samnewman@devoxxpl
integrate often…
Trunk
@samnewman@devoxxpl
integrate often…
Trunk
…fast feedback…
@samnewman@devoxxpl
integrate often…
Trunk
…fast feedback…
…break up merge pain
@samnewman@devoxxpl
integrate often…
Trunk
…fast feedback…
…break up merge pain
err…but what about half-finished features?
@samnewman@devoxxpl
Feature Toggles
@samnewman@devoxxpl
Feature Toggles
Hide the partially
implemented feature in
the running system
@samnewman@devoxxpl
…
super_widget = off
…
@samnewman@devoxxpl
…
super_widget = off
…
…
super_widget = on
…
@samnewman@devoxxpl
…
super_widget = off
…
…
super_widget = on
…
super widget!
@samnewman@devoxxpl
…
super_widget = off
…
…
super_widget = on
…
$. run -Dsuper_widget=on
super widget!
@samnewman@devoxxpl
…
super_widget = off
…
…
super_widget = on
…
$. run -Dsuper_widget=on
super widget!
@samnewman@devoxxpl
But what about changes to existing
functionality?
@samnewman@devoxxpl
@samnewman@devoxxpl
iBatis
Persistence
@samnewman@devoxxpl
iBatis
Persistence
@samnewman@devoxxpl
iBatis
Persistence
shipping every two
weeks…
@samnewman@devoxxpl
iBatis
Persistence
Hibernate
shipping every two
weeks…
@samnewman@devoxxpl
iBatis
Persistence
Abstraction
Hibernate
shipping every two
weeks…
@samnewman@devoxxpl
iBatis
Persistence
Abstraction
Hibernate
shipping every two
weeks…
@samnewman@devoxxpl
iBatis
Persistence
Abstraction
Hibernate
shipping every two
weeks…
@samnewman@devoxxpl
iBatis
Persistence
Abstraction
Hibernate
shipping every two
weeks…
@samnewman@devoxxpl
iBatis
Persistence
Abstraction
Hibernate
shipping every two
weeks…
@samnewman@devoxxpl
Abstraction
Hibernate
shipping every two
weeks…
@samnewman@devoxxpl
Branch by abstraction
@samnewman@devoxxpl
Important Rules:
@samnewman@devoxxpl
Important Rules:
Use a flag in as few places as possible
@samnewman@devoxxpl
Important Rules:
Use a flag in as few places as possible
Remove them once you’re done
@samnewman@devoxxpl
Side Benefits:
@samnewman@devoxxpl
Side Benefits:
Can be used for A/B testing
@samnewman@devoxxpl
Side Benefits:
Can be used for A/B testing
And with some work, canary releasing
@samnewman@devoxxpl
split.io, launch darkly
@samnewman@devoxxpl
@samnewman@devoxxpl
@samnewman@devoxxpl
https://trunkbaseddevelopment.com
@samnewman@devoxxpl
Continuous Delivery Book…
@samnewman@devoxxpl
Published in 2011
@samnewman@devoxxpl
Treat every check-in as
a release candidate
@samnewman@devoxxpl
https://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change-4608108
@samnewman@devoxxpl
Ops Meta-Metrics - John Allspaw
@samnewman@devoxxpl
Ops Meta-Metrics - John Allspaw
@samnewman@devoxxpl
Keep batch size small
@samnewman@devoxxpl
Integrate often
Keep batch size small
@samnewman@devoxxpl
Integrate often
Keep batch size small
Ship often
@samnewman@devoxxpl
And there there was Git
@samnewman@devoxxpl
@samnewman@devoxxpl
Goal
@samnewman@devoxxpl
Goal
Merge a patch in less than 3 seconds
@samnewman@devoxxpl
Branches much more lightweight
@samnewman@devoxxpl
Merging of text is better but…
@samnewman@devoxxpl
https://www.semanticmerge.com
@samnewman@devoxxpl
And then there was GitHub…
@samnewman@devoxxpl
2008
@samnewman@devoxxpl
https://github.com/blog/3-oh-yeah-there-s-pull-requests-now
@samnewman@devoxxpl
https://vimeo.com/2979844
@samnewman@devoxxpl
https://vimeo.com/2979844
@samnewman@devoxxpl
http://readwrite.com/2011/06/02/github-has-passed-sourceforge/
@samnewman@devoxxpl
But PRs use branching!
@samnewman@devoxxpl
Open Source
@samnewman@devoxxpl
Open Source
“Untrusted” Committers
@samnewman@devoxxpl
And then there was gitflow…
@samnewman@devoxxpl
@samnewman@devoxxpl https://www.flickr.com/photos/hackny/8675049276/
@samnewman@devoxxpl
Ops Meta-Metrics - John Allspaw
@samnewman@devoxxpl
But if I merge in frequently,
why do I need GitFlow?
@samnewman@devoxxpl
@samnewman@devoxxpl
“Trunk-based development is likely the most controversial
practice discussed in this book
@samnewman@devoxxpl
“Trunk-based development is likely the most controversial
practice discussed in this book
- Gene Kim, Jez Humble, Patrick Debois & John Willis
[…]
However, the data from Puppet Labs’ 2015 State of DevOps
Report is clear: trunk-based development predicts higher
throughput and better stability, and even higher job
satisfaction and lower rates of burnout.“
@samnewman@devoxxpl
@samnewman@devoxxpl
“We found that having branches or forks with very short
lifetimes (less than a day) before being merged into trunk, and
less than three active branches in total, are important aspects
of continuous delivery, and all contribute to higher
performance. So does merging code into trunk or master on a
daily basis. “
- State Of Devops Report, 2016
@samnewman@devoxxpl
So are branches evil?
@samnewman@devoxxpl
Keep batch size small
@samnewman@devoxxpl
Integrate often
Keep batch size small
@samnewman@devoxxpl
Integrate often
Keep batch size small
Ship often
@samnewman@devoxxpl
http://samnewman.io
@samnewman
Thank You!
Also thanks to Don Clark for the people icons
https://commons.wikimedia.org/wiki/File:Gender_neutral.svg CC BY-SA 4.0

More Related Content

What's hot

Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...Agile Velocity
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例agileware_jp
 
NYP (OOP) Java Proje Raporu
NYP (OOP) Java Proje RaporuNYP (OOP) Java Proje Raporu
NYP (OOP) Java Proje RaporuMurat Azimli
 
Agile Resort Brochure Game July 2011
Agile Resort Brochure Game July 2011Agile Resort Brochure Game July 2011
Agile Resort Brochure Game July 2011Glenn Smith
 
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...Bernd Ruecker
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。Tomohiko Himura
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介onozaty
 
Cycles of Developement - Pamela Levin - Transactional Analysis
Cycles of Developement - Pamela Levin - Transactional AnalysisCycles of Developement - Pamela Levin - Transactional Analysis
Cycles of Developement - Pamela Levin - Transactional AnalysisManu Melwin Joy
 
my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;
my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;
my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;dankogai
 
What's going on in later stages?—Do integral developmental theories agree?
What's going on in later stages?—Do integral developmental theories agree? What's going on in later stages?—Do integral developmental theories agree?
What's going on in later stages?—Do integral developmental theories agree? perspegrity5
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~Yuki Hirano
 
デジタル回路の超入門
デジタル回路の超入門デジタル回路の超入門
デジタル回路の超入門KeroFire
 
Apresentacao recrutar 20 pessoas
Apresentacao recrutar 20 pessoasApresentacao recrutar 20 pessoas
Apresentacao recrutar 20 pessoasKarmel Zanata
 
Comptoir OCTO Provence - UX Design System
Comptoir OCTO Provence - UX Design SystemComptoir OCTO Provence - UX Design System
Comptoir OCTO Provence - UX Design SystemOCTO Technology
 
Problem Framing in Design Sprint 3.0
Problem Framing in Design Sprint 3.0Problem Framing in Design Sprint 3.0
Problem Framing in Design Sprint 3.0Design Sprint Academy
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装uchan_nos
 

What's hot (19)

Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
Path to Agility: Outcome-Driven Transformation at Lean-Agile-Digital Transfor...
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例
 
NYP (OOP) Java Proje Raporu
NYP (OOP) Java Proje RaporuNYP (OOP) Java Proje Raporu
NYP (OOP) Java Proje Raporu
 
Agile Resort Brochure Game July 2011
Agile Resort Brochure Game July 2011Agile Resort Brochure Game July 2011
Agile Resort Brochure Game July 2011
 
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
CamundaCon 2021 Keynote :From Human Workflow to High-Throughput Process Autom...
 
Don't be you injunction
Don't be you injunctionDon't be you injunction
Don't be you injunction
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介
 
Cycles of Developement - Pamela Levin - Transactional Analysis
Cycles of Developement - Pamela Levin - Transactional AnalysisCycles of Developement - Pamela Levin - Transactional Analysis
Cycles of Developement - Pamela Levin - Transactional Analysis
 
my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;
my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;
my$talk=qr{((?:ir)?reg(?:ular )?exp(?:ressions?)?)}i;
 
What's going on in later stages?—Do integral developmental theories agree?
What's going on in later stages?—Do integral developmental theories agree? What's going on in later stages?—Do integral developmental theories agree?
What's going on in later stages?—Do integral developmental theories agree?
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
 
デジタル回路の超入門
デジタル回路の超入門デジタル回路の超入門
デジタル回路の超入門
 
Apresentacao recrutar 20 pessoas
Apresentacao recrutar 20 pessoasApresentacao recrutar 20 pessoas
Apresentacao recrutar 20 pessoas
 
Comptoir OCTO Provence - UX Design System
Comptoir OCTO Provence - UX Design SystemComptoir OCTO Provence - UX Design System
Comptoir OCTO Provence - UX Design System
 
Procesy w firmie, wstęp do BPM - Manage or Die Inspiration
Procesy w firmie, wstęp do BPM - Manage or Die InspirationProcesy w firmie, wstęp do BPM - Manage or Die Inspiration
Procesy w firmie, wstęp do BPM - Manage or Die Inspiration
 
Problem Framing in Design Sprint 3.0
Problem Framing in Design Sprint 3.0Problem Framing in Design Sprint 3.0
Problem Framing in Design Sprint 3.0
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
 

Similar to Feature Branches And Toggles In A Post-GitHub World

Creating A Great Book Trailer On A Budget
Creating A Great Book Trailer On A BudgetCreating A Great Book Trailer On A Budget
Creating A Great Book Trailer On A BudgetWill Kesling
 
The Inbounder London 2. May - Kelvin Newman
The Inbounder London 2. May - Kelvin NewmanThe Inbounder London 2. May - Kelvin Newman
The Inbounder London 2. May - Kelvin NewmanWe Are Marketing
 
Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...
Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...
Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...Kelvin Newman
 
Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Mike Arnesen
 
Flow of Product Quality
Flow of Product QualityFlow of Product Quality
Flow of Product QualityMatt Barcomb
 
Flowofproductqualityleanux15 150419180701-conversion-gate01
Flowofproductqualityleanux15 150419180701-conversion-gate01Flowofproductqualityleanux15 150419180701-conversion-gate01
Flowofproductqualityleanux15 150419180701-conversion-gate01Dale Sternberg
 
Design Basics for Non-Designers
Design Basics for Non-DesignersDesign Basics for Non-Designers
Design Basics for Non-DesignersMel Choyce
 
New business models - social change for @SPARKdotme
New business models - social change for @SPARKdotme New business models - social change for @SPARKdotme
New business models - social change for @SPARKdotme Dragana Djermanovic
 
Practical microservices - NDC 2014
Practical microservices  - NDC 2014Practical microservices  - NDC 2014
Practical microservices - NDC 2014Sam Newman
 
[Unwebinar] How to Write Killer Landing Page Copy
[Unwebinar] How to Write Killer Landing Page Copy[Unwebinar] How to Write Killer Landing Page Copy
[Unwebinar] How to Write Killer Landing Page CopyUnbounce
 
The Facts & Fairytales of Conversion-Driven Content
The Facts & Fairytales of Conversion-Driven ContentThe Facts & Fairytales of Conversion-Driven Content
The Facts & Fairytales of Conversion-Driven ContentUnbounce
 
Learning How to Build Event Streaming Applications with Pac-Man
Learning How to Build Event Streaming Applications with Pac-ManLearning How to Build Event Streaming Applications with Pac-Man
Learning How to Build Event Streaming Applications with Pac-Manconfluent
 
CQRS and EventSourcing with Spring & Axon
CQRS and EventSourcing with Spring & AxonCQRS and EventSourcing with Spring & Axon
CQRS and EventSourcing with Spring & Axonnklmish
 
Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...
Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...
Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...Stacey MacNaught
 
Interview like a journalist heweb17
Interview like a journalist   heweb17Interview like a journalist   heweb17
Interview like a journalist heweb17Donna Talarico
 
Deploying & operating microservices
Deploying & operating microservicesDeploying & operating microservices
Deploying & operating microservicesThoughtworks
 
Chat Ops - social and technical
Chat Ops - social and technicalChat Ops - social and technical
Chat Ops - social and technicalSean Walberg
 
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...JAXLondon2014
 
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"Daniel Bryant
 

Similar to Feature Branches And Toggles In A Post-GitHub World (20)

Creating A Great Book Trailer On A Budget
Creating A Great Book Trailer On A BudgetCreating A Great Book Trailer On A Budget
Creating A Great Book Trailer On A Budget
 
The Inbounder London 2. May - Kelvin Newman
The Inbounder London 2. May - Kelvin NewmanThe Inbounder London 2. May - Kelvin Newman
The Inbounder London 2. May - Kelvin Newman
 
Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...
Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...
Why Podcasting Is the Missing Piece In Your Inbound Strategy & How to Excel i...
 
Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016
 
Flow of Product Quality
Flow of Product QualityFlow of Product Quality
Flow of Product Quality
 
Flowofproductqualityleanux15 150419180701-conversion-gate01
Flowofproductqualityleanux15 150419180701-conversion-gate01Flowofproductqualityleanux15 150419180701-conversion-gate01
Flowofproductqualityleanux15 150419180701-conversion-gate01
 
Intro to Graph Databases
Intro to Graph DatabasesIntro to Graph Databases
Intro to Graph Databases
 
Design Basics for Non-Designers
Design Basics for Non-DesignersDesign Basics for Non-Designers
Design Basics for Non-Designers
 
New business models - social change for @SPARKdotme
New business models - social change for @SPARKdotme New business models - social change for @SPARKdotme
New business models - social change for @SPARKdotme
 
Practical microservices - NDC 2014
Practical microservices  - NDC 2014Practical microservices  - NDC 2014
Practical microservices - NDC 2014
 
[Unwebinar] How to Write Killer Landing Page Copy
[Unwebinar] How to Write Killer Landing Page Copy[Unwebinar] How to Write Killer Landing Page Copy
[Unwebinar] How to Write Killer Landing Page Copy
 
The Facts & Fairytales of Conversion-Driven Content
The Facts & Fairytales of Conversion-Driven ContentThe Facts & Fairytales of Conversion-Driven Content
The Facts & Fairytales of Conversion-Driven Content
 
Learning How to Build Event Streaming Applications with Pac-Man
Learning How to Build Event Streaming Applications with Pac-ManLearning How to Build Event Streaming Applications with Pac-Man
Learning How to Build Event Streaming Applications with Pac-Man
 
CQRS and EventSourcing with Spring & Axon
CQRS and EventSourcing with Spring & AxonCQRS and EventSourcing with Spring & Axon
CQRS and EventSourcing with Spring & Axon
 
Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...
Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...
Lessons from Link Building in 2009 that Apply Today by @staceycav at #brighto...
 
Interview like a journalist heweb17
Interview like a journalist   heweb17Interview like a journalist   heweb17
Interview like a journalist heweb17
 
Deploying & operating microservices
Deploying & operating microservicesDeploying & operating microservices
Deploying & operating microservices
 
Chat Ops - social and technical
Chat Ops - social and technicalChat Ops - social and technical
Chat Ops - social and technical
 
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
 
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
 

More from Sam Newman

Hiding The Lead: Coupling, cohesion and microservices
Hiding The Lead: Coupling, cohesion and microservicesHiding The Lead: Coupling, cohesion and microservices
Hiding The Lead: Coupling, cohesion and microservicesSam Newman
 
Rip It Up - The Microservice Organisation
Rip It Up  - The Microservice OrganisationRip It Up  - The Microservice Organisation
Rip It Up - The Microservice OrganisationSam Newman
 
What Is This Cloud Native Thing Anyway?
What Is This Cloud Native Thing Anyway?What Is This Cloud Native Thing Anyway?
What Is This Cloud Native Thing Anyway?Sam Newman
 
Confusion In The Land Of The Serverless - 90min Version
Confusion In The Land Of The Serverless - 90min VersionConfusion In The Land Of The Serverless - 90min Version
Confusion In The Land Of The Serverless - 90min VersionSam Newman
 
AppSec and Microservices
AppSec and MicroservicesAppSec and Microservices
AppSec and MicroservicesSam Newman
 
Confusion In The Land Of The Serverless
Confusion In The Land Of The ServerlessConfusion In The Land Of The Serverless
Confusion In The Land Of The ServerlessSam Newman
 
AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016Sam Newman
 
AppSec And Microservices
AppSec And MicroservicesAppSec And Microservices
AppSec And MicroservicesSam Newman
 
Deploying and Scaling Microservices
Deploying and Scaling MicroservicesDeploying and Scaling Microservices
Deploying and Scaling MicroservicesSam Newman
 
BETA - Securing microservices
BETA - Securing microservicesBETA - Securing microservices
BETA - Securing microservicesSam Newman
 
Principles of microservices ndc oslo
Principles of microservices   ndc osloPrinciples of microservices   ndc oslo
Principles of microservices ndc osloSam Newman
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocitySam Newman
 
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected JourneyQCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected JourneySam Newman
 
Principles of microservices XP Days Ukraine
Principles of microservices   XP Days UkrainePrinciples of microservices   XP Days Ukraine
Principles of microservices XP Days UkraineSam Newman
 
Testing & deploying microservices - XP Days Ukraine 2014
Testing & deploying microservices  - XP Days Ukraine 2014Testing & deploying microservices  - XP Days Ukraine 2014
Testing & deploying microservices - XP Days Ukraine 2014Sam Newman
 
Principles of Microservices - NDC 2014
Principles of Microservices  - NDC 2014Principles of Microservices  - NDC 2014
Principles of Microservices - NDC 2014Sam Newman
 
Practical microservices - javazone 2014
Practical microservices -  javazone 2014Practical microservices -  javazone 2014
Practical microservices - javazone 2014Sam Newman
 
Testing & deploying Microservices GeeCon 2014
Testing & deploying Microservices   GeeCon 2014Testing & deploying Microservices   GeeCon 2014
Testing & deploying Microservices GeeCon 2014Sam Newman
 
Practical microservices - YOW 2013
Practical microservices  - YOW 2013Practical microservices  - YOW 2013
Practical microservices - YOW 2013Sam Newman
 

More from Sam Newman (20)

Hiding The Lead: Coupling, cohesion and microservices
Hiding The Lead: Coupling, cohesion and microservicesHiding The Lead: Coupling, cohesion and microservices
Hiding The Lead: Coupling, cohesion and microservices
 
It's a trap!
It's a trap!It's a trap!
It's a trap!
 
Rip It Up - The Microservice Organisation
Rip It Up  - The Microservice OrganisationRip It Up  - The Microservice Organisation
Rip It Up - The Microservice Organisation
 
What Is This Cloud Native Thing Anyway?
What Is This Cloud Native Thing Anyway?What Is This Cloud Native Thing Anyway?
What Is This Cloud Native Thing Anyway?
 
Confusion In The Land Of The Serverless - 90min Version
Confusion In The Land Of The Serverless - 90min VersionConfusion In The Land Of The Serverless - 90min Version
Confusion In The Land Of The Serverless - 90min Version
 
AppSec and Microservices
AppSec and MicroservicesAppSec and Microservices
AppSec and Microservices
 
Confusion In The Land Of The Serverless
Confusion In The Land Of The ServerlessConfusion In The Land Of The Serverless
Confusion In The Land Of The Serverless
 
AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016
 
AppSec And Microservices
AppSec And MicroservicesAppSec And Microservices
AppSec And Microservices
 
Deploying and Scaling Microservices
Deploying and Scaling MicroservicesDeploying and Scaling Microservices
Deploying and Scaling Microservices
 
BETA - Securing microservices
BETA - Securing microservicesBETA - Securing microservices
BETA - Securing microservices
 
Principles of microservices ndc oslo
Principles of microservices   ndc osloPrinciples of microservices   ndc oslo
Principles of microservices ndc oslo
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocity
 
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected JourneyQCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
 
Principles of microservices XP Days Ukraine
Principles of microservices   XP Days UkrainePrinciples of microservices   XP Days Ukraine
Principles of microservices XP Days Ukraine
 
Testing & deploying microservices - XP Days Ukraine 2014
Testing & deploying microservices  - XP Days Ukraine 2014Testing & deploying microservices  - XP Days Ukraine 2014
Testing & deploying microservices - XP Days Ukraine 2014
 
Principles of Microservices - NDC 2014
Principles of Microservices  - NDC 2014Principles of Microservices  - NDC 2014
Principles of Microservices - NDC 2014
 
Practical microservices - javazone 2014
Practical microservices -  javazone 2014Practical microservices -  javazone 2014
Practical microservices - javazone 2014
 
Testing & deploying Microservices GeeCon 2014
Testing & deploying Microservices   GeeCon 2014Testing & deploying Microservices   GeeCon 2014
Testing & deploying Microservices GeeCon 2014
 
Practical microservices - YOW 2013
Practical microservices  - YOW 2013Practical microservices  - YOW 2013
Practical microservices - YOW 2013
 

Recently uploaded

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
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.
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 

Recently uploaded (20)

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
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
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 

Feature Branches And Toggles In A Post-GitHub World