+ All Categories
Home > Documents > Sam Haskins - O'Reilly Velocity China 2013 Web

Sam Haskins - O'Reilly Velocity China 2013 Web

Date post: 11-Feb-2022
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
113
Continuous Deployment Sam Haskins Velocity China 2012 Etsy.com [email protected] Friday, December 21, 12
Transcript
Page 1: Sam Haskins - O'Reilly Velocity China 2013 Web

Continuous Deployment

Sam Haskins

Velocity China 2012

[email protected]

Friday, December 21, 12

Page 2: Sam Haskins - O'Reilly Velocity China 2013 Web

Friday, December 21, 12

Page 3: Sam Haskins - O'Reilly Velocity China 2013 Web

20,000,000 Members

Friday, December 21, 12

Page 4: Sam Haskins - O'Reilly Velocity China 2013 Web

800,000 Active Shops

Friday, December 21, 12

Page 5: Sam Haskins - O'Reilly Velocity China 2013 Web

17,000,000 items

Friday, December 21, 12

Page 6: Sam Haskins - O'Reilly Velocity China 2013 Web

0

150

300

450

600

2005 2006 2007 2008 2009 2010 2011

525.6

306.7

176.8

87.3

263.80.17

Millions of $

Friday, December 21, 12

Page 7: Sam Haskins - O'Reilly Velocity China 2013 Web

0

150

300

450

600

2005 2006 2007 2008 2009 2010 2011

525.6

306.7

176.8

87.3

263.80.17

Millions of $

Friday, December 21, 12

Page 8: Sam Haskins - O'Reilly Velocity China 2013 Web

(deploys/day)

Friday, December 21, 12

Page 9: Sam Haskins - O'Reilly Velocity China 2013 Web

0

150

300

450

600

2005 2006 2007 2008 2009 2010 2011

525.6

306.7

176.8

87.3

263.80.17

Millions of $

Friday, December 21, 12

Page 10: Sam Haskins - O'Reilly Velocity China 2013 Web

200 deployers

Friday, December 21, 12

Page 11: Sam Haskins - O'Reilly Velocity China 2013 Web

200 deployersEngineers?

Friday, December 21, 12

Page 12: Sam Haskins - O'Reilly Velocity China 2013 Web

200 deployersEngineers +Designers

Friday, December 21, 12

Page 13: Sam Haskins - O'Reilly Velocity China 2013 Web

200 deployersEngineers +Designers +Product

Friday, December 21, 12

Page 14: Sam Haskins - O'Reilly Velocity China 2013 Web

33 deploys/day

Friday, December 21, 12

Page 15: Sam Haskins - O'Reilly Velocity China 2013 Web

33 deploys/day(average that includes weekends)

Friday, December 21, 12

Page 16: Sam Haskins - O'Reilly Velocity China 2013 Web

33 deploys/day(average that includes weekends)

(just the web stack)

Friday, December 21, 12

Page 17: Sam Haskins - O'Reilly Velocity China 2013 Web

Continuous Deployment

Friday, December 21, 12

Page 18: Sam Haskins - O'Reilly Velocity China 2013 Web

Take the ceremonyout of releases

Friday, December 21, 12

Page 19: Sam Haskins - O'Reilly Velocity China 2013 Web

Smaller changes,more often

Friday, December 21, 12

Page 20: Sam Haskins - O'Reilly Velocity China 2013 Web

Fewer changes/deploy=

Fewer things thatcan go wrong

Friday, December 21, 12

Page 21: Sam Haskins - O'Reilly Velocity China 2013 Web

Fewer changes/deploy=

Easier to see effects of your change

Friday, December 21, 12

Page 22: Sam Haskins - O'Reilly Velocity China 2013 Web

Friday, December 21, 12

Page 23: Sam Haskins - O'Reilly Velocity China 2013 Web

How to implement

Friday, December 21, 12

Page 24: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 25: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 26: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// search engine

$results = Search::use_grep($_GET[‘query’]);print_r($results);

Friday, December 21, 12

Page 27: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 28: Sam Haskins - O'Reilly Velocity China 2013 Web

$ curl http://shaskins.dev.etsy.com/search.php?query=bowties

Friday, December 21, 12

Page 29: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 30: Sam Haskins - O'Reilly Velocity China 2013 Web

$ scp -r ~/code webserver.prod.etsy.com:/docroot

Friday, December 21, 12

