feature branches and toggles in a post github world
play

Feature branches and toggles in a post-GitHub world GOTO Chicago - PowerPoint PPT Presentation

Feature branches and toggles in a post-GitHub world GOTO Chicago 2017 Sam Newman @gotochi @samnewman Sam Newman & Associates @gotochi @samnewman Sam Newman & Associates (there are no associates) @gotochi @samnewman Building


  1. Feature branches and toggles in a post-GitHub world GOTO Chicago 2017 Sam Newman

  2. @gotochi @samnewman

  3. Sam Newman & Associates @gotochi @samnewman

  4. Sam Newman & Associates (there are no associates) @gotochi @samnewman

  5. Building Microservices DESIGNING FINE - GRAINED SYSTEMS Sam Newman @gotochi @samnewman

  6. 2004 @gotochi @samnewman

  7. @gotochi @samnewman

  8. @gotochi @samnewman

  9. Coventry Arena Coventry Long Buckby Bedford Rugby Bedford St Johns Northampton Kempston Hardwick Stewartby Millbrook to Luton Lidlington St Albans Ridgmont Wolverton London St P Aspley Guise Leamington Woburn Sands Spa Milton Keynes Bow Brickhill Central Fenny Stratford k Bletchley Leighton Buzzard Cheddington St Albans Abbey Tring Berkhamsted Park Street to How Wood Hemel Hempstead Banbury Bricket Wood Apsley Oxford Reading Garston Kings Langley High Wycombe Watford North London Marylebone Watford Junction Bushey Harrow & Wealdstone Wembley Central London Euston @gotochi @samnewman

  10. Coventry Arena Coventry Long Buckby Bedford Rugby Bedford St Johns Northampton Kempston Hardwick Stewartby Millbrook to Luton Lidlington St Albans Ridgmont Wolverton London St P Aspley Guise Leamington Woburn Sands Spa Milton Keynes Bow Brickhill Central Fenny Stratford k Bletchley Leighton Buzzard Cheddington St Albans Abbey Tring Berkhamsted Park Street to How Wood Hemel Hempstead Banbury Bricket Wood Apsley Oxford Reading Garston Kings Langley High Wycombe Watford North London Marylebone Watford Junction Bushey Harrow & Wealdstone Wembley Central London Euston @gotochi @samnewman

  11. Coventry Arena Coventry Long Buckby Bedford Rugby Bedford St Johns Northampton Kempston Hardwick Stewartby Millbrook to Luton Lidlington St Albans Ridgmont Wolverton London St P Aspley Guise Leamington Woburn Sands Spa Milton Keynes Bow Brickhill Central Fenny Stratford k Bletchley Leighton Buzzard Cheddington St Albans Abbey Tring Berkhamsted Park Street to How Wood Hemel Hempstead Banbury Bricket Wood Apsley Oxford Reading Garston Kings Langley High Wycombe Watford North London Marylebone Watford Junction Bushey Harrow & Wealdstone Wembley Central London Euston @gotochi @samnewman

  12. Coventry Arena Coventry Long Buckby Bedford Rugby Bedford St Johns Northampton Kempston Hardwick Stewartby Millbrook to Luton Lidlington St Albans Ridgmont Wolverton London St P Aspley Guise Leamington Woburn Sands Spa Milton Keynes Bow Brickhill Central Fenny Stratford k Bletchley Leighton Buzzard Cheddington St Albans Abbey Tring Berkhamsted Park Street to How Wood Hemel Hempstead Banbury Bricket Wood Apsley Oxford Reading Garston Kings Langley High Wycombe Watford North London Marylebone Watford Junction Bushey Harrow & Wealdstone Wembley Central London Euston @gotochi @samnewman

  13. R3 @gotochi @samnewman

  14. R3 @gotochi @samnewman

  15. R3 R4 @gotochi @samnewman

  16. R3 R4 @gotochi @samnewman

  17. R3 R4 @gotochi @samnewman

  18. R3 R4 @gotochi @samnewman

  19. R3 R4 @gotochi @samnewman

  20. https://www.flickr.com/photos/jubilo/6965626176/ @gotochi @samnewman

  21. R3-R4 Merge Bug Fix Team @gotochi @samnewman

  22. R3-R4 Merge Bug Fix Team yay @gotochi @samnewman

  23. @gotochi @samnewman

  24. Continuous Integration @gotochi @samnewman

  25. @gotochi @samnewman

  26. @gotochi @samnewman

  27. CI Tool @gotochi @samnewman

  28. � CI Tool @gotochi @samnewman

  29. � � CI Tool @gotochi @samnewman

  30. @gotochi @samnewman

  31. @gotochi @samnewman

  32. � @gotochi @samnewman

  33. � � @gotochi @samnewman

  34. 1. Validate the integration � � @gotochi @samnewman

  35. 1. Validate the integration � � � @gotochi @samnewman

  36. 1. Validate the integration 2. When the build breaks, fix it! � � � @gotochi @samnewman

  37. 1. Validate the integration 2. When the build breaks, fix it! � � � � @gotochi @samnewman

  38. 1. Validate the integration 2. When the build breaks, fix it! … � � � � @gotochi @samnewman

  39. 1. Validate the integration 2. When the build breaks, fix it! … � � � � @gotochi @samnewman

  40. 1. Validate the integration 2. When the build breaks, fix it! … � � � � � � � � @gotochi @samnewman

  41. 1. Validate the integration 2. When the build breaks, fix it! 3. Integrate daily … � � � � � � � � @gotochi @samnewman

  42. R3 R4 @gotochi @samnewman

  43. R3 � � � R4 @gotochi @samnewman

  44. R3 � � � � � � R4 @gotochi @samnewman

  45. R3 � � � � � � R4 @gotochi @samnewman

  46. Integrate Once A Day @gotochi @samnewman

  47. How can you deal with half-finished work? @gotochi @samnewman

  48. Option 1: @gotochi @samnewman

  49. Option 1: Wait to check in @gotochi @samnewman

  50. Option 2: @gotochi @samnewman

  51. Option 2: Make a branch! @gotochi @samnewman

  52. Trunk @gotochi @samnewman

  53. Trunk @gotochi @samnewman

  54. F1 Trunk @gotochi @samnewman

  55. F1 Trunk @gotochi @samnewman

  56. F1 Trunk @gotochi @samnewman

  57. F1 Trunk F2 @gotochi @samnewman

  58. F1 Trunk F2 @gotochi @samnewman

  59. F1 Trunk F2 @gotochi @samnewman

  60. F1 Trunk F2 @gotochi @samnewman

  61. F1 Trunk F2 @gotochi @samnewman

  62. F1 Trunk F2 we are deferring integration! @gotochi @samnewman

  63. Pain of merge = fn ( size_of_merge, duration_since_last_merge) @gotochi @samnewman

  64. Big merges = commit race! @gotochi @samnewman

  65. Merging refactoring is *really* hard @gotochi @samnewman

  66. Option 3: @gotochi @samnewman

  67. Option 3: Check in anyway @gotochi @samnewman

  68. Option 3: Check in anyway err…wat? @gotochi @samnewman

  69. Trunk-based development @gotochi @samnewman

  70. Everyone integrates into trunk @gotochi @samnewman

  71. Trunk @gotochi @samnewman

  72. Trunk @gotochi @samnewman

  73. integrate often… Trunk @gotochi @samnewman

  74. integrate often… …fast feedback… Trunk @gotochi @samnewman

  75. integrate often… …fast feedback… …break up merge pain Trunk @gotochi @samnewman

  76. integrate often… …fast feedback… …break up merge pain Trunk err…but what about half-finished features? @gotochi @samnewman

  77. Feature Toggles @gotochi @samnewman

  78. Feature Toggles Hide the partially implemented feature in the running system @gotochi @samnewman

  79. … super_widget = off … @gotochi @samnewman

  80. … … super_widget = off super_widget = on … … @gotochi @samnewman

  81. … … super_widget = off super_widget = on … … super widget! @gotochi @samnewman

  82. … … super_widget = off super_widget = on … … $. run -Dsuper_widget=on super widget! @gotochi @samnewman

  83. … … super_widget = off super_widget = on … … $. run -Dsuper_widget=on super widget! @gotochi @samnewman

  84. But what about changes to existing functionality? @gotochi @samnewman

  85. @gotochi @samnewman

  86. Hypersonic Persistence Hypersonic @gotochi @samnewman

  87. Hypersonic Persistence Hypersonic Postgres @gotochi @samnewman

  88. Hypersonic Persistence Hypersonic Postgres @gotochi @samnewman

  89. Hypersonic Persistence shipping every two weeks… Hypersonic Postgres @gotochi @samnewman

  90. Hypersonic Generic SQL Persistence Persistence shipping every two weeks… Hypersonic Postgres @gotochi @samnewman

  91. Persistence Interface Hypersonic Generic SQL Persistence Persistence shipping every two weeks… Hypersonic Postgres @gotochi @samnewman

  92. Persistence Interface Hypersonic Generic SQL Persistence Persistence shipping every two weeks… Hypersonic Postgres @gotochi @samnewman

  93. Persistence Interface Hypersonic Generic SQL Persistence Persistence shipping every two weeks… Hypersonic Postgres @gotochi @samnewman

  94. Persistence Interface Hypersonic Generic SQL Persistence Persistence shipping every two weeks… Hypersonic Postgres @gotochi @samnewman

  95. Persistence Interface Hypersonic Generic SQL Persistence Persistence shipping every two weeks… Hypersonic Postgres @gotochi @samnewman

  96. Persistence Interface Generic SQL Persistence shipping every two weeks… Postgres @gotochi @samnewman

  97. @gotochi @samnewman

  98. Feature Branching @gotochi @samnewman

  99. Feature Branching Branch-by abstraction @gotochi @samnewman

  100. Important Rules: @gotochi @samnewman

Recommend


More recommend