SlideShare a Scribd company logo
Michael Ewins 
@ewinsmi 
Highland Fling Sessions – 22 November 2014
Share some experiences shipping software 
products 
Share a playlist of 80’s music 
Can you spot all the songs and bands?
Don’t You (Forget About 
 Me) 
11 
Homepage showing a list of games 
Game page 
HTML5 Games 
Adverts 
Run it on a server 
Test on multiple devices 
Is That All?
Does it work? 
Will customers like it? 
Can it handle the load? 
Is it fast enough? 
How to measure activity? 
How to spot things going wrong? 
What to do when things go wrong? 
Who does what day-to-day? 
How can we make changes? 
How do customers get help? 
Do we keep customers safe? 
How will I get customers? 
What is the fulfilment process? 
Can the team continue to deliver?
Where does the data in the UI come from? 
How frequently will the data be updated? 
Does it behave the same on all channels? 
How to measure the success of this change? 
Does this require any new reports?
Identify pause points 
Quick to use 
Simple 
Exact 
The real world
Please, Please, Please Let Me Get 
What I Want 
 2 
Match existing platform capabilities 
PLUS custom / one-off solutions 
PLUS new items we’ve been waiting on 
PLUS migrate ALL the partners and 
customers seamlessly 
And do it in 18 months
Limit the scope 
Defer the rest 
Minimise risks 
Maximise the chance of success 
Get something sooner
Minimum 
Product 
Custom 
Logon 
Custom 
Payment 
Custom UI 
Migrate i18n 
Migrate 
Migrate 
Migrate 
Migrate 
+ i18n 
Migrate 
+ EN
Show progress 
Avoid surprises 
Remove potential for misunderstanding 
Build credibility 
Real feedback 
Sense of urgency
High Frequency Low Frequency 
High 
Impact 
1 - CRITICAL 
• Critical path 
• Blocks progress / Data loss 
• Crash 
• Severe performance 
2 – MAJOR 
• infrequently used 
• Crash 
• Complex / time 
consuming workaround 
Low 
Impact 
3 – INTRUSIVE 
• Likely to encounter 
• Simple workaround 
• Annoying cosmetic issue. 
4 – MINOR 
• Obscure 
• Cosmetic.
Build + The Light Is Always 
Green 
 33 
Commit to version control linked to issue 
tracking 
Triggers build & unit tests / code analysis 
Triggers creation of versioned release 
artifacts & release notes 
Triggers deployment & functional tests
Over the Wall 
 44 
42 people organised into feature teams 
Feature branches & merge to trunk 
Handover to Production Support 
‘Release train’ every 1-2 weeks 
39 major releases in 2 years (2012-2013) 
Each release took approx 5 - 6 hours 
Also patched releases in between major releases 
Let me explain some of the pain…
TRUNK 
Create 
branch 
Create 
branch Merge 
Feature development 
Update 
branch Merge
Bug fix 
(rev 100) 
CANDIDATE RELEASE 
2-1-0 branch 
TRUNK 
Create 
Merge bug fix 
needed in 2-1-0 
Bug fix 
(rev 101) 
New feature 
(rev 102) 
Merge bug fix 
to trunk 
2-1-0 
end of life 
Hot fix 
(rev 104) 
Merge bug fix 
to trunk 
And also 
2-2-0 
Create 2-2-0 branch 
Hot fix 
(rev 103) 
CANDIDATE RELEASE
Create branches 
Any open issues in trunk from handover? 
Run the standard tests (automated but slow) 
Any specific issues that need regressed? 
Rehearse the deployment 
Sign-offs 
Release to production 
Post release checking 
Enable feature flags
Small multi-disciplinary team of 8 people 
11 x Microservices 
Mixture of deployment models & tools 
Heavy reliance on test automation 
396 releases in 2014 (Jan – Nov) 
75% of team have performed deployments 
Each release takes 2 – 15 min
Easier to understand / transparent 
Align to small teams 
Independently deployable 
Easier to debug / test / change / replace 
Lower lead times & cycle times 
Less technical debt 
Easier to experiment with new ideas / tech
Stick to one version or release multiple 
versions of the same service? 
What happens if a change depends on 
multiple services? 
What about deploying database changes?
Perrfforrmance 
 55 
