Unsucking Your Team's Development Environment

78b475797a14c84799063c7cd073962f?s=47 Zach Holman
September 14, 2012

Unsucking Your Team's Development Environment

Success can bring many glamorous changes to your company: hiring more employees, getting free coffee, and giving everyone a private jet filled with cash and endangered African predatory cats.

Success can lead to less-glamorous problems, though. As you grow, your team's development environment becomes really important. How long does it take to clone, set up, and boot your apps? Can your employees still be productive on an aging codebase? How can you automate CI, hooks, and other setup for new projects? Is any of this fun anymore?

GitHub ran into these problems as we expanded our team tremendously over the last two years. Let's look at some of the ways we've improved our employees' development environments.

78b475797a14c84799063c7cd073962f?s=128

Zach Holman

September 14, 2012
Tweet

Transcript

  1. unsucking YOUR TEAM’S ENVIRONMENT DEVELOPMENT

  2. NO FORKING HOLMAN @ LOST YO QUIT READING THIS SHIT

  3. githu

  4. WE STARTED WITH one QUEUE

  5. THIS QUEUE WORKED SORTA OBJECTS IN, TASK OCCURS

  6. OH SHIT BLOCKING OPERATIONS

  7. THEN SPLIT INTO 2 QUEUES SEGREGATE BY CATEGORY

  8. 2 QUEUES, 3x THROUGHPUT EXPONENTIAL GROWTH

  9. SATURATED AVAILABILITY EXPERIENCING BOTTLENECKS

  10. THIS IS GITHUB’S GODDAMN TOILET SITUATION

  11. TWO GENDERED BATHROOMS ZOMG WHY AM I WAITING

  12. It’s because of this:

  13. GITHUB EMPLOYEES 5 8 2009 2008

  14. GITHUB EMPLOYEES 2009 2010 5 8 14 2008

  15. GITHUB EMPLOYEES 2009 2010 2011 5 8 14 54 2008

  16. GITHUB EMPLOYEES 2008 2009 2010 2011 2012 5 8 14

    54 114
  17. WE’VE THOUGHT A LOT ABOUT ONBOARDING

  18. IT’S NOT JUST TOILET LATENCY ABOUT

  19. 2.5 YEARS AGO: 1 WEEK TODAY: 20 MINUTES DURATION FROM

    HIRE TO BOOT (a ) (every a )
  20. THINK THROUGH MAKING YOUR ENVIRONMENT SUCK LESS

  21. PAIN IS MULTIPLIED ACROSS YOUR WHOLE COMPANY

  22. THE APP THE STACK THE DEPLOY T H E C

    O M P A N Y
  23. THE APP THE STACK THE DEPLOY T H E C

    O M P A N Y
  24. I S Y O U R F O U N

    D A T I O N THE APP
  25. remembe : EVERY APP SHOULD HAVE A ONE-LINER INSTALL REALLY.

  26. EVEN LARGE PROJECTS CAN HAVE A TUTORIAL-STYLE SCRIPT remembe :

  27. THINGS SUCK LESS HOMEBREW FOREMAN RBENV BUNDLER

  28. AUTOMATE AUTOMATE AUTOMATE AUTOMATE AUTOMATE AUTOMATE

  29. APP BOOTSTRAP

  30. BOOTSTRAP REPLICATE-REPO CIBUILD SCRIPT/

  31. BOOTSTRAP SCRIPT/ ALL-IN-ONE SCRIPT THAT SETS UP EVERYTHING

  32. BOOTSTRAP SCRIPT/ DEPENDENCY CHECKS + MIGRATIONS + BUNDLER ASSET COMPILATION

  33. BOOTSTRAP SCRIPT/ S P E E D MD5 CHECKSUM: GEMFILE

    + ASSETS
  34. BOOTSTRAP SCRIPT/ everywhere SCRIPT/SERVER SCRIPT/CONSOLE CI

  35. BOOTSTRAP SCRIPT/ DESIGNERS ❤ THIS

  36. BOOTSTRAP SCRIPT/ NON-TECHNICALS ❤ THIS

  37. BOOTSTRAP SCRIPT/ DEVELOPERS ❤ THIS

  38. REPLICATE-REPO SCRIPT/ A SUPPORT SCRIPT THAT LOADS PRODUCTION DATA LOCALLY

  39. REPLICATE-REPO SCRIPT/ FLY YOUR PRODUCTION AR ASSOCIATIONS TO YOU IN

    DEVELOPMENT an rail dhh
  40. REPLICATE-REPO SCRIPT/ an rail

  41. REPLICATE-REPO SCRIPT/ FOR US, IT’S REPLICATE-REPO REPLICATE-#{OBJECT} BUT IT COULD

    BE YOUR
  42. REPLICATE-REPO SCRIPT/ /RTOMAYKO/REPLICATE HTTP://

  43. REPLICATE-REPO SCRIPT/ DUMPS BELONGS_TO & HAS_ONE ASSOCIATIONS

  44. REPLICATE-REPO SCRIPT/ $ script/replicate-repo holman/spark CLONES ISSUES, PULL REQUESTS, USERS,

    GIT DATA, ETC.
  45. REPLICATE-REPO SCRIPT/ AUTOMATE AUTOMATE AUTOMATE AUTOMATE AUTOMATE AUTOMATE BORING SUPPORT

    TASKS
  46. CIBUILD SCRIPT/ OUR CONTINUOUS INTEGRATION ENVIRONMENT PREPARATION SCRIPT

  47. CIBUILD SCRIPT/ SET ENV VARS + LOAD GC CONFIG +

    CLEAN WORK DIR BOOTSTRAP
  48. CIBUILD SCRIPT/ VERSION CONTROL you TEST ENVIRONMENT

  49. USE COMPUTERS TO DO THINGS

  50. USE HUMANS TO DRINK WITH

  51. USE COMPUTERS TO DO THINGS

  52. THE STACK THE APP THE DEPLOY T H E C

    O M P A N Y
  53. { GROUP PARTICIPATION TIME }

  54. EVERYONE LIFT YOUR 

  55. OKAY NOW SMASH THEM 

  56. NO?

  57. OKAY, MAYBE THEY’RE EXPENSIVE, BUT THEY’RE ALSO A PAIN TO

    SET UP
  58. MACHINES SHOULD BE expendable

  59. WE’VE DONE THAT

  60. I COULD SMASH THIS LAPTOP

  61. JUST KIDDING OMG I’D GET MURDERED

  62. AUTOMATED MACHINE SETUP  20 min

  63. setu THE

  64. FIRST DAY GET A LAPTOP RUN A ONE-LINER HAVE A

    BEER HACK
  65. $ gh-setup project < >

  66. DEPENDENCIES PROCESSES + fo 50 SERVICES & APPS

  67. APPS DROPBOX HOMEBREW + + CHROME + 1PASSWORD + ETC.

  68. DEPENDENCIES MYSQL NODE + + REDIS + POSTGRES RIAK +

    + RBENV + ETC.
  69. + CONFIG FULL-DISK ENCRYPTION SCREEN LOCKS VPN + ETC.

  70. PUPPET

  71. AUTO-REPORTING OF ANY FAILURE TO GITHUB ISSUES

  72. USE COMPUTERS TO DO THINGS

  73. THE DEPLOY THE APP THE STACK T H E C

    O M P A N Y
  74. remembe : DON’T HANDLE YOUR OWN DEPLOYS

  75. HUBOT HEAVEN +

  76. HUBOT NODE.JS CHAT BOT HUNDREDS OF PLUGINS

  77. HUBOT DEPLOY X TO Y

  78. HUBOT DEPLOY X TO Y DEPLOY GITHUB TO PRODUCTION DEPLOY

    GITHUB TO PRODUCTION/FE DEPLOY SMOKE TO FS12,FE1
  79. HUBOT DEPLOY X TO Y DEPLOY GITHUB TO PRODUCTION DEPLOY

    GITHUB TO PRODUCTION/FE DEPLOY SMOKE/HOTFIX TO FS12,FE1
  80. HUBOT HEAVEN +

  81. HEAVEN CAPISTRANO OR HEROKU SINATRA APP API TO HUBOT RUNS

    DEPLOYS ON OUR BOXES
  82. HEAVEN DEPLOY LOCKING 1. YOU PUSH A BRANCH 2. CI

    STARTS A BUILD 3. BUILD PASSES 4. YOU DEPLOY BRANCH 5. HEAVEN PREVENTS DEPLOY CONFLICTS 6.YOU MERGE BRANCH 7. HEAVEN UNLOCKS DEPLOYS
  83. HUBOT HEAVEN + FLEXIBLE SAFE EASY

  84. USE COMPUTERS TO DO THINGS

  85. T H E C O M P A N Y

    THE APP THE STACK THE DEPLOY
  86. remembe : TAKE AWAY THE BULLSHIT

  87. JUST BEING AN EMPLOYEE ADDS A LOT OF OVERHEAD LOGINS

    SITES TERMS REPORTS PAYROLL NAMES COMMUNICATION
  88. REDUCE IT OAUTH EVERYTHING 50+ INTERNAL APPS UNDER OAUTH

  89. REDUCE IT BUILD HELPERS TEAM APP HELPS US COMMUNICATE

  90. CLARIFY IT WRITE A GUIDE FIRST-DAY GUIDE TO THE COMPANY

  91. CLARIFY IT MAKE IT ACCESSIBLE MONITORS APP AND OFFICE TVS

  92. USE COMPUTERS TO BUILD THINGS THAT CAN HELP YOUR ORGANIZATION

    SCALE TO THE EXTENT THAT NEW HIRES ACCLIMATE WITHOUT A LOT OF STRESS
  93. THE APP THE STACK THE DEPLOY T H E C

    O M P A N Y
  94. AUTOMATE EVERYTHING

  95. WE HAVE ZERO MANAGERS BECAUSE WE AUTOMATE

  96. LONG-TERM BENEFIT WILL ALWAYS OUTWEIGH SHORT-TERM COST

  97. THANKS

  98. NO FORKING HOLMAN @ LOST YO QUIT READING THIS SHIT

    ZACHHOLMAN.COM/TALKS