Real world con,nuous delivery
Join the conversation on Twitter: @SoftArchConf #SoftwareArchitect2015
Seb Rose
@sebrose h+p://cucumber.io
con5nuous : -‐ forming an unbroken whole -‐ without interrup5on
discrete : -‐ individually separate and dis5nct
@sebrose h+p://cucumber.io
delivery : -‐ the ac5on of delivering goods -‐ the process of giving birth
@sebrose h+p://cucumber.io
con5nuous delivery : -‐ a set of prac5ces and principles
aimed at, building, tes5ng, and releasing soBware, faster and more frequently
-‐ this principle helps reduce the cost, 5me and risk of delivering incremental changes to users.
@sebrose h+p://cucumber.io
con5nuous integra5on : -‐ a development prac5ce that
requires developers to integrate code into a shared repository several 5mes a day
-‐ each check-‐in is verified by an automated build, allowing teams to detect problems early
@sebrose h+p://cucumber.io
con5nuous deployment : -‐ the next step of con5nuous
delivery -‐ every change that passes the
automated tests is deployed to produc5on automa5cally
@sebrose h+p://cucumber.io
Con5nuous integra5on
h+p://www.jamesshore.com/Blog/Con5nuous-‐Integra5on-‐on-‐a-‐Dollar-‐a-‐Day.html
@sebrose h+p://cucumber.io
Automated deployment
h+p://www.moltecinterna5onal.com/images/robots.jpg
and rollback!
@sebrose h+p://cucumber.io
Artefact repository
h+p://3.bp.blogspot.com/-‐BkxV4lCQzDw/U96FMUNIDAI/AAAAAAAAK_s/GMmneXG5FG4/s1600/RoleOfAR.png
@sebrose h+p://cucumber.io
Fidelity vs. feedback
h+p://3.bp.blogspot.com/-‐BkxV4lCQzDw/U96FMUNIDAI/AAAAAAAAK_s/GMmneXG5FG4/s1600/RoleOfAR.png
More production-like
Slower feedback
@sebrose h+p://cucumber.io
h+ps://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Devops.svg/2000px-‐Devops.svg.png
Collabora5on
@sebrose h+p://cucumber.io
Conway slaw : -‐ a popular dish of shredded
cause and effect mixed with a dash of sociology
@sebrose h+p://cucumber.io
Branching
-‐ Feature branching -‐ GitFlow -‐ CoDe:U Git Flow -‐ Trunk-‐based development -‐ Release branching
@sebrose h+p://cucumber.io
Branching strategies
h+p://nvie.com/img/git-‐[email protected] h+p://www.praqma.com/sites/default/files/img/git_flow_web.pdf
@sebrose h+p://cucumber.io
Trunk-‐based development
h+p://paulhammant.com/images/mainline_vs_trunk.png
@sebrose h+p://cucumber.io
Tes5ng pyramid
h+p://claysnow.co.uk/architectural-‐alignment-‐and-‐test-‐induced-‐design-‐damage-‐fallacy/
@sebrose h+p://cucumber.io
Smoke tests
h+p://www.seminolecountyfl.gov/core/fileparse.php/3283/urlt/smoke-‐20test-‐20image-‐20.jpg
@sebrose h+p://cucumber.io
Non-‐func5onal tests
h+ps://www.cloudave.com/wp-‐content/uploads/2014/12/Typhoon.jpg
@sebrose h+p://cucumber.io
Test data
h+p://discovermagazine.com/~/media/Images/Issues/2013/December/dragon-‐science.jpg
@sebrose h+p://cucumber.io
Monitoring produc5on
h+p://blogs-‐images.forbes.com/kashmirhill/files/2014/04/foscam.jpg
@sebrose h+p://cucumber.ioh+p://quoteinves5gator.com/2012/04/28/shorter-‐le+er/
“I would have wri/en a shorter le/er, but I didn’t
have the 6me”
@sebrose h+p://cucumber.io
https://estimation.lunarlogic.io/assets/cards-range-8fc41b2e3fd282125f4602a712020204.png
@sebrose h+p://cucumber.io
Feature toggles
h+p://ff4j.org/images/console-‐embedded.png
@sebrose h+p://cucumber.io
Branch by abstrac5on
h+p://con5nuousdelivery.com/wp-‐content/uploads/2011/05/branch_by_abstrac5on.png
@sebrose h+p://cucumber.io
Databases
h+p://discovermagazine.com/~/media/Images/Issues/2013/December/dragon-‐science.jpg
@sebrose h+p://cucumber.io
Risk mi5ga5on
-‐ Blue/green -‐ Canary -‐ Monitoring
@sebrose h+p://cucumber.io
Produc5on like???
h+p://tommcfarlin.com/wp-‐content/uploads/2014/04/what-‐does-‐it-‐mean.png
@sebrose h+p://cucumber.io
Harmonisa5on
homogeneous : -‐ uniform in structure or
composi5on throughout
@sebrose h+p://cucumber.io
Virtualisa5on and Containers
h+p://www.informa5on-‐age.com/sites/default/files/styles/ar5cle_landscape/public/field/image/shu+erstock_135831281.jpg?
itok=PArqfHMC
h+p://www.adm-‐compu5ng.co.uk/wp-‐content/uploads/2013/06/Virtualisa5on-‐defined.jpg
@sebrose h+p://cucumber.io
Service virtualisa5on
h+p://servicevirtualiza5on.com/blogs/1-‐1000/910-‐Screenshot20130520at10.38.46AM.png
@sebrose h+p://cucumber.io
Cost
h+p://i.dailymail.co.uk/i/pix/2009/05/13/ar5cle-‐1181248-‐03A99ECD000005DC-‐78_634x393.jpg
@sebrose h+p://cucumber.io
Taming complexity
h+p://boilingfrogs.info/files/2012/05/complexity.jpg
@sebrose h+p://cucumber.io
Loose coupling
h+ps://infomgmt.files.wordpress.com/2010/02/coupling-‐sketches-‐cropped-‐1.png
@sebrose h+p://cucumber.io
Components
h+p://zoszkoworks.com/wp-‐content/uploads/2015/01/821-‐electronic-‐components-‐1920x1080-‐photography-‐wallpaper.jpg
@sebrose h+p://cucumber.io
h+p://www.slideshare.net/StefSmith/wading-‐through-‐treacle-‐escape-‐the-‐integra5on-‐syrup-‐with-‐contract-‐tests
CDCs in the pipeline
@sebrose h+p://cucumber.io
h+p://mar5nfowler.com/ar5cles/ConsumerDrivenContracts.jpg
CDCs (aka contract tests)
@sebrose h+p://cucumber.io
Contract/collabora5on
h+p://www.slideshare.net/nitroduna/behaviour-‐driven-‐refactoring-‐or-‐im-‐a-‐programmer-‐what-‐the-‐hell-‐do-‐i-‐have-‐to-‐test
@sebrose h+p://cucumber.io
-‐ teams own whole stack -‐ in-‐house tools -‐ build, deploy, monitor
@sebrose h+p://cucumber.io
-‐ teams own whole stack -‐ feature & data toggles -‐ con5nuous deployment -‐ pioneering MDD
h+ps://youtu.be/bZNzu4UxzPU
h+p://agileonthebeach.com/wp-‐content/uploads/2015/02/Benji-‐Webber.pdf
@sebrose h+p://cucumber.io
-‐ using CDCs within pipeline
h+p://www.slideshare.net/StefSmith/wading-‐through-‐treacle-‐escape-‐the-‐integra5on-‐syrup-‐with-‐contract-‐tests
@sebrose h+p://cucumber.io
h+p://agilecambridge.net/2015/sessions/index.php?session=69
A meta-‐pipeline for genera5ng con5nuous delivery pipelines for
micro services
@sebrose h+p://cucumber.io
http://image.slidesharecdn.com/userstorymappinginpractice-130802183649-phpapp02/95/user-story-mapping-in-practice-15-638.jpg?cb=1382432108
Seb Rose Twi+er: @sebrose Blog: www.claysnow.co.uk E-‐mail: [email protected]
Ques5ons?
@sebrose h+p://cucumber.io
CoDe:U h+p://www.praqma.com/sites/default/files/img/git_flow_web.pdf