Ref: http://www.webpagetest.org/result/140304_0C_DAA/
DNS lookup 
TCP handshake 
HTTP request 
HTTP response
Review the purpose & cost of every asset 
Make fewer requests 
Make responses smaller 
Reduce round trip time 
Understand critical rendering 
Establish a performance budget & stick to it
Moonniittoorr 
 6 
Monitor from the outside 
 Response times 
 Transactions 
 RUM 
System level monitoring 
Email alerts link to the runbook 
Aggregate patterns in log files 
Graphite dashboard including release 
indicators
Frequency 
Location 
Scripting language 
 Goto URL 
 Form filling including logons 
 Interact via id / selector / label 
Versioning 
Escalation policy
It’s The End Of The World As We 
Know It 
 77 
A BOMB HAS LANDED IN THE COMPOUND... 
Henry: (reading instructions) And carefully cut 
the wires leading to the clockwork fuse at the 
head. 
(Trapper cuts the wires) 
Henry: But first, remove the fuse. 
(Everyone exchanges panicked looks, Trapper 
listens to the bomb with a stethoscope) 
Trapper: It stopped ticking. 
Hawkeye: Let's get the hell out of here. We've 
only got 2 minutes...maybe.
Public readme on GitHub for 
our Game SDK 
One page / 9 quick steps 
Post a score 
Save / restore game data 
Trigger adverts
Each service has a one pager on the wiki 
Overview Diagram 
Links to code + CI build + test artifacts 
Dependencies (link to APIs / integrations) 
API + how to use 
How to deploy, validate & rollback 
Monitoring (links) 
Troubleshooting advice 
Data & Database
Where are the inputs? 
What is happening? 
Where are the outputs?
Michael Ewins 
@ewinsmi
What the music of the 1980s taught me about shipping software

More Related Content

What's hot

Building a Modern Security Engineering Organization
Building a Modern Security Engineering OrganizationBuilding a Modern Security Engineering Organization
Building a Modern Security Engineering Organization
Zane Lackey
 
Continuous Deployment of Rails Applications
Continuous Deployment of Rails ApplicationsContinuous Deployment of Rails Applications
Continuous Deployment of Rails Applications
Diane Cessna
 
2016-05-30 risk driven design
2016-05-30 risk driven design2016-05-30 risk driven design
2016-05-30 risk driven design
Jaap van Ekris
 
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment PatternsHow do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
Thoughtworks
 
Chaos engineering intro
Chaos engineering introChaos engineering intro
Chaos engineering intro
Shantanu Deshpande
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practices
Ashutosh Agarwal
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
hugo lu
 
From Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsFrom Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOps
Luca Minudel
 
2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants
2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants
2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants
Jaap van Ekris
 
Testing & Integration (The Remix)
 Testing & Integration (The Remix) Testing & Integration (The Remix)
Testing & Integration (The Remix)
Ines Sombra
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Naresh Jain
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
Rogue Wave Software
 
Rapid software testing and conformance with static code analysis
Rapid software testing and conformance with static code analysisRapid software testing and conformance with static code analysis
Rapid software testing and conformance with static code analysis
Rogue Wave Software
 
Introduction to Puppet Enterprise - Jan 30, 2019
Introduction to Puppet Enterprise - Jan 30, 2019Introduction to Puppet Enterprise - Jan 30, 2019
Introduction to Puppet Enterprise - Jan 30, 2019
Puppet
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Mikalai Alimenkou
 
What to Expect When You're Expecting (to Own Production)
What to Expect When You're Expecting (to Own Production)What to Expect When You're Expecting (to Own Production)
What to Expect When You're Expecting (to Own Production)
Michael Diamant
 
Cd syd
Cd sydCd syd
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
Martijn van der Kamp
 
Better Security Testing: Using the Cloud and Continuous Delivery
Better Security Testing: Using the Cloud and Continuous DeliveryBetter Security Testing: Using the Cloud and Continuous Delivery
Better Security Testing: Using the Cloud and Continuous Delivery
Gene Gotimer
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?
Thoughtworks
 

What's hot (20)

Building a Modern Security Engineering Organization
Building a Modern Security Engineering OrganizationBuilding a Modern Security Engineering Organization
Building a Modern Security Engineering Organization
 
Continuous Deployment of Rails Applications
Continuous Deployment of Rails ApplicationsContinuous Deployment of Rails Applications
Continuous Deployment of Rails Applications
 
