Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Architecting for Scale

Architecting for Scale

At Vienna 2024

SQUER Solutions

May 18, 2024
Tweet

More Decks by SQUER Solutions

Other Decks in Programming

Transcript

  1. @duffleit 📦 👧 🧑 👧 🧑 👧 🔥 Safely and

    sustainably reduce lead time to thank you. — Daniel Terhorst-North
  2. @duffleit 👧 🧑 👧 🧑 🧑 👧 Program complexity grows

    until it exceeds the capabilities of the programmer who must maintain it. — one of Lehman's laws
  3. @duffleit “Sadly, architecture has been undervalued for so long that

    many engineers regard life with a Big Ball of Mud as normal.“ Foote & Yoder
  4. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

    Of Mud Distributed MOnolith WelL-Structured MOdulith
  5. @duffleit There is a multitude of reasons to go for

    Distributed Systems. Modularisation is none of them.
  6. @duffleit If you can’t build a well-structured monolith, what makes

    you think microservices are the answer? Simon Brown
  7. @duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑
  8. @duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 🔥
  9. @duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 🔥 🔥 🔥
  10. @duffleit Independant Deployment Units 👧 🧑 🧑 👧 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑
  11. @duffleit Independant Deployment Units 👧 🧑 🧑 👧 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Resilience 🔥
  12. @duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 📦
  13. @duffleit Independant Deployment Units 👧 🧑 🧑 👧 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 📦 📦 📦 📦 📦 📦 Independent Deployability
  14. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services
  15. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
  16. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
  17. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
  18. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
  19. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
  20. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty
  21. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty Availability
  22. @duffleit What’s the difference between a method call within a

    single deployment unit Deployment Unit Module A Module B moduleB.createUser() fun createUser() { /*...*/ }
  23. @duffleit What’s the difference between a method call within a

    single deployment unit, and a method call across multiple deployment units. Deployment Unit Deployment Unit Service A Service B restClient.user() fun createUser() { /*...*/ }
  24. @duffleit What’s the difference between a method call within a

    single deployment unit, and a method call across multiple deployment units. Everything.
  25. @duffleit within a single deployment unit Deployment Unit Module A

    Module B moduleB.createUser() fun createUser() { /*...*/ }
  26. @duffleit within a single deployment unit Deployment Unit Module A

    Module B moduleB.createUser() fun createUser() { /*...*/ } ✅
  27. @duffleit within a single deployment unit Deployment Unit Module A

    Module B moduleB.createUser() fun createUser() { /*...*/ } 🔥
  28. @duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()

    fun createUser() { /*...*/ } within multiple deployment units
  29. @duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()

    fun createUser() { /*...*/ } within multiple deployment units
  30. @duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()

    fun createUser() { /*...*/ } within multiple deployment units
  31. @duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()

    fun createUser() { /*...*/ } within multiple deployment units
  32. @duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()

    fun createUser() { /*...*/ } within multiple deployment units
  33. @duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()

    fun createUser() { /*...*/ } within multiple deployment units https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  34. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty Availability
  35. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty Availability
  36. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 👧

    🧑 🧑 Loan Team Lending System
  37. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 🔥

    👧 🧑 🧑 🟢 Account Team Loan Team Lending System
  38. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑

    🧑 🔴 Loan Team Lending System Account Team
  39. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service 🔥 Users[] 🔥
  40. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] 🔥
  41. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] cache
  42. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] stream UserChanged
  43. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service readmodel stream Users[] UserChanged
  44. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service readmodel stream Users[] UserChanged
  45. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service readmodel stream 🔥🔥 🔥 🔥 Users[]
  46. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service 🔥 🚀 Caching LBs CBs Marketing Service
  47. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service 🔥 🔥 🔥 🔥
  48. @duffleit Products Payments Users Accounts 👧 🧑 🧑 🧑 👧

    👧 👩🦰 👧 👱 👧 🧑 🧑 🔥
  49. @duffleit Products Payments Users Accounts 👧 🧑 🧑 🧑 👧

    👧 👩🦰 👧 👱 👧 🧑 🧑 🔥 💥
  50. @duffleit Products Payments Users Accounts 👧 🧑 🧑 🧑 👧

    👧 👩🦰 👧 👱 👧 🧑 🧑 Entity Service Antipattern Distributed Monolith
  51. @duffleit Order Service Payments Service Users Delivery service 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Services along Customer Journeys Self-Sufficient Services Warehouse Service
  52. @duffleit Order Service Payments Service Users Delivery service 👧 🧑

    🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Services along Customer Journeys Self-Sufficient Services Warehouse Service 🔥 🔥 🔥 🟢
  53. @duffleit The quality of a service-based system design can probably

    be measured by the number of hops needed for the system's most business-critical customer journeys.
  54. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS USERS USERS USERS
  55. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS USERS USERS USERS User Service
  56. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS
  57. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS
  58. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS USERS
  59. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS USERS 🔥
  60. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service 👑 👑 👑 👑
  61. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service S3 Blob S3
  62. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service S3 Blob S3
  63. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service S3 Blob S3 Global Effort
  64. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Storage Module Global Effort
  65. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Global Effort Storage Module
  66. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Platform Teams Storage Module RFCs 🚴Paved Path
  67. @duffleit Order Service Payments Service Delivery service 👧 🧑 🧑

    🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Platform Teams Storage Module RFCs Dynamic Reteaming 🚴Paved Path
  68. @duffleit User Fraud Data Readers Writers Readers Writers API FrauD

    Service 👧 🧑 🧑 👩🦰 👧 Payment Serivce
  69. @duffleit Payment Serivce FrauD Service User Fraud Data Readers Writers

    Readers Writers API 👧 🧑 🧑 Downtime ⏳
  70. @duffleit Event User Fraud Data Readers Readers Writers API User

    Fraud Data Event Writers Payment Serivce
  71. @duffleit Event User Fraud Data Readers Writers Readers Writers API

    User Fraud Data Event 🔥 Payment Serivce
  72. @duffleit Event User Fraud Data Readers Readers Writers API User

    Fraud Data Event Writers 👷 Payment Serivce
  73. @duffleit Event User Fraud Data Readers Writers API User Fraud

    Data Event Readers Writers Payment Serivce
  74. @duffleit Event User Fraud Data Readers Writers API User Fraud

    Data Event Readers Writers Payment Serivce
  75. @duffleit Payment Serivce CDC User Fraud Data Readers Writers API

    User Fraud Data Event Readers Writers Canary Releases Zero Downtime Migration Dark Launching Scientist Pattern
  76. @duffleit Resilience Architect for 🔥 End-2-End Responsibilities Architect for 🛶

    System Harmony Architect for 🧘 Change Anxiety Architect against 🦜