Slide 1

Slide 1 text

Engineering Change: Enable rapid experimentation Kellan Elliott-McCrea @kellan CTO, Etsy Thursday, May 17, 12

Slide 2

Slide 2 text

* A marketplace for handmade and vintage goods. In April 2012 * 875,000 artisans and creative independents * $63.6 million USD in sales * 1.32 billion page views Thursday, May 17, 12

Slide 3

Slide 3 text

Engineering Change: * Continuous Deployment * Metrics driven development Thursday, May 17, 12

Slide 4

Slide 4 text

Engineering Change: * Make mistakes quickly * Learn from mistakes Thursday, May 17, 12

Slide 5

Slide 5 text

Engineering Change: * Continuous Deployment * Metrics driven development Thursday, May 17, 12

Slide 6

Slide 6 text

Continuous Deployment: a technique for rapid iteration Thursday, May 17, 12

Slide 7

Slide 7 text

Continuous Deployment: make failure cheap Thursday, May 17, 12

Slide 8

Slide 8 text

Continuous Deployment: small changes, pushed frequently Thursday, May 17, 12

Slide 9

Slide 9 text

Continuous Deployment: small changes, pushed frequently. To production. Thursday, May 17, 12

Slide 10

Slide 10 text

Continuous Deployment: 10,068 releases to production in 2011 @ Etsy Thursday, May 17, 12

Slide 11

Slide 11 text

Continuous Deployment: How? Thursday, May 17, 12

Slide 12

Slide 12 text

Continuous Deployment: No branching. “All existing revision control systems were built by people who build installed software” - Paul Hammond, Always Ship Trunk, Velocity 2010 Thursday, March 17, 2011 Thursday, May 17, 12

Slide 13

Slide 13 text

if ($cfg[‘awesome_new_search’]) { # new hotness $rsp = do_solr(); } else { # boring old stuff $rsp = do_grep(); } Continuous Deployment: feature flags Thursday, May 17, 12

Slide 14

Slide 14 text

Continuous Deployment: Ramp - ups (on top of feature flags) 1. Launch to staff only 2. Launch to 1% of all users 3. Launch to members of a beta group Thursday, May 17, 12

Slide 15

Slide 15 text

Continuous Deployment: any engineer can launch a feature to 1% of users Thursday, May 17, 12

Slide 16

Slide 16 text

Continuous Deployment: ~200 experiments live right now Thursday, May 17, 12

Slide 17

Slide 17 text

Metrics driven development: optimize for learning Thursday, May 17, 12

Slide 18

Slide 18 text

Metrics driven development: measure everything Thursday, May 17, 12

Slide 19

Slide 19 text

Metrics driven development: getting started: make it easy Thursday, May 17, 12

Slide 20

Slide 20 text

Metrics driven development: measure everything: logs, monitoring, A/B, graphs, StatsD Thursday, May 17, 12

Slide 21

Slide 21 text

Metrics driven development: StatsD @ Instagram, Pinterest, Github, Mozilla, LAN.com, Zynga, Kickstarter, LivingSocial and 70+ other companies Thursday, May 17, 12

Slide 22

Slide 22 text

Metrics driven development: StatsD “We love statsd at Instagram. Written by Etsy, it’s a network daemon that aggregates and rolls-up data into Graphite. At its core, it has two types of statistics: counter and timers. We use the counters to track everything from number of signups per second to number of likes, and we use timers to time generation of feeds, how long it takes to follow users, and any other major action.” - Mike Krieger, Founder and CTO, Instagram. Thursday, May 17, 12

Slide 23

Slide 23 text

Metrics driven development: StatsD Open source, a daemon for timing and counting things, graphs rates, averages and 95th percentile, 20-30 minute install, easy to use Thursday, May 17, 12

Slide 24

Slide 24 text

Metrics driven development StatsD::timing("page.render", $msec); Thursday, May 17, 12

Slide 25

Slide 25 text

Metrics driven development Thursday, May 17, 12

Slide 26

Slide 26 text

Metrics driven development getting started: your 5 core metrics Thursday, May 17, 12

Slide 27

Slide 27 text

Metrics driven development 5 core metrics @ Etsy: sign ups, logins, checkout, new listings, posts in the bugs forums Thursday, May 17, 12

Slide 28

Slide 28 text

Metrics driven development 378,000 metrics, collected roughly once a second Thursday, May 17, 12

Slide 29

Slide 29 text

Metrics driven development the confidence to change Thursday, May 17, 12

Slide 30

Slide 30 text

Adapt, find market fit. Engineering change: Rapid experimentation Thursday, May 17, 12

Slide 31

Slide 31 text

Adapt, find market fit, addictive to engineers. Engineering change: Rapid experimentation Thursday, May 17, 12

Slide 32

Slide 32 text

Thank you! Lean more: http://codeascraft.etsy.com Thursday, May 17, 12