SlideShare a Scribd company logo
1 of 33
Optimizing for
change: Taking risks safely &
Kellan Elliott-McCrea
@kellan
CTO, Etsy
Launched June 18, 2005 in Brooklyn
875,000 monthly active sellers
33.5MM items for sale
$525MM in sales in 2011
1.43B page views, in Aug
102 engineers
74 releases, yesterday
Take more risks.
Build a better software.
    Have more fun.
“Sure that works when
you’re building social
software but what about a
real business with $$$
involved?”
- everybody always
Continuous
Deployment:
    small changes,
   pushed frequently
you can’t avoid
making mistakes
  you can avoid
making BIG mistakes
What are you optimizing for?



MTTR                    MTBF
MTTR   MTBF
4 core techniques:
  1. Put a Button On It
  2. Branch in Code
  3. Trunk is Always
 Deployable
 4. Dark/Incremental
 Launches
Put a Button On It.
Branch in
 use features
4code:
  core techniques:
 flags
 if ($cfg[‘awesome_new_search’]) {
     # new hotness
     $rsp = do_solr();
 } else {
     # boring old stuff
     $rsp = do_grep();
 }
Branch in
4code:
 use features flags
  core techniques:
 for free you get:
 1% launches
 admin only launches
 dark launches
 split tests
any engineer can launch an
experiment to




57 experiments live right
Metrics driven

measure
everything!
feedback loops!
Engineers love to

make it ridiculously
easy
Metrics driven


StatsD::timing("page.render", $msec);
Metrics driven
Metrics aren’t optional

a feature isn’t done
without metrics
Make metrics visible

remove the
passwords
Some tools:

 Graphite, Ganglia,
 Logster*, StatsD*, event
 beacons, log files, EMR,
 Vertica, Splunk
Getting started? Use

StatsD @
Instagram, Pinterest, Github,
Mozilla, LAN.com, Zynga,
Kickstarter, LivingSocial and
70+ other companies
Step 1: your 5 core
@ Etsy:
sign ups, logins, checkout,
new listings, posts in the
bugs forums
Who watches the graphs?
Automate your
analysis



   USE COMPUTERS!
Automate your
analysis
  holtWintersConfidence(Upper|Lower)
Automate your
analysis
 continuous integration:
unit tests, coding
standards,
static analysis, risky code
paths
Make effective security
   easy by default

            Make insecure
            patterns “grep-
                 able”
Actively monitor for
      attacks.

      Spikes in 500s and
     failed logins are your
            first clue.
“I discovered the vuln late Friday afternoon and
wasn't quite ready to email it to them. Saturday
morning, I confirmed the hole was still there
and fixed a few bugs with my demo.
I had my girlfriend test it from her house. It
didn't work for her. I tested again and it had
stopped working for me. Sure enough, it was
now properly sanitized and had the correct
JSON MIME type.
The following Monday I received a response
thanking me for reporting it, and telling me I
was right. “
Treat independent security
 researches with respect.
