Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment...

55
Continuous Delivery for the rest of us

Transcript of Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment...

Page 1: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Continuous Deliveryfor the rest of us

Page 2: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

About me

• Lisa van Gelder

• Consultant at Cyrus Innovation

[email protected]

• @techbint

Page 3: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Continuous Delivery

Is not:!

• Continuous deployment

• Automating all the things

Is:

• Removing the bottlenecks that stop you delivering

Page 4: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 5: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 6: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 7: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 8: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 9: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 10: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 11: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 12: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 13: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 14: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 15: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Ooda loop

• observe, orient, decide, and act

- John Boyd, Father of the F16

Page 16: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 17: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Continuous Delivery

• Measure the total cycle time

• Reduce your cycle time

• Improve your reaction time

Page 18: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

How do you choose where to start?

Page 19: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Double the frequency of releases

Page 20: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Benefits of smaller releases• Code only has value in production - get it there

quicker!

• Less co-ordination required

• Easier to test

• Easier to see if it caused issues in production

• Easier to rollback

Page 21: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

If you can’t release, fake it

Page 22: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 23: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Blockers• Releases cause problems for users

• Ops team don’t have time to do more releases

• Ops/dev don’t have time to support more releases

• QA don’t have time to test new features

• Takes too long to get a green build

Page 24: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Releases cause problems for users

• data loss

• performance issues

• broken functionality

Page 25: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

The cms that made journalists stop work for 20 minutes…

• db changes tied to code changes

• too much state in session

Page 26: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Releases cause performance problems

• play back logs

• soak test

• dark launch

• performance test as soon as you can

Page 27: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Releases break existing functionality

• missing tests

• no env like prod to test on

Page 28: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

The cdn that broke the release

• POST /myapp/comment/123/recommend

Page 29: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Ops don’t have the time to perform more releases

Page 30: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 31: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 32: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Ops/dev don’t have time to watch releases

• Release interrupts normal work

• Team on standby in case of issues

Page 33: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Help!

Page 34: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 35: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Rollbacks• The risk is much higher when rollback isn’t possible

• Rollbacks should be normal operation, not a failure

• Users don’t care about your new feature if the site is down

1. It should be possible to rollback

2. It should be quick to rollback

Page 36: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Rollbacks

Page 37: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

A release should be a non-event

• Done in working hours

• Easy to monitor

• Easy to rollback

Page 38: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

QA don’t have time to test

Page 39: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 40: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Cross-functional issues• release waiting on qa sign off

• release waiting on product manager sign off

• developers waiting on designs

• ux waiting on developers

• front-end developers waiting on back-end

Page 41: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 42: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Cross functional teams

• don’t start story if all resources aren’t available

• blockers should block

• when work is held up - can someone else perform that function?

Page 43: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Takes too long to get a green build

• Flaky tests

• Slow-running tests

• Merge hell

Page 44: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Flaky tests• The tests that cry wolf

• Isolate them

• Fix them or delete them

Page 45: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Slow running tests• More than 5 minutes is slow

• Waste of developer time

• Interrupt flow to fix

• People deploy without waiting for tests

• Frequent broken build

Page 46: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Slow running tests• separate unit tests from acceptance tests

• limit the amount of acceptance tests

• mock dependencies - limit calls to db

• run tests in parallel

Page 47: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Merge hell• Continuous Integration is more often than you think!

• Don’t have long lived feature branches

• Check in to master at least once a day

• Feature switches

• Branch by abstraction

Page 48: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering
Page 49: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

QA define automated testing strategy

Page 50: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Automate performance tests

What criteria do humans use to evaluate performance tests?

Page 51: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

• Have a performance test environment that is a scaled-down replica of production

• Automate log collection, make sure tests reflect current traffic patterns.

• Use your application-specific metrics

• Define acceptable ranges for your application

Page 52: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Automate release process

What criteria do humans use to evaluate a successful release?

Use your application-specific metrics and acceptable ranges

Page 53: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Summary

• Measure your cycle time

• Fix your bottlenecks

• Improve your reaction time

Page 54: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Questions?

Feedback please!

http://bit.ly/1q3FFIo

Page 55: Continuous Delivery for the Rest of Us QCon...Continuous Delivery Is not:! • Continuous deployment • Automating all the things Is: • Removing the bottlenecks that stop you delivering

Suggestions for further reading

• Continuous Delivery by Jez Humble & David Farley

• The Phoenix Project by Gene Kim, Kevin Behr & George Spafford

• The Goal by Eliyahu M. Goldratt & Jeff Cox

• Lean Software Development by Mary Poppendieck & Tom Poppendieck

• Release It! by Michael T. Nygard