put a button on it: removing barriers to going fast

97
[email protected] / @kastner [email protected] / @johngoulah Put a Button on it Removing Barriers to Going Fast

Upload: oscon-byrum

Post on 11-May-2015

27.531 views

Category:

Technology


1 download

TRANSCRIPT

Page 2: Put a Button on It: Removing Barriers to Going Fast
Page 3: Put a Button on It: Removing Barriers to Going Fast

1+ Billion Pageviews Per Month

Page 4: Put a Button on It: Removing Barriers to Going Fast

Speed

Page 5: Put a Button on It: Removing Barriers to Going Fast

~80 Engineers

Page 6: Put a Button on It: Removing Barriers to Going Fast

Barriers

Page 7: Put a Button on It: Removing Barriers to Going Fast

Deployinator

Page 8: Put a Button on It: Removing Barriers to Going Fast
Page 9: Put a Button on It: Removing Barriers to Going Fast

We’re Hiringhttp://etsy.com/jobs

Page 10: Put a Button on It: Removing Barriers to Going Fast
Page 11: Put a Button on It: Removing Barriers to Going Fast

Optimization

Page 12: Put a Button on It: Removing Barriers to Going Fast

Happiness

Page 13: Put a Button on It: Removing Barriers to Going Fast

Sad Engineers are Bad Engineers

Page 14: Put a Button on It: Removing Barriers to Going Fast

Barriers

Page 15: Put a Button on It: Removing Barriers to Going Fast

Process

Page 16: Put a Button on It: Removing Barriers to Going Fast

“Process is an embedded reaction to prior stupidity”

– Clay Shirky

Page 17: Put a Button on It: Removing Barriers to Going Fast

Fear

Page 18: Put a Button on It: Removing Barriers to Going Fast
Page 19: Put a Button on It: Removing Barriers to Going Fast

Correctness

Page 20: Put a Button on It: Removing Barriers to Going Fast

Text"My strategy has always been: be wrong as

fast as we can, Which basically means, we're gonna screw up, … Let's not be afraid of that."

– Andrew Stanton

Page 21: Put a Button on It: Removing Barriers to Going Fast

Legacy

Page 22: Put a Button on It: Removing Barriers to Going Fast

How?

Page 23: Put a Button on It: Removing Barriers to Going Fast

Communication

Page 24: Put a Button on It: Removing Barriers to Going Fast

Trust

Page 25: Put a Button on It: Removing Barriers to Going Fast

Openness

Page 26: Put a Button on It: Removing Barriers to Going Fast

Constant Improvement

Page 27: Put a Button on It: Removing Barriers to Going Fast

Then vs. Now

Page 28: Put a Button on It: Removing Barriers to Going Fast

2009

Page 29: Put a Button on It: Removing Barriers to Going Fast

2009 2011

Page 30: Put a Button on It: Removing Barriers to Going Fast

2009

Single Deploy

Master

Page 31: Put a Button on It: Removing Barriers to Going Fast

2009 2011

Single Deploy

Master

Anyone Can

Deploy

Page 32: Put a Button on It: Removing Barriers to Going Fast

2009

Rollback in

Fear

Page 33: Put a Button on It: Removing Barriers to Going Fast

2009 2011

Rollback in

Fear

Roll Forward

to Victory

Page 34: Put a Button on It: Removing Barriers to Going Fast

2009

All Day

Deploys

Page 35: Put a Button on It: Removing Barriers to Going Fast

2009 2011

All Day

Deploys

Deploy All

Day

Page 36: Put a Button on It: Removing Barriers to Going Fast

How… for reals

Page 37: Put a Button on It: Removing Barriers to Going Fast

So, what does Etsy optimize for?

Page 38: Put a Button on It: Removing Barriers to Going Fast

MTTR vs. MTBF

Page 39: Put a Button on It: Removing Barriers to Going Fast

Default to Open

Page 40: Put a Button on It: Removing Barriers to Going Fast

Culture First

Page 41: Put a Button on It: Removing Barriers to Going Fast

If it’s your first day at Etsy, you must deploy!

Page 42: Put a Button on It: Removing Barriers to Going Fast
Page 43: Put a Button on It: Removing Barriers to Going Fast

Doing the dumbest thing that can possibly work

Page 44: Put a Button on It: Removing Barriers to Going Fast

Committing to Trunk

Page 45: Put a Button on It: Removing Barriers to Going Fast

Branching in Code

Page 46: Put a Button on It: Removing Barriers to Going Fast

if ($cfg["new_search"]) {// new hotness$resp = search_solr();

} else {// old busted$resp = search_grep();

}

Page 47: Put a Button on It: Removing Barriers to Going Fast

Configuration is Code

Page 48: Put a Button on It: Removing Barriers to Going Fast

$cfg["new_search"] = true;