2016-05-30 risk driven design
2016-05-30 risk driven design2016-05-30 risk driven design
2016-05-30 risk driven design
 
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment PatternsHow do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
 
Chaos engineering intro
Chaos engineering introChaos engineering intro
Chaos engineering intro
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practices
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
From Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsFrom Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOps
 
2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants
2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants
2021 08-28, QONFEST 2021 - Reliability cenetered maintenance for sleeping giants
 
Testing & Integration (The Remix)
 Testing & Integration (The Remix) Testing & Integration (The Remix)
Testing & Integration (The Remix)
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Rapid software testing and conformance with static code analysis
Rapid software testing and conformance with static code analysisRapid software testing and conformance with static code analysis
Rapid software testing and conformance with static code analysis
 
Introduction to Puppet Enterprise - Jan 30, 2019
Introduction to Puppet Enterprise - Jan 30, 2019Introduction to Puppet Enterprise - Jan 30, 2019
Introduction to Puppet Enterprise - Jan 30, 2019
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
What to Expect When You're Expecting (to Own Production)
What to Expect When You're Expecting (to Own Production)What to Expect When You're Expecting (to Own Production)
What to Expect When You're Expecting (to Own Production)
 
Cd syd
Cd sydCd syd
Cd syd
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
Better Security Testing: Using the Cloud and Continuous Delivery
Better Security Testing: Using the Cloud and Continuous DeliveryBetter Security Testing: Using the Cloud and Continuous Delivery
Better Security Testing: Using the Cloud and Continuous Delivery
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?
 

Viewers also liked

Туристкая Индустрия "остров бинтан"
Туристкая Индустрия "остров бинтан"Туристкая Индустрия "остров бинтан"
Туристкая Индустрия "остров бинтан"
Nurbayu Nandes
 
TAKE A TOUR SEO Case Study
TAKE A TOUR SEO Case StudyTAKE A TOUR SEO Case Study
TAKE A TOUR SEO Case Study
Savvas Askopoulos
 
5 Steps to Faster Web Sites and HTML5 Games
5 Steps to Faster Web Sites and HTML5 Games5 Steps to Faster Web Sites and HTML5 Games
5 Steps to Faster Web Sites and HTML5 Games
Michael Ewins
 
5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscot5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscot
Michael Ewins
 
Optical Instrumentation - Part I Optometry Introduction - A
Optical Instrumentation - Part I    Optometry Introduction - AOptical Instrumentation - Part I    Optometry Introduction - A
Optical Instrumentation - Part I Optometry Introduction - A
Burdwan University
 
Pressure Measurement Part II
Pressure Measurement   Part IIPressure Measurement   Part II
Pressure Measurement Part II
Burdwan University
 
Power electronics Introduction
Power electronics   IntroductionPower electronics   Introduction
Power electronics Introduction
Burdwan University
 
Pressure Measurement Part III
Pressure Measurement   Part IIIPressure Measurement   Part III
Pressure Measurement Part III
Burdwan University
 
pH Measurement
pH MeasurementpH Measurement
pH Measurement
Burdwan University
 
Pressure Measurement Part I
Pressure Measurement   Part IPressure Measurement   Part I
Pressure Measurement Part I
Burdwan University
 
Temperature measurement part II
Temperature measurement   part IITemperature measurement   part II
Temperature measurement part II
Burdwan University
 
Industrial Instrumentation An Introduction
Industrial Instrumentation  An IntroductionIndustrial Instrumentation  An Introduction
Industrial Instrumentation An Introduction
Burdwan University
 
Temperature measurement part i
Temperature measurement   part iTemperature measurement   part i
Temperature measurement part i
Burdwan University
 
Level Measurement
Level MeasurementLevel Measurement
Level Measurement
Burdwan University
 

Viewers also liked (14)

Туристкая Индустрия "остров бинтан"
Туристкая Индустрия "остров бинтан"Туристкая Индустрия "остров бинтан"
Туристкая Индустрия "остров бинтан"
 
TAKE A TOUR SEO Case Study
TAKE A TOUR SEO Case StudyTAKE A TOUR SEO Case Study
TAKE A TOUR SEO Case Study
 
5 Steps to Faster Web Sites and HTML5 Games
5 Steps to Faster Web Sites and HTML5 Games5 Steps to Faster Web Sites and HTML5 Games
5 Steps to Faster Web Sites and HTML5 Games
 
5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscot5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscot
 
