Release Early & Release Often: Reducing Deployment Friction

66
RELEASE EARLY & Reducing Deployment Friction RELEASE OFTEN Saturday, October 1, 11

Transcript of Release Early & Release Often: Reducing Deployment Friction

Page 1: Release Early & Release Often: Reducing Deployment Friction

RELEASE EARLY &

Reducing Deployment Friction

RELEASE OFTEN

Saturday, October 1, 11

Page 2: Release Early & Release Often: Reducing Deployment Friction

ANDY DELCAMBREIt rhymes with “Welcome”

Saturday, October 1, 11

Page 3: Release Early & Release Often: Reducing Deployment Friction

@adelcambre

Saturday, October 1, 11

Page 4: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 5: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 6: Release Early & Release Often: Reducing Deployment Friction

REDUCING DEPLOYMENTFRICTION

Saturday, October 1, 11

Page 7: Release Early & Release Often: Reducing Deployment Friction

REDUCING DEPLOYMENTFRICTION

Saturday, October 1, 11

Page 8: Release Early & Release Often: Reducing Deployment Friction

REDUCING DEVELOPMENTFRICTION

Saturday, October 1, 11

Page 9: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 10: Release Early & Release Often: Reducing Deployment Friction

STARTING A NEW TASK

Saturday, October 1, 11

Page 11: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 12: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 13: Release Early & Release Often: Reducing Deployment Friction

git checkout -b U-666

Saturday, October 1, 11

Page 14: Release Early & Release Often: Reducing Deployment Friction

git commit -m “[U-666] add unicorns”

Saturday, October 1, 11

Page 15: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 16: Release Early & Release Often: Reducing Deployment Friction

.............................

..*......**..................

.............................

......................

Finished in 10.809554 seconds

109 examples, 0 failures, 3 pending

Saturday, October 1, 11

Page 17: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 18: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 19: Release Early & Release Often: Reducing Deployment Friction

EyBot

Saturday, October 1, 11

Page 20: Release Early & Release Often: Reducing Deployment Friction

require 'ey/irc'

run EY::Irc::Receiver.new { |message| case message.body when /^ping$/ message.say(message.to, ”Hello World!”) endend

Saturday, October 1, 11

Page 21: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 22: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 23: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 24: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 25: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 26: Release Early & Release Often: Reducing Deployment Friction

CONTINUOUS INTEGRATION

Saturday, October 1, 11

Page 27: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 28: Release Early & Release Often: Reducing Deployment Friction

MASONSaturday, October 1, 11

Page 29: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 30: Release Early & Release Often: Reducing Deployment Friction

git checkout mastergit merge U-666

git push origin master

Saturday, October 1, 11

Page 31: Release Early & Release Often: Reducing Deployment Friction

MARK TICKET AS “MERGED”

Saturday, October 1, 11

Page 32: Release Early & Release Often: Reducing Deployment Friction

AUTO DEPLOY TO EDGE

Saturday, October 1, 11

Page 33: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 34: Release Early & Release Often: Reducing Deployment Friction

404 DEPLOYS IN SEPTEMBER

Saturday, October 1, 11

Page 35: Release Early & Release Often: Reducing Deployment Friction

~ 20 per week day

Saturday, October 1, 11

Page 36: Release Early & Release Often: Reducing Deployment Friction

2-9 Production Deploys per Day

Saturday, October 1, 11

Page 37: Release Early & Release Often: Reducing Deployment Friction

EyBot: release awsm production

Saturday, October 1, 11

Page 38: Release Early & Release Often: Reducing Deployment Friction

Ensure master is green

Saturday, October 1, 11

Page 39: Release Early & Release Often: Reducing Deployment Friction

Tag the release

Saturday, October 1, 11

Page 40: Release Early & Release Often: Reducing Deployment Friction

Assign all merged tickets to the version

Saturday, October 1, 11

Page 41: Release Early & Release Often: Reducing Deployment Friction

Push tag to the deploy branch

Saturday, October 1, 11

Page 42: Release Early & Release Often: Reducing Deployment Friction

Production automatically deploys from the deploy branch

Saturday, October 1, 11

Page 43: Release Early & Release Often: Reducing Deployment Friction

Mark all tickets in this release as resolved

Saturday, October 1, 11

Page 44: Release Early & Release Often: Reducing Deployment Friction

Send Notifications

Saturday, October 1, 11

Page 45: Release Early & Release Often: Reducing Deployment Friction

Hoptoad Airbrake

Saturday, October 1, 11

Page 46: Release Early & Release Often: Reducing Deployment Friction

New Relic

Saturday, October 1, 11

Page 47: Release Early & Release Often: Reducing Deployment Friction

Email

Saturday, October 1, 11

Page 48: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 49: Release Early & Release Often: Reducing Deployment Friction

Saturday, October 1, 11

Page 50: Release Early & Release Often: Reducing Deployment Friction

The actual deploy

Saturday, October 1, 11

Page 51: Release Early & Release Often: Reducing Deployment Friction

Fairly Standard Deploy

Saturday, October 1, 11

Page 52: Release Early & Release Often: Reducing Deployment Friction

current/ releases/ shared/

Saturday, October 1, 11

Page 53: Release Early & Release Often: Reducing Deployment Friction

Unicorn

Saturday, October 1, 11

Page 54: Release Early & Release Often: Reducing Deployment Friction

bundle install --deployment

Saturday, October 1, 11

Page 55: Release Early & Release Often: Reducing Deployment Friction

Zero Downtime Migrations

Saturday, October 1, 11

Page 56: Release Early & Release Often: Reducing Deployment Friction

No Magic, Just a technique

Saturday, October 1, 11

Page 57: Release Early & Release Often: Reducing Deployment Friction

Adding a column

Saturday, October 1, 11

Page 58: Release Early & Release Often: Reducing Deployment Friction

Add a migration to add the column

Saturday, October 1, 11

Page 59: Release Early & Release Often: Reducing Deployment Friction

Ship code that needs the new column

Saturday, October 1, 11

Page 60: Release Early & Release Often: Reducing Deployment Friction

Deploy the codeRestart the serversThen run migrations

Saturday, October 1, 11

Page 61: Release Early & Release Often: Reducing Deployment Friction

More examples

Saturday, October 1, 11

Page 62: Release Early & Release Often: Reducing Deployment Friction

Removing a Column

Saturday, October 1, 11

Page 63: Release Early & Release Often: Reducing Deployment Friction

Renaming a column

Saturday, October 1, 11

Page 64: Release Early & Release Often: Reducing Deployment Friction

A work in progress

Saturday, October 1, 11

Page 65: Release Early & Release Often: Reducing Deployment Friction

Thanks!

Saturday, October 1, 11

Page 66: Release Early & Release Often: Reducing Deployment Friction

Questions?

twitter.com/adelcambre

engineyard.com

We’re hiring!

Saturday, October 1, 11