Page 49: Put a Button on It: Removing Barriers to Going Fast

Blameless Post-mortems

Page 50: Put a Button on It: Removing Barriers to Going Fast

Databases are Different

Page 51: Put a Button on It: Removing Barriers to Going Fast

Does it Work?

Page 52: Put a Button on It: Removing Barriers to Going Fast
Page 53: Put a Button on It: Removing Barriers to Going Fast
Page 54: Put a Button on It: Removing Barriers to Going Fast

6 Change-related incidents in 2010

Page 55: Put a Button on It: Removing Barriers to Going Fast

November code-freeze

Page 56: Put a Button on It: Removing Barriers to Going Fast

November code-freeze

721 Deploys

Page 57: Put a Button on It: Removing Barriers to Going Fast

Deployinator

Page 58: Put a Button on It: Removing Barriers to Going Fast
Page 59: Put a Button on It: Removing Barriers to Going Fast
Page 60: Put a Button on It: Removing Barriers to Going Fast
Page 61: Put a Button on It: Removing Barriers to Going Fast

Capistrano

Page 62: Put a Button on It: Removing Barriers to Going Fast

PuppetCapistrano

Page 63: Put a Button on It: Removing Barriers to Going Fast

FabricPuppet

Capistrano

Page 64: Put a Button on It: Removing Barriers to Going Fast

FabricChef

PuppetCapistrano

Page 65: Put a Button on It: Removing Barriers to Going Fast
Page 66: Put a Button on It: Removing Barriers to Going Fast
Page 67: Put a Button on It: Removing Barriers to Going Fast
Page 68: Put a Button on It: Removing Barriers to Going Fast
Page 69: Put a Button on It: Removing Barriers to Going Fast
Page 70: Put a Button on It: Removing Barriers to Going Fast

“Framework”

Page 71: Put a Button on It: Removing Barriers to Going Fast

STACK=search rake new_stack

Page 72: Put a Button on It: Removing Barriers to Going Fast

run_cmd %Q{cap deploy}

Page 73: Put a Button on It: Removing Barriers to Going Fast

log_and_stream "Starting Web deploy<br>"

Page 74: Put a Button on It: Removing Barriers to Going Fast

log_and_shout({ :old_build => old_build, :build => build, :send_email => true

})

Page 75: Put a Button on It: Removing Barriers to Going Fast

Communication

Page 76: Put a Button on It: Removing Barriers to Going Fast
Page 77: Put a Button on It: Removing Barriers to Going Fast
Page 78: Put a Button on It: Removing Barriers to Going Fast
Page 79: Put a Button on It: Removing Barriers to Going Fast
Page 80: Put a Button on It: Removing Barriers to Going Fast
Page 81: Put a Button on It: Removing Barriers to Going Fast
Page 82: Put a Button on It: Removing Barriers to Going Fast

Dashboard Driven Development

Page 83: Put a Button on It: Removing Barriers to Going Fast
Page 84: Put a Button on It: Removing Barriers to Going Fast

5:27 < devbot> PRODUCTION deployed by vthommeret version: 7f08b7a-20110722-191739-UTC took: 131.042598 seconds diff: http://deployinator.etsycorp.com/diff/web/0cbf2f0/7f08b7a

Page 85: Put a Button on It: Removing Barriers to Going Fast

Etsy Confidential

Page 86: Put a Button on It: Removing Barriers to Going Fast

Deployinator Deploy Host

Web 1 Web 2 Web N

Page 87: Put a Button on It: Removing Barriers to Going Fast

Deployinator Deploy Host

Web 1 Web 2 Web N

ssh

Page 88: Put a Button on It: Removing Barriers to Going Fast

Deployinator Deploy Host

Web 1 Web 2 Web N

ssh

dsh

Page 89: Put a Button on It: Removing Barriers to Going Fast

Deployinator Deploy Host

Web 1 Web 2 Web N

ssh

dsh

Page 90: Put a Button on It: Removing Barriers to Going Fast

Deployinator Deploy Host

Web 1 Web 2 Web N

ssh

dshRsync

Page 91: Put a Button on It: Removing Barriers to Going Fast

What’s Stopping You?

Page 92: Put a Button on It: Removing Barriers to Going Fast

Know what you’re optimizing for

Page 93: Put a Button on It: Removing Barriers to Going Fast

Deployinator is Open Source Software!

Page 94: Put a Button on It: Removing Barriers to Going Fast

Deployinator is Open Source Software!

http://github.com/etsy/deployinator

Page 95: Put a Button on It: Removing Barriers to Going Fast

Deployinator is Open Source Software!

http://github.com/etsy/deployinator(right after this talk)

Page 96: Put a Button on It: Removing Barriers to Going Fast

Thank you

Page 97: Put a Button on It: Removing Barriers to Going Fast

Thank youhttp://github.com/etsy/deployinator