Optical Instrumentation - Part I Optometry Introduction - A
Optical Instrumentation - Part I    Optometry Introduction - AOptical Instrumentation - Part I    Optometry Introduction - A
Optical Instrumentation - Part I Optometry Introduction - A
 
Pressure Measurement Part II
Pressure Measurement   Part IIPressure Measurement   Part II
Pressure Measurement Part II
 
Power electronics Introduction
Power electronics   IntroductionPower electronics   Introduction
Power electronics Introduction
 
Pressure Measurement Part III
Pressure Measurement   Part IIIPressure Measurement   Part III
Pressure Measurement Part III
 
pH Measurement
pH MeasurementpH Measurement
pH Measurement
 
Pressure Measurement Part I
Pressure Measurement   Part IPressure Measurement   Part I
Pressure Measurement Part I
 
Temperature measurement part II
Temperature measurement   part IITemperature measurement   part II
Temperature measurement part II
 
Industrial Instrumentation An Introduction
Industrial Instrumentation  An IntroductionIndustrial Instrumentation  An Introduction
Industrial Instrumentation An Introduction
 
Temperature measurement part i
Temperature measurement   part iTemperature measurement   part i
Temperature measurement part i
 
Level Measurement
Level MeasurementLevel Measurement
Level Measurement
 

Similar to What the music of the 1980s taught me about shipping software

The Continuous delivery value - Funaro
The Continuous delivery value - FunaroThe Continuous delivery value - Funaro
The Continuous delivery value - Funaro
Codemotion
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
Adam Stephensen
 
Principles and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyPrinciples and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at Etsy
Mike Brittain
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
Jérôme Kehrli
 
Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to build
DanHeidinga
 
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
garrett honeycutt
 
Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model
cPrime | Project Management | Agile | Consulting | Staffing | Training
 
Seven habits of effective devops - DevOps Day - 02/02/2017
Seven habits of effective devops - DevOps Day - 02/02/2017Seven habits of effective devops - DevOps Day - 02/02/2017
Seven habits of effective devops - DevOps Day - 02/02/2017
Clara Feuillet
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
Christophe Rochefolle
 
Challenges and best practices of database continuous delivery
Challenges and best practices of database continuous deliveryChallenges and best practices of database continuous delivery
Challenges and best practices of database continuous delivery
DBmaestro - Database DevOps
 
Shift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production FailureShift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production Failure
IBM UrbanCode Products
 
SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010
Klocwork
 
How to address operational aspects effectively with Agile practices - Matthew...
How to address operational aspects effectively with Agile practices - Matthew...How to address operational aspects effectively with Agile practices - Matthew...
How to address operational aspects effectively with Agile practices - Matthew...
Skelton Thatcher Consulting Ltd
 
Innovate2011 DevOps TSRM RTC
Innovate2011 DevOps TSRM RTCInnovate2011 DevOps TSRM RTC
Innovate2011 DevOps TSRM RTC
Steve Speicher
 
How to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot EnvironmentsHow to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot Environments
DevOps.com
 
Solving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous TestingSolving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous Testing
Perfecto by Perforce
 
From Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.auFrom Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.au
evanbottcher
 
Continuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hallContinuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hall
Peter Marshall
 
DevOps and SF.pdf
DevOps and SF.pdfDevOps and SF.pdf
DevOps and SF.pdf
PatrickYANG48
 
Continuous delivery in Pipedrive
Continuous delivery in PipedriveContinuous delivery in Pipedrive
Continuous delivery in Pipedrive
Tomas Rehor
 

Similar to What the music of the 1980s taught me about shipping software (20)

The Continuous delivery value - Funaro
The Continuous delivery value - FunaroThe Continuous delivery value - Funaro
The Continuous delivery value - Funaro
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
Principles and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyPrinciples and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at Etsy
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to build
 
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
 
Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model
 
Seven habits of effective devops - DevOps Day - 02/02/2017
Seven habits of effective devops - DevOps Day - 02/02/2017Seven habits of effective devops - DevOps Day - 02/02/2017
Seven habits of effective devops - DevOps Day - 02/02/2017
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Challenges and best practices of database continuous delivery
Challenges and best practices of database continuous deliveryChallenges and best practices of database continuous delivery
Challenges and best practices of database continuous delivery
 
Shift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production FailureShift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production Failure
 
SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010
 
