Pro Yearly is on sale from $80 to $50! »

From 100 to 1,000+ deployments a day! [Techorama Edition]

From 100 to 1,000+ deployments a day! [Techorama Edition]

At Techorama Belgium, I presented the story of Coolblue, and more importantly, a few examples of what it took for us to go from 100, to 1,000+ deployments a day; a change in mindset, responsibilities and ownership.

C1d39cd3809e83af7958c6f45fa3c4f2?s=128

Pat Hermens

May 24, 2018
Tweet

Transcript

  1. None
  2. From 100 to 1,000+ deployments a day Pat Hermens @phermens

  3. From 100 to 1,000+ deployments What does it take to

    get to the next level?
  4. Pat Hermens Currently Development Manager Coding for 15+ years Father

    & husband Rotterdam
  5. 5 @phermens

  6. None
  7. None
  8. Why 1,000+ deployments/day?

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

  10. 10 @phermens “It depends”

  11. 11 @phermens YAGNI & KISS

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

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

  21. … 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! ...
  22. ... 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
  23. None
  24. Prerequisites...

  25. None
  26. 26 @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
  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. 28 @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 ☑
  29. 29 @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
  30. None
  31. Story time!

  32. Responsibility Autonomy Failure Ownership

  33. Responsibility Autonomy Failure Ownership

  34. Responsibility

  35. 35 @phermens Hosting & Deployment “DevOps”

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

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

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

    Team F Team B Team C Team E
  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 Hosting & Deployment “DevOps” Team H Team A

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

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

    Team D Team G Team E Team J Team F Team B Team I Team C
  44. 44 @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 Team K
  45. 45 @phermens

  46. 46 @phermens Sorry Kasey!

  47. 47 @phermens

  48. Responsibility Autonomy Failure Ownership

  49. Responsibility Autonomy Failure Ownership

  50. Autonomy

  51. 51 @phermens

  52. 52 @phermens Log4Net + RDP

  53. 53 @phermens Serilog + Splunk + DataDog

  54. None
  55. None
  56. None
  57. None
  58. Responsibility Autonomy Failure Ownership

  59. Responsibility Autonomy Failure Ownership

  60. 60 @phermens Ownership

  61. 61 @phermens Build System

  62. 62 @phermens

  63. 63 @phermens

  64. 64 @phermens Development team tooling choices

  65. 65 @phermens Infrastructure team tooling choices

  66. 66 @phermens

  67. 67 @phermens What’s next?

  68. 68 @phermens ? What’s next?

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

  70. 70 @phermens

  71. Responsibility Autonomy Failure Ownership

  72. Responsibility Autonomy Failure Ownership

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

  74. 74 @phermens Failure

  75. 75 @phermens

  76. None
  77. None
  78. None
  79. None
  80. 80 @phermens

  81. None
  82. 82 @phermens

  83. 83 @phermens

  84. None
  85. 85 @phermens #war-room

  86. 86 @phermens

  87. Responsibility Autonomy Failure Ownership

  88. Responsibility Autonomy Failure Ownership

  89. Questions? If not, drinks follow this talk!

  90. Checklists!

  91. 91 @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
  92. 92 @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
  93. https://sddconf.com/brands/sdd/library/DOLLARD-Debugging.pdf

  94. 94 @phermens Thanks https://hermens.com.au @phermens

  95. https://hermens.com.au pat@coolblue.nl Pat Hermens @phermens Thanks!