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

Architecting for Scale

SQUER Solutions
September 19, 2023
140

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[] stream UserChanged
  34. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄

    Payment Service πŸ§‘ Account Service readmodel stream Users[] UserChanged
  35. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄

    Payment Service πŸ§‘ Account Service readmodel stream Users[] UserChanged
  36. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Payment

    Service πŸ§‘ Account Service readmodel stream πŸ”₯πŸ”₯ πŸ”₯ πŸ”₯ Users[]
  37. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Payment

    Service πŸ§‘ Account Service πŸ”₯ πŸš€ Caching LBs CBs
  38. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Payment

    Service πŸ§‘ Account Service πŸ”₯ πŸ”₯ πŸ”₯ πŸ”₯
  39. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘

    πŸ”΄ Payment Team πŸ§‘ Account Team Execute Payment Payment Gateway Team
  40. @duffleit < πŸ‘§ πŸ§‘ πŸ§‘ SEPA Payment Team Account Team

    CREDITCARD Payment Team < πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘
  41. @duffleit < πŸ‘§ πŸ§‘ πŸ§‘ End2End Responsibility SEPA Payment Team

    Account Team CREDITCARD Payment Team < End2End Responsibility πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ 😌
  42. @duffleit < πŸ‘§ πŸ§‘ πŸ§‘ End2End Responsibility SEPA Payment Team

    Account Team CREDITCARD Payment Team < End2End Responsibility πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ 😌 We need to keep depenedencies in mind Accounts
  43. @duffleit < πŸ‘§ πŸ§‘ πŸ§‘ End2End Responsibility Account Team <

    End2End Responsibility πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ Accounts
  44. @duffleit < πŸ‘§ πŸ§‘ πŸ§‘ End2End Responsibility Account Team <

    End2End Responsibility πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ Accounts cache πŸ”₯
  45. @duffleit < πŸ‘§ πŸ§‘ πŸ§‘ End2End Responsibility Account Team <

    End2End Responsibility πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ Accounts Account Changed readmodel πŸ”₯
  46. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    πŸ‘§ πŸ§‘ πŸ§‘ Check Payment Complicated Subsystem πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘
  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 πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ 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
  49. @duffleit Can our stream aligned team still have a 99,99%

    availability if our complex subsystem dependency has a 99,9% availability?
  50. @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
  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 < 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
  53. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    πŸ‘§ πŸ§‘ πŸ§‘ Legacy System πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘
  54. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    πŸ‘§ πŸ§‘ πŸ§‘ Legacy System πŸ‘§ πŸ§‘ πŸ§‘
  55. @duffleit CDC User Fraud Data Readers Writers API User Fraud

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

    Deployment Units Monolithic Distributed Reliabilty Availability Autonomy is.
  57. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘

    Chaotic Environments Architect for πŸ”₯ End-2-End Responsibilities Architect for πŸ›Ά
  58. @duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘

    Chaotic Environments Architect for πŸ”₯ End-2-End Responsibilities Architect for πŸ›Ά COMPLICATED Subsystem Teams Dependencies as a Service Architect for 9⃣
  59. @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⃣
  60. @duffleit πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ“¦ πŸ“¦ keep the flow

    of value high & the number of outages low. πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