Page 31: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 32: Sam Haskins - O'Reilly Velocity China 2013 Web

$ tail -f access_log[15/Nov/2012:17:14:41 +0000] "GET /search?query=bowties" 200 [15/Nov/2012:17:14:42 +0000] "GET /search?query=knit+hat" 200[15/Nov/2012:17:14:45 +0000] "GET /search?query=vintage+chair" 200

Friday, December 21, 12

Page 33: Sam Haskins - O'Reilly Velocity China 2013 Web

Friday, December 21, 12

Page 34: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 35: Sam Haskins - O'Reilly Velocity China 2013 Web

“Always Ship Trunk”Paul Hammondhttp://www.paulhammond.org/2010/06/trunk/

Friday, December 21, 12

Page 36: Sam Haskins - O'Reilly Velocity China 2013 Web

Centralized configuration file

Friday, December 21, 12

Page 37: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// Site configuration

$config[‘search’] = array( ‘enabled’ => ‘on’ ));

Friday, December 21, 12

Page 38: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// search engine

$results = Search::use_grep($_GET[‘query’]);print_r($results);

Friday, December 21, 12

Page 39: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// search engineif (!Feature::isEnabled(‘search’)) { header(‘HTTP/1.1 503 Service Unavailable’);}

$results = Search::use_grep($_GET[‘query’]);print_r($results);

Friday, December 21, 12

Page 40: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// Site configuration

$config[‘search_method’] = array( ‘grep’ => ‘100%’

));

Friday, December 21, 12

Page 41: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// Site configuration

$config[‘search_method’] = array( ‘grep’ => ‘100%’, ‘solr_service’ => ‘0%’ ));

Friday, December 21, 12

Page 42: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// search engineif (!Feature::isEnabled(‘search’)) { header(‘HTTP/1.1 503 Service Unavailable’); exit();}

$results = Search::use_grep($_GET[‘query’]);

print_r($results);Friday, December 21, 12

Page 43: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// search engineif (!Feature::isEnabled(‘search’)) { header(‘HTTP/1.1 503 Service Unavailable’); exit();}

switch (Feature::variant(‘search_method’)) { case ‘grep’: $results = Search::use_grep($_GET[‘query’]); break;

case ‘solr_service’: $results = Search::use_solr($_GET[‘query’]); break;}

print_r($results);Friday, December 21, 12

Page 44: Sam Haskins - O'Reilly Velocity China 2013 Web

Lots of types of options

Friday, December 21, 12

Page 45: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// Site configuration

$config[‘new_feature’] = array( ‘enabled’ => ‘0%’, ‘admin’ => ‘on’ ));

Friday, December 21, 12

Page 46: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// Site configuration

$config[‘new_feature’] = array( ‘enabled’ => ‘0%’, ‘users’ => array( ‘test_user’, ‘big_seller’, ‘best_friend’ ) ));

Friday, December 21, 12

Page 47: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// Site configuration

$config[‘new_feature’] = array( ‘enabled’ => ‘0%’, ‘groups’ => array( 1234, 6742 ) ));

Friday, December 21, 12

Page 48: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// Site configuration

$config[‘new_feature’] = array( ‘enabled’ => array( ‘variant_1’ => ’15%’, ‘variant_2’ => ’20%’, ‘control‘ => ’65%’ ) ));

Friday, December 21, 12

Page 49: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 50: Sam Haskins - O'Reilly Velocity China 2013 Web

Friday, December 21, 12

Page 51: Sam Haskins - O'Reilly Velocity China 2013 Web

Development Staging Production

Friday, December 21, 12

Page 52: Sam Haskins - O'Reilly Velocity China 2013 Web

Development

Friday, December 21, 12

Page 53: Sam Haskins - O'Reilly Velocity China 2013 Web

DevelopmentSeparate database

Friday, December 21, 12

Page 54: Sam Haskins - O'Reilly Velocity China 2013 Web

DevelopmentSeparate databaseSeparate network

Friday, December 21, 12

Page 55: Sam Haskins - O'Reilly Velocity China 2013 Web

Staging and Production

Friday, December 21, 12

Page 56: Sam Haskins - O'Reilly Velocity China 2013 Web

Staging and ProductionSame databases

Friday, December 21, 12

Page 57: Sam Haskins - O'Reilly Velocity China 2013 Web

Staging and ProductionSame databasesSame caches

Friday, December 21, 12

