phpDay 2012: Scaling Communication via Continuous Integration

3,242 views
3,201 views

Published on

At Etsy, we continuously deploy code. New features and bug fixes can go from development to production in 20 minutes. We have maintained this low barrier to deployment over the past year despite nearly doubling the number of people that can deploy.

Communication has a huge impact on the velocity of development and moving forward. We explicitly communicate over IRC, but we also evolve communication patterns through several other vectors, and one of those vectors is out Continuous Integration environment.

In this talk I will not only discuss how communication patterns at Etsy have evolved with our growing development team, but I will also elaborate on how team size, role composition, motivation, culture, and available tools sets can impact communication patterns and subsequently throughput.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,242
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
24
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • phpDay 2012: Scaling Communication via Continuous Integration

    1. 1. Scaling Communication via Continuous IntegrationTh e Fi n di ngs Th us Fa r!
    2. 2. LB DenkerAnthropologist ofDeveloper Culture @ Etsy
    3. 3. Anthropologist?!? ... only sort of ...
    4. 4. Methods of an AnthropologistParticipantObservationInterviewsSurveys
    5. 5. Developer Culture“The most importantcomponent of The Etsy Wayis culture and that is asdifficult to teach as it isimportant” — Chad Dickerson, CEO
    6. 6. Acquiring Culture“... humans acquire culture through thelearning processes of enculturation andsocialization ...”
    7. 7. Developer Culture“Always Be Pushing”Developer HappinessWe trust people
    8. 8. “Anthropology demands the open-mindednesswith which one must look and listen, record inastonishment and that which one would nothave been able to guess.” — Margaret Mead
    9. 9. Deployinating All the PushesOne Button (stage)LoggingMonitoringNo Child Safety Locks
    10. 10. Anyone Can Deploy! Board Members Included
    11. 11. 20 Minutes or LessThe Power of Continuous Deployment
    12. 12. Continuous What?!?Continuous... Unceremoniously... Initiated By... Push New CodeDeployment Anyone To Production Apply QualityIntegration Anyone Process Release New Delivery Product Feature
    13. 13. Continuous Deployment
    14. 14. Continuous Integration
    15. 15. Continuous Delivery ???
    16. 16. Continuous Delivery ???
    17. 17. Continuous Delivery ???
    18. 18. Communication Theory1. The Basic Elements of Communication Source Destination Sender Message Channel Feedback Receiver2. Goal-Oriented Communication
    19. 19. Goals“Always Be Pushing”You Shouldn’t Push on RedYou Should Write Clean TestsYou Should Write Clean CodeTrust Everyone To Do The Right Thing
    20. 20. “Always Be Pushing” Instilling ConfidenceTh e Fi rs t In te r v ie ws
    21. 21. ConfidenceContinuous Deployment is... Scary A Safety NetDepends on Your Point of View
    22. 22. Branching was Too Costly
    23. 23. Always Ship TrunkBranch in Code, notin Version ControlWrite Tools to Workwith TrunkDo not Write Tools toWork with BranchesWrite TransparentTools
    24. 24. Quality Process wasCoupled to Pipeline
    25. 25. ‘Try’ Before You CommitAbility to Run Tests inCI EnvironmentActually ContinuousIntegration!Community Enforced!No Excuses!
    26. 26. Confidence Boost!The Impact of Knowing that Changes Pass the Tests Before Getting in the Pipeline
    27. 27. Why ‘Try’?No more clogging thepipelineCI in Pipeline wasFinal Sanity Check
    28. 28. Goal Achieved“Always Be Pushing”
    29. 29. You Should Not Push on Red De-Noising the Communication ChannelPa rt ic ip a n t Ob se r v ati on s over IRC
    30. 30. Where We Started From... Number of Total Time Flakiness Support Tests ~30 Practically Legacy Unknown ~50% Minutes None ~8Platform ~1200 ~20% Small Core Minutes
    31. 31. A Bunch of NoiseNeed to Know How Much is Being CoveredNeed to Know What is Being TestedNeed to Be Able to Detect Test Runner ErrorsNeed to Have Actionable Test Results(Ownership)
    32. 32. De-Noise Number of Total Time Flakiness Support Tests ~30 Practically Legacy Unknown ~50% Minutes None >8Platform >1200 ~5% Small Core Minutes
    33. 33. GoalAchievedYou Should Not Push on Red
    34. 34. You Should Write Clean Tests Writing Simple Tests Isn’t Always So SimpleAlter n ati ve Te ach ing Met h od s
    35. 35. How To Improve Test QualityTeach Them!But People Need toWant to Learn
    36. 36. Prove It! Number of Average Test Time Tests Time per TestPlatform Tests 7:01 2332 0.18 seconds 0.00337 Unit Tests 0:10 2432 seconds DBUnit Tests 0:32 70 0.09 secondsDecember 2010
    37. 37. Test ClassificationPHPUnit @groupPHPUnit XML Configuration + Some PakeSplit By Point of Error ie. cache, database, network, sleep, time, etc.Flaky Test Silo
    38. 38. GoalAchieved You ShouldWrite Clean Tests
    39. 39. Too Much To Read ... and to Communicate
    40. 40. How Do Communicate This?E-Mail? Nope!Wiki? Nope!Blog? Nope!Simplify Jenkins UI?YES!
    41. 41. Silent GreenTaking a Chapter Out of xUnit Principles
    42. 42. Jenkins PluginsMaster Project PluginTriggering User PluginDeployinator Plugin * All Available on github.com/etsy
    43. 43. You Should Write Clean Code Not Everyone Can Read (and Follow) a Coding StandardEn a bl ing C ul tu re In fl ue n ce
    44. 44. Clean CodeStart with SyntaxMove to StyleThen to Design Level
    45. 45. PHP LintRun LocallyRun on Pre-CommitRun on CI
    46. 46. Using CodeSnifferDraft Coding Style GuidelinesExperiment With Various SniffsDiscover Actual Coding Syntax TendenciesDecide on Changes to Coding Style GuidelinesCreate a Strategy on How to Get to Green
    47. 47. Work inProgress You ShouldWrite Clean Code
    48. 48. Getting to GreenSend ‘Blame’ E-MailsUse a Staging Job in TryDo a Fix-It Competition
    49. 49. Trust EveryoneTo Do The Right Thing Balancing Enforcement with FreedomFu tu re Wor k
    50. 50. Continuously Growing a Continuously Evolving Culture
    51. 51. Recently DoneCode Reviews, Second Pair of EyesPHPUnit --strict StandardsPHPUnit Testing StandardsLog All the Errors E_ALL | E_STRICT
    52. 52. More To DoEntire Coding Standard in CIMess Detector StandardsMore PHPUnit Testing Standards...
    53. 53. Developer Culture“Always Be Pushing”Developer HappinessWe trust people
    54. 54. Company etsy.comAbout Our Craft codeascraft.comMore From Me elblinkin.info

    ×