How to address operational aspects effectively with Agile practices - Matthew...
How to address operational aspects effectively with Agile practices - Matthew...How to address operational aspects effectively with Agile practices - Matthew...
How to address operational aspects effectively with Agile practices - Matthew...
 
Innovate2011 DevOps TSRM RTC
Innovate2011 DevOps TSRM RTCInnovate2011 DevOps TSRM RTC
Innovate2011 DevOps TSRM RTC
 
How to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot EnvironmentsHow to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot Environments
 
Solving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous TestingSolving the 3 Biggest Questions in Continuous Testing
Solving the 3 Biggest Questions in Continuous Testing
 
From Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.auFrom Monoliths to Microservices at Realestate.com.au
From Monoliths to Microservices at Realestate.com.au
 
Continuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hallContinuous testing & devops with @petemar5hall
Continuous testing & devops with @petemar5hall
 
DevOps and SF.pdf
DevOps and SF.pdfDevOps and SF.pdf
DevOps and SF.pdf
 
Continuous delivery in Pipedrive
Continuous delivery in PipedriveContinuous delivery in Pipedrive
Continuous delivery in Pipedrive
 

Recently uploaded

test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
Danica Gill
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
CIOWomenMagazine
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
cuobya
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
JeyaPerumal1
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
vmemo1
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
zoowe
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
cuobya
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
harveenkaur52
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 

Recently uploaded (20)

test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
2.Cellular Networks_The final stage of connectivity is achieved by segmenting...
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 

What the music of the 1980s taught me about shipping software

  • 1. Michael Ewins @ewinsmi Highland Fling Sessions – 22 November 2014
  • 2. Share some experiences shipping software products Share a playlist of 80’s music Can you spot all the songs and bands?
  • 3. Don’t You (Forget About  Me) 11 
  • 4.
  • 5. Homepage showing a list of games Game page HTML5 Games Adverts Run it on a server Test on multiple devices Is That All?
  • 6. Does it work? Will customers like it? Can it handle the load? Is it fast enough? How to measure activity? How to spot things going wrong? What to do when things go wrong? Who does what day-to-day? How can we make changes? How do customers get help? Do we keep customers safe? How will I get customers? What is the fulfilment process? Can the team continue to deliver?
  • 7. Where does the data in the UI come from? How frequently will the data be updated? Does it behave the same on all channels? How to measure the success of this change? Does this require any new reports?
  • 8. Identify pause points Quick to use Simple Exact The real world
  • 9. Please, Please, Please Let Me Get What I Want  2 
  • 10.
  • 11. Match existing platform capabilities PLUS custom / one-off solutions PLUS new items we’ve been waiting on PLUS migrate ALL the partners and customers seamlessly And do it in 18 months
  • 12.
  • 13. Limit the scope Defer the rest Minimise risks Maximise the chance of success Get something sooner
  • 14. Minimum Product Custom Logon Custom Payment Custom UI Migrate i18n Migrate Migrate Migrate Migrate + i18n Migrate + EN
  • 15. Show progress Avoid surprises Remove potential for misunderstanding Build credibility Real feedback Sense of urgency
  • 16. High Frequency Low Frequency High Impact 1 - CRITICAL • Critical path • Blocks progress / Data loss • Crash • Severe performance 2 – MAJOR • infrequently used • Crash • Complex / time consuming workaround Low Impact 3 – INTRUSIVE • Likely to encounter • Simple workaround • Annoying cosmetic issue. 4 – MINOR • Obscure • Cosmetic.
  • 17. Build + The Light Is Always Green  33 
  • 18. Commit to version control linked to issue tracking Triggers build & unit tests / code analysis Triggers creation of versioned release artifacts & release notes Triggers deployment & functional tests
  • 19.
  • 20.
  • 21. Over the Wall  44 
  • 22. 42 people organised into feature teams Feature branches & merge to trunk Handover to Production Support ‘Release train’ every 1-2 weeks 39 major releases in 2 years (2012-2013) Each release took approx 5 - 6 hours Also patched releases in between major releases Let me explain some of the pain…
  • 23. TRUNK Create branch Create branch Merge Feature development Update branch Merge
  • 24. Bug fix (rev 100) CANDIDATE RELEASE 2-1-0 branch TRUNK Create Merge bug fix needed in 2-1-0 Bug fix (rev 101) New feature (rev 102) Merge bug fix to trunk 2-1-0 end of life Hot fix (rev 104) Merge bug fix to trunk And also 2-2-0 Create 2-2-0 branch Hot fix (rev 103) CANDIDATE RELEASE
  • 25. Create branches Any open issues in trunk from handover? Run the standard tests (automated but slow) Any specific issues that need regressed? Rehearse the deployment Sign-offs Release to production Post release checking Enable feature flags
  • 26. Small multi-disciplinary team of 8 people 11 x Microservices Mixture of deployment models & tools Heavy reliance on test automation 396 releases in 2014 (Jan – Nov) 75% of team have performed deployments Each release takes 2 – 15 min
  • 27. Easier to understand / transparent Align to small teams Independently deployable Easier to debug / test / change / replace Lower lead times & cycle times Less technical debt Easier to experiment with new ideas / tech
  • 28. Stick to one version or release multiple versions of the same service? What happens if a change depends on multiple services? What about deploying database changes?
  • 31. DNS lookup TCP handshake HTTP request HTTP response
  • 32. Review the purpose & cost of every asset Make fewer requests Make responses smaller Reduce round trip time Understand critical rendering Establish a performance budget & stick to it
  • 34. Monitor from the outside  Response times  Transactions  RUM System level monitoring Email alerts link to the runbook Aggregate patterns in log files Graphite dashboard including release indicators
  • 35.
  • 36.
  • 37. Frequency Location Scripting language  Goto URL  Form filling including logons  Interact via id / selector / label Versioning Escalation policy
  • 38. It’s The End Of The World As We Know It  77 
  • 39. A BOMB HAS LANDED IN THE COMPOUND... Henry: (reading instructions) And carefully cut the wires leading to the clockwork fuse at the head. (Trapper cuts the wires) Henry: But first, remove the fuse. (Everyone exchanges panicked looks, Trapper listens to the bomb with a stethoscope) Trapper: It stopped ticking. Hawkeye: Let's get the hell out of here. We've only got 2 minutes...maybe.
  • 40. Public readme on GitHub for our Game SDK One page / 9 quick steps Post a score Save / restore game data Trigger adverts
  • 41. Each service has a one pager on the wiki Overview Diagram Links to code + CI build + test artifacts Dependencies (link to APIs / integrations) API + how to use How to deploy, validate & rollback Monitoring (links) Troubleshooting advice Data & Database
  • 42.
  • 43. Where are the inputs? What is happening? Where are the outputs?

