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

Architecting for Scale

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Architecting for Scale

At Vienna 2024

Avatar for SQUER Solutions

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 🦜