Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

10 tips for failing at microservices @ DevExperience 2018

443 visualizaciones

Publicado el

Microservices are just a bunch hip new framework plus some AngularJS frontend or React, right? So, if you want to make sure that you absolutely and definitely fail at your Microservice project, then watch this talk and learn how.

Using real world experience from multiple green field and brown field projects, I can show you: - how to ignore the mandatory organizational impact - how to focus on the code only without any regard towards ops and testing - continuous deployment is for losers. Real projects use their meat cloud for delivery - jumping onto every new and untested framework is a must - EventSourcing and CQRS are both free lunches. So, you can add complexity without any real need - ...and more

If you mind my tips, then surely you will fail at Microservices and your boss will never again try to move away from your beloved vintage monolith.

Publicado en: Tecnología
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

10 tips for failing at microservices @ DevExperience 2018

  1. 1. @koenighotze#DevExperience18 #10TipsMicroservices 10 (or so) tips for failing at microservices - badly
  2. 2. @koenighotze#DevExperience18 #10TipsMicroservices David Schmitz Senacor Technologies @koenighotze
  3. 3. @koenighotze#DevExperience18 #10TipsMicroservices Disclaimer(s)
  4. 4. @koenighotze#DevExperience18 #10TipsMicroservices Anecdote IS NOT Evidence
  5. 5. @koenighotze#DevExperience18 #10TipsMicroservices Your boss wants to modernise You don’t want to modernise Things to do to sabotage your project
  6. 6. @koenighotze#DevExperience18 #10TipsMicroservices …your Bossreads about microservices?
  7. 7. @koenighotze#DevExperience18 #10TipsMicroservices Extreme agile cloud native digital microservices! Disrupt or be disrupted! Sounds awesome. And cloud and agile equal good?!? Industry 4.0! FTW!
  8. 8. @koenighotze#DevExperience18 #10TipsMicroservices “IT People! Make it happen! Build me some microservices”
  9. 9. @koenighotze#DevExperience18 #10TipsMicroservices What the hell is a microservice and why should I care?
  10. 10. @koenighotze#DevExperience18 #10TipsMicroservices Microservices Single bounded context UI and services Independent Self-contained Local storage Share nothing User Interface Services Persistence Operations
  11. 11. @koenighotze#DevExperience18 #10TipsMicroservices TLDR;User Interface Services Persistence Operations Too lazy to actually read all this stuff…looks boring and I want to look at funny cat pics.
  12. 12. @koenighotze#DevExperience18 #10TipsMicroservices Do you prefer change… https://flic.kr/p/bVPzUE
  13. 13. @koenighotze#DevExperience18 #10TipsMicroservices https://flic.kr/p/bajCVX …or rest?
  14. 14. @koenighotze#DevExperience18 #10TipsMicroservices Sabotage countdown
  15. 15. @koenighotze#DevExperience18 #10TipsMicroservices Go full scale polyglot
  16. 16. @koenighotze#DevExperience18 #10TipsMicroservices Where is Waldo?
  17. 17. @koenighotze#DevExperience18 #10TipsMicroservices
  18. 18. @koenighotze#DevExperience18 #10TipsMicroservices William-Wallace-Tribute-team! Groundhog code Maintenance field trips Synergies: polyglot UI with beta status Find new friends on Stackoverflow Governance and moderation are for cowards
  19. 19. @koenighotze#DevExperience18 #10TipsMicroservices Still successful?
  20. 20. @koenighotze#DevExperience18 #10TipsMicroservices Semantic Versioning Major.Minor.BugfixMajor.Minor.BugfixMajor.Minor.BugfixMajor.Minor.Bugfix Semantic Versioning
  21. 21. @koenighotze#DevExperience18 #10TipsMicroservices $ npm ls | grep @0
  22. 22. @koenighotze#DevExperience18 #10TipsMicroservices ui-broker@0.1.0 │ ├─┬ fbjs@0.8.8 │ │ │ ├─┬ encoding@0.1.12 │ │ │ │ └── iconv-lite@0.4.15 │ │ └── ua-parser-js@0.7.12 ├─┬ react-scripts@0.8.5 │ │ ├── normalize-range@0.1.2 │ │ │ │ └── json5@0.5.1 │ │ │ └── …
  23. 23. @koenighotze#DevExperience18 #10TipsMicroservices Polyglot?
  24. 24. @koenighotze#DevExperience18 #10TipsMicroservices Polyglot? thx @Codepitbull
  25. 25. @koenighotze#DevExperience18 #10TipsMicroservices The data monolith (c) Disney Corporation
  26. 26. @koenighotze#DevExperience18 #10TipsMicroservices
  27. 27. @koenighotze#DevExperience18 #10TipsMicroservices Credit Account Payment Expensive enterprise SQL Datastore
  28. 28. @koenighotze#DevExperience18 #10TipsMicroservices Credit Account Payment
  29. 29. @koenighotze#DevExperience18 #10TipsMicroservices Account name must be VARCHAR(200) instead of VARCHAR(50)
  30. 30. @koenighotze#DevExperience18 #10TipsMicroservices Credit Account
  31. 31. @koenighotze#DevExperience18 #10TipsMicroservices Sharing is a Good ThingTM Avoid table or schema ownership Ubiquitous domain modelling paralysis Keep people awake at night with insidious dependencies
  32. 32. @koenighotze#DevExperience18 #10TipsMicroservices The event monolith
  33. 33. @koenighotze#DevExperience18 #10TipsMicroservices Eventsourcing marketing pitch
  34. 34. @koenighotze#DevExperience18 #10TipsMicroservices Customer Homeaddress Updated Credit acquired New Customer Created … Direction of time Customer Credit Event Store
  35. 35. @koenighotze#DevExperience18 #10TipsMicroservices Audit trail - immutable history for free Distributed data management Decoupled microservices with CQRS …and much more!
  36. 36. @koenighotze#DevExperience18 #10TipsMicroservices ‘Das schöne Österreich’ will no longer be accepted as a country code
  37. 37. @koenighotze#DevExperience18 #10TipsMicroservices Country: “AU” Country: “Das schöne Österreich” … Direction of time Customer Event Store Credit
  38. 38. @koenighotze#DevExperience18 #10TipsMicroservices How to deal with shared code?
  39. 39. @koenighotze#DevExperience18 #10TipsMicroservices - C P*Windows version coming soon
  40. 40. @koenighotze#DevExperience18 #10TipsMicroservices Country: “AU” Country: “Das schöne Österreich” … Direction of time Customer Credit Event Store
  41. 41. @koenighotze#DevExperience18 #10TipsMicroservices 2 months later…
  42. 42. @koenighotze#DevExperience18 #10TipsMicroservices Customer Credit Reporting Accounting Profile Loan Trading Exchange Broker Purchase
  43. 43. @koenighotze#DevExperience18 #10TipsMicroservices WET is the new DRY Never question the design All systems should be eventsourced Eventual consistency = “Maybe consistent” Extra tip: Use Kafka for eventsourcing
  44. 44. @koenighotze#DevExperience18 #10TipsMicroservices The home grown monolith
  45. 45. @koenighotze#DevExperience18 #10TipsMicroservices – Carl Sagan (slightly paraphrased) “If you wish to make MICROSERVICES from scratch, you must first create a FRAMEWORK”
  46. 46. @koenighotze#DevExperience18 #10TipsMicroservices { "type": "NewCustomerCreated", "id": 1234, "payload": { } } CustomerAccount Reporting ES V1 ES V1 ES V1
  47. 47. @koenighotze#DevExperience18 #10TipsMicroservices The customer system needs special, non-numeric ids
  48. 48. @koenighotze#DevExperience18 #10TipsMicroservices Major.Minor.Bugfix
  49. 49. @koenighotze#DevExperience18 #10TipsMicroservices Customer V2 { "type": "NewCustomerCreated", "id": "1234-5678", "payload": { ... } } ES V2
  50. 50. @koenighotze#DevExperience18 #10TipsMicroservices And at runtime???
  51. 51. @koenighotze#DevExperience18 #10TipsMicroservices Change the world event
  52. 52. @koenighotze#DevExperience18 #10TipsMicroservices Customer V2Account Reporting ES V1 ES V1ES V2 { "type": "NewCustomerCreated", "id": "1234-5678", "payload": { ... } }
  53. 53. @koenighotze#DevExperience18 #10TipsMicroservices Customer V2Account V2 Reporting V2 ES V2 ES V2ES V2
  54. 54. @koenighotze#DevExperience18 #10TipsMicroservices Customer Account Reporting From independent releases
  55. 55. @koenighotze#DevExperience18 #10TipsMicroservices Customer Account Reporting to a release monolith Big bang
  56. 56. @koenighotze#DevExperience18 #10TipsMicroservices Day rates!
  57. 57. @koenighotze#DevExperience18 #10TipsMicroservices Dependencies as social tools Job insurance via invasive frameworks Building frameworks is fun! Ideas: collections, string-utils, logging, ORM, UI framework
  58. 58. @koenighotze#DevExperience18 #10TipsMicroservices No time to create a framework, but still want to leave your mark on the world?
  59. 59. @koenighotze#DevExperience18 #10TipsMicroservices 10/10/1999:21:15:05 +0500 Sep 19 16:27:49 2007-08-31 19:22:21.469 ADT 060516 22:38:54 Fri Sep 09 10:42:29.902022 2011
  60. 60. @koenighotze#DevExperience18 #10TipsMicroservices The meat cloud
  61. 61. @koenighotze#DevExperience18 #10TipsMicroservices Bonus hint: optimise your revenue!
  62. 62. @koenighotze#DevExperience18 #10TipsMicroservices W K P T
  63. 63. @koenighotze#DevExperience18 #10TipsMicroservices Who KNOWS how to do it?K P T Who WANTS it to be done? Who has the required PRIVILEGES? Who has TIME to actually do it?
  64. 64. @koenighotze#DevExperience18 #10TipsMicroservices Day rates!
  65. 65. @koenighotze#DevExperience18 #10TipsMicroservices Delivery pipeline Production
  66. 66. @koenighotze#DevExperience18 #10TipsMicroservices And the rest of the world?
  67. 67. @koenighotze#DevExperience18 #10TipsMicroservices Delivery pipeline Production Handcrafted with love Soulless automation
  68. 68. @koenighotze#DevExperience18 #10TipsMicroservices Cattle not pets?
  69. 69. @koenighotze#DevExperience18 #10TipsMicroservices Ask yourself: Whom do YOU love more?
  70. 70. @koenighotze#DevExperience18 #10TipsMicroservices Mr. Wiskers Walking steak
  71. 71. @koenighotze#DevExperience18 #10TipsMicroservices W Quickly…release a new Customer microservice K P T
  72. 72. @koenighotze#DevExperience18 #10TipsMicroservices Enter the DevOps TeamTM
  73. 73. @koenighotze#DevExperience18 #10TipsMicroservices Ops communication? P T W K P T
  74. 74. @koenighotze#DevExperience18 #10TipsMicroservices Tickets! P T W K P T
  75. 75. @koenighotze#DevExperience18 #10TipsMicroservices P T KW
  76. 76. @koenighotze#DevExperience18 #10TipsMicroservices P T W K P T
  77. 77. @koenighotze#DevExperience18 #10TipsMicroservices P T W K P T
  78. 78. @koenighotze#DevExperience18 #10TipsMicroservices …a few minutes later P T W K P T
  79. 79. @koenighotze#DevExperience18 #10TipsMicroservices
  80. 80. @koenighotze#DevExperience18 #10TipsMicroservices Infrastructure is expensive…be proud to take care of it Microsoft Word is some kind of automation Play the “we are not Google” card Combine with polyglot ops for maximum chaos
  81. 81. @koenighotze#DevExperience18 #10TipsMicroservices The distributed monolith
  82. 82. @koenighotze#DevExperience18 #10TipsMicroservices Customer AccountCredit Auth
  83. 83. @koenighotze#DevExperience18 #10TipsMicroservices Let’s offer a discount to new users
  84. 84. @koenighotze#DevExperience18 #10TipsMicroservices Customer AccountCredit Auth No problem! What the..?!?
  85. 85. @koenighotze#DevExperience18 #10TipsMicroservices Best of Both Worlds complexity + rigidity + fragility
  86. 86. @koenighotze#DevExperience18 #10TipsMicroservices The network is reliable Dependencies indicate good design, like in dependency injection A system stable as concrete sounds good Synchronous dependencies are easy What is half a system good for, anyway? So avoid Circuit breakers
  87. 87. @koenighotze#DevExperience18 #10TipsMicroservices The SPA monolith
  88. 88. @koenighotze#DevExperience18 #10TipsMicroservices Customer REST Credit RESTAccount REST Sophisticated portal frontend
  89. 89. @koenighotze#DevExperience18 #10TipsMicroservices Add a mandatory social-number field to the customer
  90. 90. @koenighotze#DevExperience18 #10TipsMicroservices But not that mandatory. E.g. if the customer is not committed, yet
  91. 91. @koenighotze#DevExperience18 #10TipsMicroservices Customer Domain Credit DomainAccount Domain Comprehensive UI Domain Model
  92. 92. @koenighotze#DevExperience18 #10TipsMicroservices Where should the logic go?
  93. 93. @koenighotze#DevExperience18 #10TipsMicroservices
  94. 94. @koenighotze#DevExperience18 #10TipsMicroservices Advantage?
  95. 95. @koenighotze#DevExperience18 #10TipsMicroservices Customer REST Credit RESTAccount REST
  96. 96. @koenighotze#DevExperience18 #10TipsMicroservices UI-driven monolith Customer Domain Credit DomainAccount Domain Sophisticated portal frontend
  97. 97. @koenighotze#DevExperience18 #10TipsMicroservices Microservices are REST only (hint: service!) Avoid techniques like UI composition or self-contained-systems Keep the testers busy with side effects Single point of failure - blame the script kids working on the UI
  98. 98. @koenighotze#DevExperience18 #10TipsMicroservices The decision monolith
  99. 99. @koenighotze#DevExperience18 #10TipsMicroservices “But we need Java 7…it is 2018 after all!”
  100. 100. @koenighotze#DevExperience18 #10TipsMicroservices Beware developer madness
  101. 101. @koenighotze#DevExperience18 #10TipsMicroservices Agile Rx Microservice Actors Augmented realityCloud AWS WebRTC IoT Blockchain
  102. 102. @koenighotze#DevExperience18 #10TipsMicroservices Architecture & Design Sieve of Sanity
  103. 103. @koenighotze#DevExperience18 #10TipsMicroservices JEE WebSphere Agile Rx Microservice Actors Augmented realityCloud AWS WebRTC IoT Blockchain
  104. 104. @koenighotze#DevExperience18 #10TipsMicroservices Frustrate your coworkers Irritate motivated colleagues If you are older than 30…play the “This is _real_ enterprise, kid” card Ivory towers are beautiful
  105. 105. @koenighotze#DevExperience18 #10TipsMicroservices The business monolith
  106. 106. @koenighotze#DevExperience18 #10TipsMicroservices So, don’t bother explaining anything! Business people cannot understand complex any architecture
  107. 107. @koenighotze#DevExperience18 #10TipsMicroservices Credit Account Payment … … … Product Toolset Something
  108. 108. @koenighotze#DevExperience18 #10TipsMicroservices Let’s force the user to always enter a valid address
  109. 109. @koenighotze#DevExperience18 #10TipsMicroservices No, the customer should be able to enter partial addresses
  110. 110. @koenighotze#DevExperience18 #10TipsMicroservices Product Toolset Something ?????
  111. 111. @koenighotze#DevExperience18 #10TipsMicroservices Requirements Ping Pong
  112. 112. @koenighotze#DevExperience18 #10TipsMicroservices Change management
  113. 113. @koenighotze#DevExperience18 #10TipsMicroservices Requirements management
  114. 114. @koenighotze#DevExperience18 #10TipsMicroservices Day rates!
  115. 115. @koenighotze#DevExperience18 #10TipsMicroservices Bonus: works with ops, too
  116. 116. @koenighotze#DevExperience18 #10TipsMicroservices Credit Account Payment … … … Product Toolset Something What the…? Whatever…just deploy everything
  117. 117. @koenighotze#DevExperience18 #10TipsMicroservices Development Ops Business Waterscrumfall
  118. 118. @koenighotze#DevExperience18 #10TipsMicroservices Avoid X-functional teams Slow means more time for Twitter! The servant of many kings is a free man Conway’s law works both ways
  119. 119. @koenighotze#DevExperience18 #10TipsMicroservices The staffing monolith
  120. 120. @koenighotze#DevExperience18 #10TipsMicroservices It is easier to search for React developers than for general craftswomen
  121. 121. @koenighotze#DevExperience18 #10TipsMicroservices Frontend Development Service Development DevOps Team Test Business
  122. 122. @koenighotze#DevExperience18 #10TipsMicroservices But…why?
  123. 123. @koenighotze#DevExperience18 #10TipsMicroservices Frequent Flyer Program Rail-Bonus Program Hotel Credit Points
  124. 124. @koenighotze#DevExperience18 #10TipsMicroservices Dysfunctional setup in 3 easy steps
  125. 125. @koenighotze#DevExperience18 #10TipsMicroservices Step 1 How to do X-team communication?
  126. 126. @koenighotze#DevExperience18 #10TipsMicroservices Magic Specification Success Template
  127. 127. @koenighotze#DevExperience18 #10TipsMicroservices Step 2 Protect the teams
  128. 128. @koenighotze#DevExperience18 #10TipsMicroservices Frontend Microservice Service Microservice Persistence Stuff Team A Team B Team C
  129. 129. @koenighotze#DevExperience18 #10TipsMicroservices Step 3 Establish bureaucracy
  130. 130. @koenighotze#DevExperience18 #10TipsMicroservices The frontend team The service team The database guys “Product Owner” “Product Owner” “Product Owner”
  131. 131. @koenighotze#DevExperience18 #10TipsMicroservices Day rates!
  132. 132. @koenighotze#DevExperience18 #10TipsMicroservices But…what if this works?
  133. 133. @koenighotze#DevExperience18 #10TipsMicroservices Enter the fakeholder!
  134. 134. @koenighotze#DevExperience18 #10TipsMicroservices
  135. 135. @koenighotze#DevExperience18 #10TipsMicroservices shadow product owner proxy product owner
  136. 136. @koenighotze#DevExperience18 #10TipsMicroservices “Product Owner” “UX Product Owner” “Back Product Owner” “Business Owner” “Product Owner” “Product Owner” Doesn’t care Cannot decide
  137. 137. @koenighotze#DevExperience18 #10TipsMicroservices Even sounds “agile”!
  138. 138. @koenighotze#DevExperience18 #10TipsMicroservices Technical benefits?
  139. 139. @koenighotze#DevExperience18 #10TipsMicroservices Nice Digital Click UI Boring HTTP Things Persistence Stuff Shared stability Shared release Convoluted domains
  140. 140. @koenighotze#DevExperience18 #10TipsMicroservices Programmers do not like other people Play “find the domain” “War rooms” sound really important Avoid real ownership
  141. 141. @koenighotze#DevExperience18 #10TipsMicroservices And: In case of bugs…
  142. 142. @koenighotze#DevExperience18 #10TipsMicroservices …it’s always the other team’s fault!
  143. 143. @koenighotze#DevExperience18 #10TipsMicroservices The prescriptive cloud
  144. 144. @koenighotze#DevExperience18 #10TipsMicroservices Agility Flexibility Scale as you grow Use what you need
  145. 145. @koenighotze#DevExperience18 #10TipsMicroservices One Size Fits All Cloud The
  146. 146. @koenighotze#DevExperience18 #10TipsMicroservices One Size Fits All Cloud The
  147. 147. @koenighotze#DevExperience18 #10TipsMicroservices Rails TODO app
  148. 148. @koenighotze#DevExperience18 #10TipsMicroservices 200 users now… …but we might become the next Google
  149. 149. @koenighotze#DevExperience18 #10TipsMicroservices Enter the DevOps TeamTM
  150. 150. @koenighotze#DevExperience18 #10TipsMicroservices Revenge of the CloudOps TeamTM
  151. 151. @koenighotze#DevExperience18 #10TipsMicroservices
  152. 152. @koenighotze#DevExperience18 #10TipsMicroservices Docker Rails TODO app
  153. 153. @koenighotze#DevExperience18 #10TipsMicroservices Node Pod Docker Rails TODO app EtcdService FEK Volume Pod Docker Rails TODO app
  154. 154. @koenighotze#DevExperience18 #10TipsMicroservices VPC Security groupCloudwatch ELB IAMEBS EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 What I actually care about
  155. 155. @koenighotze#DevExperience18 #10TipsMicroservices [610420.800771] kube-state-metr invoked oom-killer: gfp_mask=0x24000c0, order=0, oom_score_adj=-998 [610420.805428] kube-state-metr cpuset=32c394ad4709430cddb71194ea406d598b82159c2715d42b64927ac5e67f0228 mems_allowed=0 [610420.810504] CPU: 3 PID: 9403 Comm: kube-state-metr Tainted: G E 4.4.65-k8s #1 [610420.813712] Hardware name: Xen HVM domU, BIOS 4.2.amazon 11/11/2016 [610420.813712] 0000000000000286 00000000c5185d6f ffffffff812f67b5 ffff8803e7163e20 [610420.813712] ffff8803e71c8400 ffffffff811d8855 ffffffff81826173 ffff8803e71c8400 [610420.813712] ffffffff81a6b740 0000000000000206 0000000000000002 ffff880308bbf438 [610420.813712] Call Trace: [610420.813712] [<ffffffff812f67b5>] ? dump_stack+0x5c/0x77 [610420.813712] [<ffffffff811d8855>] ? dump_header+0x62/0x1d7 [610420.813712] [<ffffffff8116ded1>] ? oom_kill_process+0x211/0x3d0 [610420.813712] [<ffffffff811d0f4f>] ? mem_cgroup_iter+0x1cf/0x360 [610420.813712] [<ffffffff811d2de3>] ? mem_cgroup_out_of_memory+0x283/0x2c0 [610420.813712] [<ffffffff811d3abd>] ? mem_cgroup_oom_synchronize+0x32d/0x340 [610420.813712] [<ffffffff811cf170>] ? mem_cgroup_begin_page_stat+0x90/0x90 [610420.813712] [<ffffffff8116e5b4>] ? pagefault_out_of_memory+0x44/0xc0 [610420.813712] [<ffffffff815a65b8>] ? page_fault+0x28/0x30 [610426.700118] Task in /kubepods/pod401c0ec6-97d9-11e7-adb9-021e5eba15b7/32c394ad4709430cddb71194ea406d598b82159 [610426.711591] memory: usage 16384kB, limit 16384kB, failcnt 629216 [610426.715097] memory+swap: usage 0kB, limit 9007199254740988kB, failcnt 0 [610426.719063] kmem: usage 0kB, limit 9007199254740988kB, failcnt 0 [610426.722823] Memory cgroup stats for /kubepods/pod401c0ec6-97d9-11e7-adb9-021e5eba15b7: cache:0KB rss:0KB rss_huge:0KB [610426.749544] Memory cgroup stats for /kubepods/pod401c0ec6-97d9-11e7-adb9-021e5eba15b7/32c394ad4709430cddb71194ea406d598b82159c2715d42b64927ac5e67f0228: [610426.765166] [ pid ] uid tgid total_vm rss nr_ptes nr_pmds swapents oom_score_adj name [610426.769304] [ 7288] 0 7288 257 1 4 2 0 -998 pause [610426.773553] [20340] 0 20340 11395 7113 27 5 0 -998 kube-state-metr [610426.778753] Memory cgroup out of memory: Kill process 20340 (kube-state-metr) score 769 or sacrifice child … … Approx. 3 billion lines of garbage logs to analyse for fun
  156. 156. @koenighotze#DevExperience18 #10TipsMicroservices [610426.778753] Memory cgroup out of memory: Kill process 20340 (kube-state-metr) score 769 or sacrifice child
  157. 157. @koenighotze#DevExperience18 #10TipsMicroservices PolyWTF works for ops
  158. 158. @koenighotze#DevExperience18 #10TipsMicroservices
  159. 159. @koenighotze#DevExperience18 #10TipsMicroservices Be proud of complexity, we are engineers for a reason Ops tooling puts JavaScript to shame If Twitter runs on it, so should you Combine with Meat cloud
  160. 160. @koenighotze#DevExperience18 #10TipsMicroservices Bonus: speedboats and tankers https://commons.wikimedia.org/wiki/User:Arria_Belli/Salut
  161. 161. @koenighotze#DevExperience18 #10TipsMicroservices “We need 24x7 availability!”
  162. 162. @koenighotze#DevExperience18 #10TipsMicroservices “…but the host is down 4h per week?”
  163. 163. @koenighotze#DevExperience18 #10TipsMicroservices The Bi-modal idea System of RecordSystems of Engagement
  164. 164. @koenighotze#DevExperience18 #10TipsMicroservices Bi-modal architecture System of RecordSystems of Engagement
  165. 165. @koenighotze#DevExperience18 #10TipsMicroservices Wall of innovation System of RecordSystems of Engagement
  166. 166. @koenighotze#DevExperience18 #10TipsMicroservices Awesome speedboats Speed boat Speed boat Speed boat Dirty old legacy system System of RecordSystems of Engagement
  167. 167. @koenighotze#DevExperience18 #10TipsMicroservices Ignore reality System of RecordSystems of Engagement Speed boat Speed boat Speed boat Things you need written by people you don’t know and don’t like
  168. 168. @koenighotze#DevExperience18 #10TipsMicroservices Speedboat Speedboat Dirty backend Big bang Speedboat Speedboat Fast release with speedboats? Speedboat Speedboat Speedboat Speedboat 1.3.18 1.4.18
  169. 169. @koenighotze#DevExperience18 #10TipsMicroservices Speedboat Speedboat Big bang Speedboat Speedboat Hold my beer Speedboat Speedboat Speedboat Speedboat 1.3.18 1.4.18 Dirty backend everybody depends on 1.1.35 Big bang
  170. 170. @koenighotze#DevExperience18 #10TipsMicroservices Result… Dirty old legacy system New Landscape
  171. 171. @koenighotze#DevExperience18 #10TipsMicroservices Very New Landscape New Landscape …5 years later Dirty old legacy system
  172. 172. @koenighotze#DevExperience18 #10TipsMicroservices Very New Landscape …5 years later Dirty old legacy system New Landscape Techstack hipness gradient People deprecation gradient
  173. 173. @koenighotze#DevExperience18 #10TipsMicroservices Refactoring is hard, just do not do it Maintain yet another system Avoid internal knowledge and build external skills Distinguish between cool devs and not-so-cool ones…openly Create a hostile environment of suspicion and distrust
  174. 174. @koenighotze#DevExperience18 #10TipsMicroservices Wrapping up….
  175. 175. @koenighotze#DevExperience18 #10TipsMicroservices The key to failure is the hidden monolith
  176. 176. @koenighotze#DevExperience18 #10TipsMicroservices Microservices are hard
  177. 177. @koenighotze#DevExperience18 #10TipsMicroservices Brownfield - The perfect excuse
  178. 178. @koenighotze#DevExperience18 #10TipsMicroservices Never involve ops or business
  179. 179. @koenighotze#DevExperience18 #10TipsMicroservices Embrace the monolith both in mind and way of working
  180. 180. @koenighotze#DevExperience18 #10TipsMicroservices Thank you! Questions? Disagree? Let’s talk! @Koenighotze

×