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

Architecting for Scale

SQUER Solutions
September 19, 2023
93

Architecting for Scale

Vienna Microservice Meetup

SQUER Solutions

September 19, 2023
Tweet

Transcript

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

    sustainably reduce lead time to thank you. Daniel Terhorst-North Complex System
  2. @duffleit “Sadly, architecture has been undervalued for so long that

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

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

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

    you think microservices are the answer? Simon Brown
  6. @duffleit Service A Service B Serivice C Individual Scaling Demand

    Technology Segmentation 🇩🇪 🇩🇪 🇺🇸 CO-Locating
  7. @duffleit Service A Service B Serivice C Individual Scaling Demand

    Technology Segmentation CO-Locating Technical Benefits
  8. @duffleit Service A Service B Serivice C 👧 🧑 🧑

    👧 🧑 🧑 👧 🧑 🧑 Ownership You build it, You Own it You build it, You Run it
  9. @duffleit Single Deployment Unit MOdule A MOdule B MOdule C

    👧 🧑 🧑 👧 🧑 🧑 👧 🧑 🧑 Ownership You build it, You Own it You build it, You Run it 🔥
  10. @duffleit Single Deployment Unit MOdule A MOdule B MOdule C

    👧 🧑 🧑 👧 🧑 🧑 👧 🧑 🧑 Ownership You build it, You Own it You build it, You Run it 🔥 🔥
  11. @duffleit Service A Service B Serivice C 👧 🧑 🧑

    👧 🧑 🧑 👧 🧑 🧑 Enable Teams to work autonomously
  12. @duffleit Responsibility The ops will hate it Zone The Devs

    will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it
  13. @duffleit Responsibility The ops will hate it Zone The Devs

    will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it
  14. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS
  15. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Decomposition Fallacy
  16. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Decomposition Fallacy
  17. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Decomposition Fallacy
  18. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Decomposition Fallacy
  19. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Decomposition Fallacy
  20. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

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

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Change in 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 the network. 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 the network. Everything.
  25. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑

    🧑 🔴 https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  26. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

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

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

    Distributed System 👧 🧑 🧑 Loan Team Lending System
  29. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 🔥

    Complex Distributed System 👧 🧑 🧑 🟢 Account Team Loan Team Lending System
  30. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 Complex Distributed

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

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

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

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

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

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

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

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

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

    Service 🧑 Account Service 🔥 🔥 🔥 🔥
  40. @duffleit 👧 🧑 🧑 🔥 👧 🧑 👧 🧑 🧑

    🔴 Payment Team 🧑 Account Team Execute Payment Payment Gateway Team
  41. @duffleit < 👧 🧑 🧑 SEPA Payment Team Account Team

    CREDITCARD Payment Team < 👧 🧑 🧑 🧑 👧 🧑
  42. @duffleit < 👧 🧑 🧑 End2End Responsibility SEPA Payment Team

    Account Team CREDITCARD Payment Team < End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 😌
  43. @duffleit < 👧 🧑 🧑 End2End Responsibility SEPA Payment Team

    Account Team CREDITCARD Payment Team < End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 😌 We need to keep depenedencies in mind Accounts
  44. @duffleit < 👧 🧑 🧑 End2End Responsibility Account Team <

    End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 Accounts
  45. @duffleit < 👧 🧑 🧑 End2End Responsibility Account Team <

    End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 Accounts cache 🔥
  46. @duffleit < 👧 🧑 🧑 End2End Responsibility Account Team <

    End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 Accounts Account Changed readmodel 🔥
  47. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑
  48. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 💁🙋
  49. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 Availability How many Nines? Nines Percentage Yearly Outage 1 Nine 90% 36,5 days 2 Nines 99% 3,65 days 3 Nines 99,9% 8,76 hours 4 Nines 99,99% 52,56 minutes 5 Nines 99,999% 5,26 minutes 6 Nines 99,9999% 31,5 seconds MTBF
  50. @duffleit Can our stream aligned team still have a 99,99%

    availability if our complex subsystem dependency has a 99,9% availability?
  51. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 Availability How many Nines? Nines Percentage Yearly Outage 1 Nine 90% 36,5 days 2 Nines 99% 3,65 days 3 Nines 99,9% 8,76 hours 4 Nines 99,99% 52,56 minutes 5 Nines 99,999% 5,26 minutes 6 Nines 99,9999% 31,5 seconds rescheduler
  52. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 Availability How many Nines? Nines Percentage Yearly Outage 1 Nine 90% 36,5 days 2 Nines 99% 3,65 days 3 Nines 99,9% 8,76 hours 4 Nines 99,99% 52,56 minutes 5 Nines 99,999% 5,26 minutes 6 Nines 99,9999% 31,5 seconds 🔄 rescheduler
  53. @duffleit < Account Team FRAUD CHECK < 👧 🧑 🧑

    Check Payment Complicated Subsystem 👧 🧑 🧑 Availability How many Nines? Nines Percentage Yearly Outage 1 Nine 90% 36,5 days 2 Nines 99% 3,65 days 3 Nines 99,9% 8,76 hours 4 Nines 99,99% 52,56 minutes 5 Nines 99,999% 5,26 minutes 6 Nines 99,9999% 31,5 seconds 🔄 rescheduler Platform Teams Developer Experience SLOs
  54. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Legacy System 👧 🧑 🧑 👧 🧑 🧑
  55. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Legacy System 👧 🧑 🧑
  56. @duffleit CDC User Fraud Data Readers Writers API User Fraud

    Data Event Readers Writers Canary Releases Zero Downtime Migration Dark Launching Scientist Pattern
  57. @duffleit Modularisation is no reason to go for Distributed Systems.

    Deployment Units Monolithic Distributed Reliabilty Availability Autonomy is.
  58. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥
  59. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥 End-2-End Responsibilities Architect for 🛶
  60. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥 End-2-End Responsibilities Architect for 🛶 COMPLICATED Subsystem Teams Dependencies as a Service Architect for 9⃣
  61. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥 End-2-End Responsibilities Architect for 🛶 COMPLICATED Subsystem Teams Change Anxiety Architect against 🦜 Dependencies as a Service Architect for 9⃣
  62. @duffleit 📦 👧 🧑 🧑 📦 📦 keep the flow

    of value high & the number of outages low. 👧 🧑 🧑 👧 🧑 🧑