“Culture eats
 strategy
 for breakfast”*




     (*possibly
Thank you!

More Related Content

Similar to Optimizing for change: Taking risks safely & e-commerce

Get Faster - While You're Getting Better
Get Faster - While You're Getting BetterGet Faster - While You're Getting Better
Get Faster - While You're Getting Betterantoineg
 
How an Attacker "Audits" Your Software Systems
How an Attacker "Audits" Your Software SystemsHow an Attacker "Audits" Your Software Systems
How an Attacker "Audits" Your Software SystemsSecurity Innovation
 
How to be an inefficient developer? - Petar Ducic (Infobip)
How to be an inefficient developer? - Petar Ducic (Infobip)How to be an inefficient developer? - Petar Ducic (Infobip)
How to be an inefficient developer? - Petar Ducic (Infobip)Shift Conference
 
A Big Dashboard of Problems.pdf
A Big Dashboard of Problems.pdfA Big Dashboard of Problems.pdf
A Big Dashboard of Problems.pdfTravisMcPeak1
 
Four myths about peer code reviews - 7. ebay tech talk
Four myths about peer code reviews - 7. ebay tech talkFour myths about peer code reviews - 7. ebay tech talk
Four myths about peer code reviews - 7. ebay tech talkHolger Hammel
 
eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS USING SE-TOOLKIT – A CA...
eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS  USING SE-TOOLKIT – A CA...eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS  USING SE-TOOLKIT – A CA...
eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS USING SE-TOOLKIT – A CA...Kevin M. Moker, CFE, CISSP, ISSMP, CISM
 
Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...
Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...
Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...Carolyn Duby
 
5-Ways-to-Revolutionize-Your-Software-Testing
5-Ways-to-Revolutionize-Your-Software-Testing5-Ways-to-Revolutionize-Your-Software-Testing
5-Ways-to-Revolutionize-Your-Software-TestingMary Clemons
 
Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012Nick Galbreath
 
Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps Gene Kim
 
Are We Secure? Answering the Unanswerable
Are We Secure? Answering the UnanswerableAre We Secure? Answering the Unanswerable
Are We Secure? Answering the UnanswerableJustin Berman
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
 
Works For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug ReportsWorks For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug ReportsSALT Lab @ UBC
 
2009 10 28 The Lean Startup In Paris
2009 10 28 The Lean Startup In Paris2009 10 28 The Lean Startup In Paris
2009 10 28 The Lean Startup In ParisEric Ries
 
Minimal Product, Maximal Vision
Minimal Product, Maximal VisionMinimal Product, Maximal Vision
Minimal Product, Maximal VisionDavid E. Weekly
 
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical StepsDevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical StepsCA Technologies
 
2022 Rea & Associates' Cybersecurity Conference
2022 Rea & Associates' Cybersecurity Conference 2022 Rea & Associates' Cybersecurity Conference
2022 Rea & Associates' Cybersecurity Conference Rea & Associates
 
Building a Modern Security Engineering Organization
Building a Modern Security Engineering OrganizationBuilding a Modern Security Engineering Organization
Building a Modern Security Engineering OrganizationZane Lackey
 

Similar to Optimizing for change: Taking risks safely & e-commerce (20)

Get Faster - While You're Getting Better
Get Faster - While You're Getting BetterGet Faster - While You're Getting Better
Get Faster - While You're Getting Better
 
How an Attacker "Audits" Your Software Systems
How an Attacker "Audits" Your Software SystemsHow an Attacker "Audits" Your Software Systems
How an Attacker "Audits" Your Software Systems
 
How to be an inefficient developer? - Petar Ducic (Infobip)
How to be an inefficient developer? - Petar Ducic (Infobip)How to be an inefficient developer? - Petar Ducic (Infobip)
How to be an inefficient developer? - Petar Ducic (Infobip)
 
A Big Dashboard of Problems.pdf
A Big Dashboard of Problems.pdfA Big Dashboard of Problems.pdf
A Big Dashboard of Problems.pdf
 
Four myths about peer code reviews - 7. ebay tech talk
Four myths about peer code reviews - 7. ebay tech talkFour myths about peer code reviews - 7. ebay tech talk
Four myths about peer code reviews - 7. ebay tech talk
 
Debugging
DebuggingDebugging
Debugging
 
eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS USING SE-TOOLKIT – A CA...
eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS  USING SE-TOOLKIT – A CA...eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS  USING SE-TOOLKIT – A CA...
eForensics Magazine - HOW TO STEAL GMAIL CREDENTIALS USING SE-TOOLKIT – A CA...
 
Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...
Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...
Providence Future of Data Meetup - Apache Metron Open Source Cybersecurity Pl...
 
5-Ways-to-Revolutionize-Your-Software-Testing
5-Ways-to-Revolutionize-Your-Software-Testing5-Ways-to-Revolutionize-Your-Software-Testing
5-Ways-to-Revolutionize-Your-Software-Testing
 
Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012
 
Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps
 
TxJS 2011
TxJS 2011TxJS 2011
TxJS 2011
 
Are We Secure? Answering the Unanswerable
Are We Secure? Answering the UnanswerableAre We Secure? Answering the Unanswerable
Are We Secure? Answering the Unanswerable
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
 
Works For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug ReportsWorks For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug Reports
 
2009 10 28 The Lean Startup In Paris
2009 10 28 The Lean Startup In Paris2009 10 28 The Lean Startup In Paris
2009 10 28 The Lean Startup In Paris
 
Minimal Product, Maximal Vision
Minimal Product, Maximal VisionMinimal Product, Maximal Vision
Minimal Product, Maximal Vision
 
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical StepsDevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
 
2022 Rea & Associates' Cybersecurity Conference
2022 Rea & Associates' Cybersecurity Conference 2022 Rea & Associates' Cybersecurity Conference
2022 Rea & Associates' Cybersecurity Conference
 
Building a Modern Security Engineering Organization
Building a Modern Security Engineering OrganizationBuilding a Modern Security Engineering Organization
Building a Modern Security Engineering Organization
 

More from Kellan

More women in engineering: Something that ACTUALLY WORKED.
More women in engineering: Something that ACTUALLY WORKED.More women in engineering: Something that ACTUALLY WORKED.
More women in engineering: Something that ACTUALLY WORKED.Kellan
 
Future of handmade
Future of handmadeFuture of handmade
Future of handmadeKellan
 
Architecting for Change: QCONNYC 2012
Architecting for Change: QCONNYC 2012Architecting for Change: QCONNYC 2012
Architecting for Change: QCONNYC 2012Kellan
 
Engineering Change
Engineering ChangeEngineering Change
Engineering ChangeKellan
 
Solving the "Brooklyn Problem"
Solving the "Brooklyn Problem" Solving the "Brooklyn Problem"
Solving the "Brooklyn Problem" Kellan
 
Social Software For Robots
Social Software For RobotsSocial Software For Robots
Social Software For RobotsKellan
 
Beyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPPBeyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPPKellan
 
Advanced OAuth Wrangling
Advanced OAuth WranglingAdvanced OAuth Wrangling
Advanced OAuth WranglingKellan
 
Casual Privacy (Ignite Web2.0 Expo)
Casual Privacy (Ignite Web2.0 Expo)Casual Privacy (Ignite Web2.0 Expo)
Casual Privacy (Ignite Web2.0 Expo)Kellan
 

More from Kellan (9)

More women in engineering: Something that ACTUALLY WORKED.
More women in engineering: Something that ACTUALLY WORKED.More women in engineering: Something that ACTUALLY WORKED.
More women in engineering: Something that ACTUALLY WORKED.
 
Future of handmade
Future of handmadeFuture of handmade
Future of handmade
 
Architecting for Change: QCONNYC 2012
Architecting for Change: QCONNYC 2012Architecting for Change: QCONNYC 2012
Architecting for Change: QCONNYC 2012
 
Engineering Change
Engineering ChangeEngineering Change
Engineering Change
 
Solving the "Brooklyn Problem"
Solving the "Brooklyn Problem" Solving the "Brooklyn Problem"
Solving the "Brooklyn Problem"
 
Social Software For Robots
Social Software For RobotsSocial Software For Robots
Social Software For Robots
 
Beyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPPBeyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPP
 
Advanced OAuth Wrangling
Advanced OAuth WranglingAdvanced OAuth Wrangling
Advanced OAuth Wrangling
 
Casual Privacy (Ignite Web2.0 Expo)
Casual Privacy (Ignite Web2.0 Expo)Casual Privacy (Ignite Web2.0 Expo)
Casual Privacy (Ignite Web2.0 Expo)
 

Optimizing for change: Taking risks safely & e-commerce

Editor's Notes

  1. or, what to do when people tell you lean startup techniques don’t work in an ecommerce setting.\nfeels like talking about lean startup at next context is preaching to the choir :)\n
  2. Who here knows Etsy?\nBought something?\nSeller?\nAwesome\nWe’re a marketplace of artists, and craftspeople\n
  3. some quick info about Etsy. launched 7 years ago. nearly 900k sellers, selling 33million items.\nwe sold over $500 million last year, a\n
  4. lean startup techniques are about rapid cycles of hypothesis, change and learning. \nand change is usually viewed as source risk. how does QA work? how do you avoid making mistakes? how can you prove the software is correct.\n
  5. does that stuff really work when there’s money involved?\nwe’re on track to do a billion dollars in sales this year, it’s not huge, it’s not small, and it’s definitely real money. \n
  6. this approach of deploying the site frequently is called continuous deployment.\nand counter intuitively it IS a risk mitigation technique\n\n
  7. 20 lines of code i wrote 10 mintues ago are much easier to diagnose and fix, then a 50,000 lines of diff in a weekly release of code i wrote two weeks ago.\n
  8. everything is optimized for something. \n
  9. failure is inevitable, make it cheap.\nmarines, 4 minutes. feeling i want from my software.\n\n
  10. how continuous deployment works\n
  11. step 1. take all your build scripts, and make files, and rsync shells, and wrap them in a simple web page, and making that deploys your application. it doesn’t matter how often you push it. having a button that ANY ENGINEER can push at also any time, is the first step.\n
  12. step 2. source controls systems were built by people who built software that shipped on floppy drives. they made sense for them. it don’t make sense for you. make your application aware of the of it’s history using feature flags. \n
  13. \n
  14. new ideas come from everywhere, but improvements can be hard to find. spread a wide net. and make your engineers more deeply invested in your product. \n
  15. it’s great we’re running experiments, and we’re changing things all the time. how do we learn from it? measure everything!\n
  16. who has the time to measure everything? if you make it easy, they will do it. at a ridiculous rate. we monitor 340k metrics a second.\n
  17. starting collection metrics is as simple as droping a line in your code. this is using the PHP bindings, but there are bindings for every language. sends out over UDP. functionally free.\n\n
  18. and here’s an example of what you get out of that call.\n
  19. just like it’s not done if there aren’t tests, or the stories aren’t complete. metrics are part of the deliverables, and they’re core to making continuous deployment effective and safe.\n
  20. Don’t hide metrics behind passwords. Our core metrics are available to anyone who walks into our office, but at least everyone on staff should be able to learn from them and spot issues. Good data begets good data begets good decisions. Transparency is hard work. But it’s worth it.\n
  21. some tools we use for metrics collection. Graphite and Ganglia are open source, Logster and StatsD we open sourced. \n
  22. getting started with metrics collection? choose StatsD you’re in good company.\n
  23. getting started is easy. you don’t need 340k metrics to start. you just need your core 5.\nat Etsy our core 5 are sign ups, logins, checkout, new listings, and posts in our bugs forum, because if the bugs are blowing up, we’ve probably broken something. start there\n
  24. so who watches 340k graphs?\n
  25. computers! change is happening too rapidly in a distributed system for a human to detect all the issues (though humans are surprisingly good at it)\n
  26. exponentially smoothed historical averages. alert when a metric leaves the confidence bounds. \n
  27. CI is great for testing. but it’s also great for a lot of other automated analysis of your code that a computer can do. computers watching for people making dumb mistakes.\nchanges to crypto code, the sessions, anything which interacts with files, or shared memory.\n
  28. sanitize input before it hits your application. force developers to override safe choices. monitor people making those choices. people shouldn’t have to think by default in a rapidly changing environment. remove ambiguity from the system.\n
  29. security shouldn’t be blocking changes, it should be following behind your wave of changes as closely as possible looking for anomalies. automate this. alert on it. 500s are a good sign that someone is probing and they’ve found a weakness.\n
  30. actively respond to attacks. fix bugs while they’re being researched. they’ll post about it on Reddit and win you credibility with the independent security researcher community.\n
  31. actively respond to attacks. fix bugs while they’re being researched. be polite. be responsive. give them a way to contact you and a policy around security disclosure. celebrate them, add them to a webpage, send them schwag.\n
  32. just take smart risks that optimize for your ability to change and learn.\n
  33. and when in doubt. make sure you have a great company culture. none of this works without the support and buy in of your peers.\n
  34. \n