Editor's Notes

  1. Start – The Jam - 1980
  2. Simple Minds – peaked at number 7 in the UK Singles Chart on 4th May 1985 http://www.officialcharts.com/archive-chart/_/1/1985-05-04
  3. 1. Greenfield HTML5 Games Portal for mobile / tablet / PC running on multiple channels 2. 6 weeks of effort: started development in first week of December 2013, 2 week holidays, and ready to launch by last week of January 2014. 3. Launched in mid-February 2014 as we needed decision on the launch games. 4. Team of 7: 3 back-end, 1 front-end, 1 Ops, 1 QA + me (and we also had to deal with other requests)
  4. What you need – opening tracking on 1984 album Listen Like Thieves by INXS Is That All? – from the U2 album October released 1981 These are multiple features – so each feature should have its own definition of done
  5. https://www.nccgroup.com/media/57196/ncc_group_55_killer_questions_website_performance.pdf Checklists help us avoid mistakes – where the knowledge already exists yet we run the risk of failing to apply it correctly
  6. Ripple effect Feature flags & deployment sequence – always deploy with feature switched off
  7. They help to improve outcomes with no increase in skill. Pause points: ready to start; ready to merge (a feature branch); and so on. 5-9 questions / points in the domain language Not a comprehensive how-to guide. We use checklists all the time in our development process. The Real World – album track by The Mighty Lemon Drops from their 1989 album Laughter
  8. Hatful of Hollow released in 1984. Number 28 in John Peel Festive 50 of 1984 There is a tension that can exist in some teams or between teams. In my experience this can sometimes arise between people in different locations not having an appreciation of the challenges in other half of the team. This can happen at product and feature level.
  9. Proposed in 2009 Delay in signing contracts into Jan 2010 (platform tech + external dev) May 2010: project tech handover by Architect – 1 week handover & scope not defined. Go live was meant to be September 2010. Phoenix – The Cult “Love” album
  10. May 2010: project handover; External dev to internal team; Architect – 1 week handover & scope not defined. Go live was meant to be September 2010. Existing: Multi-tenant (275 channels), i18n, Ecommerce (merchandise, catalog, checkout / tax, fulfilment), Support, GS subscriptions, digital downloads & fulfilment, analytics & reporting, emails, etc. Custom: SSO, Billing, UI, Text, Feeds New: time to make decision + merchandising workflow, personalisation / recommendations, paypal + adyen, UI flows, client software, ratings, FB integration, etc Some new capabilities gained by ecommerce platform being used. 18 months: means 30 partners per month The Clash – technically London Calling released 14-Dec 1979 but really an album most listened to in the 80s.
  11. https://twitter.com/paulg/status/389213926769958912 A wish away – The Wonder Stuff – 8 legged groove machine
  12. V2 – single by That Petrol Emotion in 1984. Re-released on their Manic Pop Thrill album Core platform: content merchandising workflow + channel merchandising + storefront + purchase / fulfilment + pay & get paid + user support (self-service UI) 1 partner + no custom integrations (SSO / payment) + no custom UI + English language only GameSaver was initially deferred but added before we launched ATG 9 / Commerce Refrence Store – working software
  13. Iterate and evolve Extend platform >> what channels can we migrate now? Started Feb 11 and went live in Aug 11. We migrated approx 85 partners in total including custom capabilities. This approach gave us a path to evolve and split the work. We shutdown approx 150 partners. We never did 2-byte support + custom OEM features.
  14. Distributed team exagerates the communication issues (product team in NY) We gave our first demo after 2 weeks and then gave weekly demos This applies to demos or the full feature / product Ultimately these steps are core to what we did after we were acquired by iWin.
  15. QA reported issues: blame culture historically existed if they missed things Product team: every bug is MUST fix We wanted to remove the subjective nature of issues Out by 1 pixel bugs Lack of test coverage – more bugs, more stuff you will never fix
  16. Double A-side from the People Who Grinned Themselves to Death (second abum) Build - Reached number 41 in the New Zealand charts on 1987 Norman Cook – Fat Boy Slim Paul Heaton – The Beautiful South Stan Collimore Hugh Whittaker – jail / axe
  17. I would often use this as an interview question – not for right or wrong answer but to see if the candidate would understand the change process. For some of our services we can do this process in < 15 mins – automation, some steps are optomised out. Rails apps (branch) v varnish (release package) Small atomic check-ins Code reviews – sometimes pre-checkin & sometimes post check-in
  18. We have LOTs of products / services – this is a subset. REPEATABLE Visible: dashboard & email notifcation on failure (for some builds we notify on success) Fire and forget – it worked locally Fast: individual builds/tests (<10 mins), slow builds break flow, and queue of builds (competing for build servers) Fix the build – halt the line Last Success – want to build everything at least weekly. From 1988 JAMC album Barbed Wire Kisses.
  19. Start with 100% or as close to it and stick to it as you go. If you don’t start that way it can be difficult to find time & have the discipline to plug the gaps. We ran our Java coverage overnight. Needs instrumented code. Takes approx 10 more minutes (i.e. 45 mins) Rails we run as is.
  20. Echo and the Bunnymen – Heaven Up Here – 1981 This song makes me think about software deployment. Software is sometimes thrown over a wall for someone else to deploy to production and make it work end-to-end. http://c2.com/cgi/wiki?ThrownOverTheWall You can write code but there are often whole other challenges in getting it out the door. Two scenarios http://www.slideshare.net/beamrider9/continuous-deployment-at-etsy-a-tale-of-two-approaches
  21. Painful to merge Long lived branches were painful to keep up to date If you missed the train then business pressure to get it out. Every release was a big deal. Microservices: recommendations, adverts, FES, etc See https://svn.iplay.com/atg/internal/site/tags/archives/release/ for archive
  22. Branches are good to avoid poluting trunk But merging can be painful (merge conflicts) Test feature before re-merge and again afterwards - WASTEFUL And long lived branches can be painful cos you merge in both directions We were also using feature flags so that we could try to get code out quicker.
  23. QA dominant
  24. Microservices: chat, logon, Catalog, Event, front end, advert, etc. Deployment models: 1. Advert: Build/unit test >> deploy / cucumber >>GATED deploy to production (no stage environment). Major change we will deploy a new production instance and cutover that way. 2. Varnish: deploy & test against mock (sinatra) >> auto build a release >> GATE deploy to production 3. MP + CMS: build / test + deploy / cuke >> candidate branch + stage env (preview / training) >> production. We don’t have version branches or feature branches. We develop to trunk and fix broken builds immediately. Usually there is not many hours or days difference between trunk and production branch.
  25. For devs / ops / non-devs Less stuff to cram in your head – less code / faster Lead time: from an idea being proposed to being in production Cycle time = when start working to when ready for delivery Difference between trunk and production is minimal Less ripple effect (well defined APIs) The barrier to testing / deploying is lower Find a bug: just fix it and get it out
  26. 1. Whatever means zero downtime & less complexity - Whatever works in your context - Tidy up afterwards 2. Roll out one service at a time and don’t break things. A simple approach is to make sure it works as is and enable via feature flags Add things don’t change (e.g. adverts) Enable code with feature flags Tidy up after wards 3. DB Add table / column and populate data Roll out code that uses it Roll out code that stops using a column or table in db When nobody using it then delete
  27. Happy Mondays – Performance is an album track from their 1988 album Bummed I saw them support James at the QMU and went out and bought that album the next week.
  28. 1. HTML page download – the initial requst 2. Critical path JS / CSS 3. Other resources http://www.webperformancetoday.com/2014/03/18/waterfalls-101-how-to-use-a-waterfall-chart-to-diagnose-performance-pains/
  29. 1. Dark green = DNS lookup. One lookup per domain. Try to use fewer domains & pre-fetch. 2. Orange = TCP Connection. Round trip. Browsers can have approx 6 connections to the same domain. Use a CDN – closer. HTTP 1.1. 3. We’re ignoring SSL / HTTPS – it will incur 1-2 additional round trips 4. Bright green = Time to first byte. This is the time from the request being made until the first byte is served back. Fewer requests. Concatenate. Sprites. Leverage the browser cache. Server time. 5. Blue = content download. This indicates how long it takes for a server to fully serve the requested resource. Compression, minify, gzip, review all headers. Congestion window.
  30. Critical rendering: async JS, inline critical CSS. Speed Index Budget – in tech language or measure that matters to users Mobile web: less than 50 requests, less than 600K, 0 redirects, etc. Mobile web: page speed of less than 2000 on 3G HTML5 game: less than 500K of audio, one audio sprite, less than 50 resource requests, etc. HTML5 game: fully loaded in less than 10 seconds on cable
  31. Monitor – Siouxsie and the Bansheesfrom the 1981 album Juju Featuring John McGeoch from Greenock. He was also a member of Public Image Ltd Self-healing systems High availability – survive single point failures We call / text out of hours via Pager Duty if user impact (i.e. do something now) We email for other monitoring alerts - thresholds
  32. We have minimum of two instances of all apps – sometimes behind R53 or ELB Opsview CPU, Memory, Load Average, Disk space, specific processes, etc Alert on thresholds
  33. Monitor from end user perspective Pagerduty integration – this means we don’t have people sitting watching servers
  34. REM – Document - 1987 1. Sometimes / often dev teams want to run a mile if they are asked to document anything 2. Lots of services then you need documentation. Even if you have things automated. 3. The code is the documentation is sometimes the attitude but that is unhelpful. http://martinfowler.com/bliki/CodeAsDocumentation.html 4. It’s all about seeing what you are doing from the shoes of someone else.
  35. This was broadcast in 1973 but I watched it in the 1980s
  36. Who: a game developer who wants to start earning money from their game asap Simple instructions – a list. Doable in under an hour for a HTML5 game developer. Can dig deeper if necessary. Writing simple instructions for a different audience does not come naturally to all developers.
  37. One page Our team is small – we have more services than people. Some services see frequent development / release – some are more mature and releases are infrequent. Easy to forget steps. If you are context switching. We have a template that we use to write up each of our services. Many of these steps are automated but still worth having the notes as a memory aid.
  38. Quiet Life – Japan. Released 4 January 1980 Think about what happens if the server has issues at 3am Welcome message – status & cut & paste commands Apps all in same place
  39. Log files are also documentation Can I find the log file? Can someone who didn’t write the code diagrnose what is happening by reviewing log file? Poor logging means you need to patch production with improved logging before you can diagnose an issue. INFO / WARN / ERROR Time stamp + before / input + after / output for each step. Report error context.