Page 58: Sam Haskins - O'Reilly Velocity China 2013 Web

Staging and ProductionSame databasesSame cachesSame services

Friday, December 21, 12

Page 59: Sam Haskins - O'Reilly Velocity China 2013 Web

Staging and ProductionSame databasesSame cachesSame servicesSame hardware

Friday, December 21, 12

Page 60: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 61: Sam Haskins - O'Reilly Velocity China 2013 Web

_________ ______ _____ ___________ /_____ ________ ___ /______ _____ _____(_)_______ ______ ___ /_______ _________ __ / _ _ \___ __ \__ / _ __ \__ / / /__ / __ __ \_ __ `/_ __/_ __ \__ ___// /_/ / / __/__ /_/ /_ / / /_/ /_ /_/ / _ / _ / / // /_/ / / /_ / /_/ /_ /\__,_/ \___/ _ .___/ /_/ \____/ _\__, / /_/ /_/ /_/ \__,_/ \__/ \____/ /_/ /_/ /____/

Friday, December 21, 12

Page 62: Sam Haskins - O'Reilly Velocity China 2013 Web

Friday, December 21, 12

Page 63: Sam Haskins - O'Reilly Velocity China 2013 Web

Configuration-onlydeploys

Friday, December 21, 12

Page 64: Sam Haskins - O'Reilly Velocity China 2013 Web

code

test

release

feedback

Friday, December 21, 12

Page 65: Sam Haskins - O'Reilly Velocity China 2013 Web

Metrics

Friday, December 21, 12

Page 66: Sam Haskins - O'Reilly Velocity China 2013 Web

MetricsHundreds of thousands of metrics

Friday, December 21, 12

Page 67: Sam Haskins - O'Reilly Velocity China 2013 Web

Business Metrics

Friday, December 21, 12

Page 68: Sam Haskins - O'Reilly Velocity China 2013 Web

Business MetricsNumber of sales

Friday, December 21, 12

Page 69: Sam Haskins - O'Reilly Velocity China 2013 Web

Business MetricsNumber of salesDollars of revenue

Friday, December 21, 12

Page 70: Sam Haskins - O'Reilly Velocity China 2013 Web

Business MetricsNumber of salesDollars of revenueSources of traffic

Friday, December 21, 12

Page 71: Sam Haskins - O'Reilly Velocity China 2013 Web

Application Metrics

Friday, December 21, 12

Page 72: Sam Haskins - O'Reilly Velocity China 2013 Web

Application MetricsApplication actions

Friday, December 21, 12

Page 73: Sam Haskins - O'Reilly Velocity China 2013 Web

Application MetricsApplication actionsUsage patterns

Friday, December 21, 12

Page 74: Sam Haskins - O'Reilly Velocity China 2013 Web

Application MetricsApplication actionsUsage patternsTimes events happen

Friday, December 21, 12

Page 75: Sam Haskins - O'Reilly Velocity China 2013 Web

System Metrics

Friday, December 21, 12

Page 76: Sam Haskins - O'Reilly Velocity China 2013 Web

System MetricsCPU usage

Friday, December 21, 12

Page 77: Sam Haskins - O'Reilly Velocity China 2013 Web

System MetricsCPU usageNetwork bandwidth

Friday, December 21, 12

Page 78: Sam Haskins - O'Reilly Velocity China 2013 Web

System MetricsCPU usageNetwork bandwidthDisk IO

Friday, December 21, 12

Page 79: Sam Haskins - O'Reilly Velocity China 2013 Web

Make metricseasy to create

Friday, December 21, 12

Page 80: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// search engine

$results = Search::use_grep($_GET[‘query’]);print_r($results);

Friday, December 21, 12

Page 81: Sam Haskins - O'Reilly Velocity China 2013 Web

<?php// search engine

$results = Search::use_grep($_GET[‘query’]);print_r($results);StatsD::increment(‘search.queries’);

Friday, December 21, 12

Page 82: Sam Haskins - O'Reilly Velocity China 2013 Web

Friday, December 21, 12

Page 83: Sam Haskins - O'Reilly Velocity China 2013 Web

Put them into dashboards

Friday, December 21, 12

Page 84: Sam Haskins - O'Reilly Velocity China 2013 Web

Logs

Friday, December 21, 12

Page 85: Sam Haskins - O'Reilly Velocity China 2013 Web

Friday, December 21, 12

Page 86: Sam Haskins - O'Reilly Velocity China 2013 Web

Make metrics from logs

Friday, December 21, 12

Page 87: Sam Haskins - O'Reilly Velocity China 2013 Web

Big-data analytics

Friday, December 21, 12

Page 88: Sam Haskins - O'Reilly Velocity China 2013 Web

Culture of trust

Friday, December 21, 12

Page 89: Sam Haskins - O'Reilly Velocity China 2013 Web

Tools solve technological friction

Friday, December 21, 12

Page 90: Sam Haskins - O'Reilly Velocity China 2013 Web

Culture solves organizational friction

Friday, December 21, 12

Page 91: Sam Haskins - O'Reilly Velocity China 2013 Web

Get rid of barriers

Friday, December 21, 12

Page 92: Sam Haskins - O'Reilly Velocity China 2013 Web

Get rid of barriers“Talk to ops to get access to the logs”

Friday, December 21, 12

Page 93: Sam Haskins - O'Reilly Velocity China 2013 Web

Get rid of barriers“Talk to ops to get access to the logs”“Get approval from CTO to push code”

Friday, December 21, 12

Page 94: Sam Haskins - O'Reilly Velocity China 2013 Web

Get rid of barriers“Talk to ops to get access to the logs”“Get approval from CTO to push code”“Release manager pushes the buttons”

Friday, December 21, 12

Page 95: Sam Haskins - O'Reilly Velocity China 2013 Web

Take responsibility

Friday, December 21, 12

Page 96: Sam Haskins - O'Reilly Velocity China 2013 Web

Something’s broken?

Friday, December 21, 12

Page 97: Sam Haskins - O'Reilly Velocity China 2013 Web

Something’s broken?Ops problem?

Friday, December 21, 12

Page 98: Sam Haskins - O'Reilly Velocity China 2013 Web

Something’s broken?Ops problem?Developer problem?

Friday, December 21, 12

Page 99: Sam Haskins - O'Reilly Velocity China 2013 Web

Something’s broken?Ops problem?Developer problem?Product problem?

Friday, December 21, 12

Page 100: Sam Haskins - O'Reilly Velocity China 2013 Web

Something’s broken?Ops problem?Developer problem?Product problem?

Friday, December 21, 12

Page 101: Sam Haskins - O'Reilly Velocity China 2013 Web

Something’s broken?Ops problem?Developer problem?Product problem?Problem.

Friday, December 21, 12

Page 102: Sam Haskins - O'Reilly Velocity China 2013 Web

Everyone is responsible

Friday, December 21, 12

Page 103: Sam Haskins - O'Reilly Velocity China 2013 Web

Dev/Ops/ProductCollaboration

Friday, December 21, 12

Page 104: Sam Haskins - O'Reilly Velocity China 2013 Web

Blameless Postmortems

Friday, December 21, 12

Page 105: Sam Haskins - O'Reilly Velocity China 2013 Web

Why Etsy Loves Continuous Deployment

Friday, December 21, 12

Page 106: Sam Haskins - O'Reilly Velocity China 2013 Web

Features getdeveloped faster

Friday, December 21, 12

Page 107: Sam Haskins - O'Reilly Velocity China 2013 Web

Iterative Development

Friday, December 21, 12

Page 108: Sam Haskins - O'Reilly Velocity China 2013 Web

Increased confidence

Friday, December 21, 12

Page 109: Sam Haskins - O'Reilly Velocity China 2013 Web

Data-backed decisions

Friday, December 21, 12

Page 110: Sam Haskins - O'Reilly Velocity China 2013 Web

Better communication

Friday, December 21, 12

Page 111: Sam Haskins - O'Reilly Velocity China 2013 Web

Mean time to recovery

Friday, December 21, 12

Page 112: Sam Haskins - O'Reilly Velocity China 2013 Web

Tools Mentioned:•Feature flag tool (not yet released, but soon!)•Jenkins (http://jenkins-ci.org)•Deployinator (https://github.com/etsy/deployinator)•StatsD (https://github.com/etsy/statsd)•Graphite (http://graphite.wikidot.com)•Ganglia (http://ganglia.sourceforge.net)•Logster (https://github.com/etsy/logster)•Supergrep (https://github.com/etsy/supergrep)•Much more at https://github.com/etsy

Friday, December 21, 12

Page 113: Sam Haskins - O'Reilly Velocity China 2013 Web

Thanks!

Friday, December 21, 12


Recommended