1 destination site chat and games with avatars revenue
play

1 Destination site Chat and Games with Avatars Revenue over $40 - PowerPoint PPT Presentation

1 Destination site Chat and Games with Avatars Revenue over $40 million annually Profitable Engineering staff > 50 people 2 NO STAGING CLUSTER NO QA REVIEW COMMIT CODE TO LIVE IN PRODUCTION 3 4 RELEASE DEVELOP PRAY FOR CUSTOMERS


  1. 1

  2. Destination site Chat and Games with Avatars Revenue over $40 million annually Profitable Engineering staff > 50 people 2

  3. NO STAGING CLUSTER NO QA REVIEW COMMIT CODE TO LIVE IN PRODUCTION 3

  4. 4

  5. RELEASE DEVELOP PRAY FOR CUSTOMERS 5

  6. RELEASE DEVELOP ITERATE LEARN 6

  7. 7

  8. WAY EASIER TO FIND REGRESSIONS IN SMALL BATCHES OF COMMITS VS. 8

  9. WAY EASIER TO FIND REGRESSIONS IN SMALL LESS THAN 30 LINES OF BATCHES OF COMMITS CODE TO INVESTIGATE VS. 9

  10. FAST RESPONSE TIMES 10

  11. 11

  12. DON’T TAKE MY WORD FOR IT… Reducing batch size… reduces cycle time reduces variability in flow accelerates feedback reduces risk reduces overhead Large batches… reduce efficiency inherently lower motivation and energy cause exponential cost and schedule growth lead to even larger batches The entire batch is limited by its worst element Chapter 5 – Reducing Batch Size

  13. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  14. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  15. CODE HERE!

  16. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  17. CONTINUOUS INTEGRATION

  18. 21

  19. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  20. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  21. CLUSTER IMMUNE SYSTEM 25

  22. IS IT IMPORTANT TO YOUR BUSINESS? MONITOR IT SYSTEM PERFORMANCE BUSINESS PERFORMANCE

  23. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  24. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  25. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  26. Local tests pass, Rollback engineer commits (Blocks) code No Yes Metrics Code deployed to Lots and lots of good? all servers tests run Metrics Yes All tests Code deployed to No still pass? % of servers good? No Yes Revert commit Win! (Blocks)

  27. 32

  28. COMMIT TO MAKING FORWARD PROGRESS NEW PRODUCT ESTABLISHED PRODUCT START WITH SANDBOX START WITH PRODUCTION AUTOMATE DEPLOYS JUST PUSH! IDEAL TIME FOR FAILURES!!! BUILD CONFIDENCE 33

  29. EXPECT SOME HURDLES

  30. The ¡Trickier ¡Bits ¡ • Catching ¡issues ¡that ¡fail ¡slowly ¡ – SELECT * FROM growing_table WHERE 1 ¡ • Some ¡cri9cal ¡areas ¡cause ¡hard ¡lock-­‑ups ¡ – MySQL ¡ – Memcached ¡ • Lack ¡of ¡test ¡coverage ¡of ¡older ¡code ¡ – Not ¡an ¡issue ¡if ¡you ¡start ¡with ¡test ¡coverage ¡ • Outsourcing ¡ • Standard ¡code ¡review ¡tools ¡ 35

  31. BUILD ISOLATION! FASTER TEST RUNS BUY HARDWARE SORT TESTS BY SPEED DEPENDENCY INJECTION AND… THE HYPOTHESIS BUILDER!

  32. BUILD SYSTEMS ARE CRITICAL BUSINESS FUNCTIONS RUN THEM THAT WAY!

  33. CODE HERE!

  34. $experiment = array( ‘name’ -> ‘GDCEurope2011’, 'initial_rollout' => '0', 'branches' => array( 'Enhanced' => 0.5, // can specify multiple weighted branches ) ); // Helper function for readability function user_should_see_test_feature( $uid = NULL ) { return get_branch_for_customer( $uid, $experiment ) ) == 'Enhanced'; // assigns customer if first time called } // The experiment branch if( user_should_see_test_feature( $uid ) ) { // behavior for experiment } else { // control behavior } 42

  35. CLOSE EXPERIMENTS CONTROL PARTICIPANTS 43

  36. UNDESIRED RESULT DESIRED RESULT NO STATISTICAL SIGNIFICANCE 44

  37. THE “PERFECT” SCHEDULE IF YOU HIT THIS CONSISTENTLY YOU ARE SAND-BAGGING! Work Remaining Cycle Start Planned Cycle End

  38. REALITY STRIKES When releases RELEASE DRIVES FEATURES happen every 15 minutes, this can be arbitrary Outstanding Issues Incomplete Features Tech Review Refactoring Work Remaining Drop or push Cycle Start Planned Cycle End

  39. FEATURES DRIVE RELEASE Work Remaining Overage Cycle Start Cycle End Goal Cycle End

  40. RELEASE DEVELOP RELEASE LEARN ITERATE ITERATE LEARN 48

  41. EMPOWERED! 49

  42. Thank ¡You! ¡ ¡Any ¡Ques9ons? ¡ BreH ¡G. ¡DurreH ¡ IMVU recognized as: bdurreH@imvu.com ¡ Inc. 500 TwiHer: ¡@bdurreH ¡ http://bit.ly/dv52wK Red Herring 100: Tweet ¡this ¡talk! ¡ http://bit.ly/bbz5Ex Best Place to Work: http://bit.ly/aAVdp8 #gdceurope ¡ (and we're hiring) http://www.imvu.com/jobs 50

  43. Thanks! ¡ • Single ¡Lane ¡Traffic ¡Photo: ¡ hHp://www.flickr.com/photos/onebigchickenman/4869442019/ ¡ 51

Recommend


More recommend