From 100 to 1000+ deployments a day [PSConfAsia edition]

From 100 to 1000+ deployments a day [PSConfAsia edition]

At @PSConfAsia I spoke about what business processes (and mindset) needed to change in order for us to grow from ~100 to 1,000+ deployments a day.

C1d39cd3809e83af7958c6f45fa3c4f2?s=128

Pat Hermens

October 19, 2018
Tweet

Transcript

  1. None
  2. Powershell quick starts, tutorials, API reference, and code examples! Advance

    your career with hands-on training at docs.microsoft Check it out here:
  3. We really do! Show some love and join the conversation

    by tweeting @MicrosoftTech
  4. From 100 to 1,000+ deployments What does it take to

    get to the next level?
  5. Pat Hermens Development Manager Coding since VB6 was a thing...

    Father & husband Rotterdam, Netherlands @phermens
  6. None
  7. Why 1,000+ deployments/day?

  8. 8 @phermens ¯\_(ツ)_/¯

  9. 9 @phermens “It depends”

  10. 10 @phermens YAGNI & KISS

  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. 100 / 1,000 / 10,000; so what?

  19. http://www.cs.utexas.edu/users/ewd/ewd02xx/ewd249.pdf

  20. … Apparently we are too much trained to disregard differences

    in scale, to treat them as “gradual differences that are not essential.” We tell ourselves that what we can do once, we can also do twice and by induction, we fool ourselves into believing that we can do it as many times as needed, but this is just not true! ...
  21. ... A one-year old child will crawl on all fours

    with a speed of, say, one mile per hour. But a speed of a thousand miles per hour is that of a supersonic jet. Considered as objects with moving ability the child and the jet are incomparable, for whatever one can do the other cannot and vice versa. — Edsger Dijkstra, 1969
  22. None
  23. Prerequisites...

  24. None
  25. 25 @phermens The “faster to master” checklist Developing ⬜ Coding

    guidelines ⬜ Code reviews ⬜ Code analysis ⬜ Short-lived branches ⬜ Feature toggles Monitoring ⬜ Defined key metrics ⬜ Measure – create dashboards ⬜ Proactivity – add alerting (& act!) Testing ⬜ Unit tests ⬜ Module tests ⬜ Integration tests ⬜ End-to-end tests ⬜ Test automation Deploying ⬜ Continuous Integration ⬜ Continuous Delivery ⬜ Infrastructure as Code
  26. 26 @phermens Developing ☑ Coding guidelines ☑ Code reviews ☑

    Code analysis ☑ Short-lived branches ☑ Feature toggles Monitoring ☑ Defined key metrics ☑ Measure – create dashboards ☑ Proactivity – add alerting (& act!) Testing ☑ Unit tests ☑ Module tests ☑ Integration tests ☑ End-to-end tests ☑ Test automation Deploying ☑ Continuous Integration ☑ Continuous Delivery ☑ Infrastructure as Code The “faster to master” checklist
  27. 27 @phermens Developing ☑ Coding guidelines ☑ Code reviews ☑

    Code analysis ☑ Short-lived branches ☑ Feature toggles Monitoring ☑ Defined key metrics ☑ Measure – create dashboards ☑ Proactivity – add alerting (& act!) Testing ☑ Unit tests ☑ Module tests ☑ Integration tests ☑ End-to-end tests ☑ Test automation Deploying ☑ Continuous Integration ☑ Continuous Delivery ☑ Infrastructure as Code The “faster to master” checklist
  28. Story time!

  29. Responsibility Autonomy Failure Ownership

  30. Responsibility Autonomy Failure Ownership

  31. Responsibility

  32. 32 @phermens Hosting & Deployment “DevOps”

  33. 33 @phermens Hosting & Deployment “DevOps” Team A Team D

    Team B Team C
  34. 34 @phermens Hosting & Deployment “DevOps” Team A Team D

    Team F Team B Team C Team E
  35. 35 @phermens Hosting & Deployment “DevOps” Team A Team D

    Team F Team B Team C Team E
  36. 36 @phermens Hosting & Deployment “DevOps” Team H Team A

    Team D Team G Team E Team J Team F Team B Team I Team C
  37. 37 @phermens Hosting & Deployment “DevOps” Team H Team A

    Team D Team G Team E Team J Team F Team B Team I Team C
  38. 38 @phermens Hosting & Deployment “DevOps” Team H Team A

    Team D Team G Team E Team J Team F Team B Team I Team C
  39. 39 @phermens Hosting & Deployment “DevOps” Team H Team A

    Team D Team G Team E Team J Team F Team B Team I Team C
  40. 40 @phermens Hosting & Deployment “DevOps” Team H Team A

    Team D Team G Team E Team J Team F Team B Team I Team C
  41. 41 @phermens Team H Team A Team C Team G

    Team E Team J Team F Team B Team I Team C Team D Team L Hosting & Deploy- ment
  42. 42 @phermens

  43. 43 @phermens

  44. 44 @phermens

  45. Responsibility Autonomy Failure Ownership

  46. Responsibility Autonomy Failure Ownership

  47. Autonomy

  48. Autonomy

  49. 49 @phermens Serilog + Splunk + DataDog

  50. None
  51. None
  52. None
  53. None
  54. None
  55. Autonomy

  56. None
  57. 57 @phermens

  58. 58 @phermens

  59. 59 @phermens

  60. 60 @phermens

  61. 61 @phermens

  62. 62 @phermens

  63. 63 @phermens UDP

  64. 64 @phermens UDP

  65. 65 @phermens UDP

  66. 66 @phermens UDP

  67. 67 @phermens UDP

  68. 68 @phermens

  69. 69 @phermens TCP

  70. 70 @phermens TCP

  71. 71 @phermens

  72. 72 @phermens

  73. 73 @phermens

  74. 74 @phermens

  75. 75 @phermens

  76. 76 @phermens

  77. 77 @phermens

  78. 78 @phermens

  79. Responsibility Autonomy Failure Ownership

  80. Responsibility Autonomy Failure Ownership

  81. 81 @phermens Ownership

  82. 82 @phermens Build System

  83. 83 @phermens

  84. 84 @phermens

  85. 85 @phermens Development team tooling choices

  86. 86 @phermens Infrastructure team tooling choices

  87. 87 @phermens

  88. 88 @phermens What’s next?

  89. 89 @phermens What’s next? ?

  90. 90 @phermens ¯\_(ツ)_/¯

  91. 91 @phermens

  92. Responsibility Autonomy Failure Ownership

  93. Responsibility Autonomy Failure Ownership

  94. 94 @phermens Fail early, fail often, but always fail forward.

  95. 95 @phermens Failure

  96. 96 @phermens

  97. 97 @phermens

  98. None
  99. None
  100. None
  101. None
  102. 102 @phermens

  103. None
  104. None
  105. None
  106. None
  107. None
  108. None
  109. None
  110. None
  111. None
  112. None
  113. None
  114. None
  115. None
  116. None
  117. None
  118. None
  119. 119 @phermens

  120. 120 @phermens

  121. None
  122. 122 @phermens #war-room

  123. 123 @phermens

  124. Responsibility Autonomy Failure Ownership

  125. Responsibility Autonomy Failure Ownership

  126. 126 @phermens The “100 to 1,000” checklist Responsibility ⬜ Can

    I control my deployments? ⬜ Have I removed all bottlenecks? ⬜ Do I have good support systems? ⬜ Am I collaborating with my peers? Autonomy ⬜ Freedom to innovate/improve? ⬜ Am I in control and independent? ⬜ Can I find out what went wrong? ⬜ Do I have the skills to fix it? Ownership ⬜ Agreed interfaces or contracts? ⬜ Out-of-the-box solutions? ⬜ Tooling is 100% automated? ⬜ Local build == “Production” build? Failure ⬜ Monitoring = Alerting = Action ⬜ Take pride in improving ⬜ Small deliverables, quickly ⬜ Non-blocking deployments
  127. Questions?

  128. Checklists!

  129. 129 @phermens The “faster to master” checklist Developing ⬜ Coding

    guidelines ⬜ Code reviews ⬜ Code analysis ⬜ Short-lived branches ⬜ Feature toggles Monitoring ⬜ Defined key metrics ⬜ Measure – create dashboards ⬜ Proactivity – add alerting (& act!) Testing ⬜ Unit tests ⬜ Module tests ⬜ Integration tests ⬜ End-to-end tests ⬜ Test automation Deploying ⬜ Continuous Integration ⬜ Continuous Delivery ⬜ Infrastructure as Code
  130. 130 @phermens The “100 to 1,000” checklist Responsibility ⬜ Can

    I control my deployments? ⬜ Have I removed all bottlenecks? ⬜ Do I have good support systems? ⬜ Am I collaborating with my peers? Autonomy ⬜ Freedom to innovate/improve? ⬜ Am I in control and independent? ⬜ Can I find out what went wrong? ⬜ Do I have the skills to fix it? Ownership ⬜ Agreed interfaces or contracts? ⬜ Out-of-the-box solutions? ⬜ Tooling is 100% automated? ⬜ Local build == “Production” build? Failure ⬜ Monitoring = Alerting = Action ⬜ Take pride in improving ⬜ Small deliverables, quickly ⬜ Non-blocking deployments
  131. https://sddconf.com/brands/sdd/library/DOLLARD-Debugging.pdf

  132. 132 @phermens Thanks! https://hermens.com.au @phermens

  133. 133 @phermens