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

The Art of Architecting for Scale

The Art of Architecting forย Scale

Microservice Meetup Munich

SQUER Solutions

June 20, 2023

Transcript

100 slides
  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 Modularisation 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 ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Ownership You build it, You Own it You build it, You Run it
  8. @du๏ฌ„eit Single Deployment Unit MOdule A MOdule B MOdule 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 Service A Service B Serivice C ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Take Ownership and Responsibility
  11. @duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball

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

    Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based Architecture Monolithic
  13. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    ๐Ÿ”ฅ ๐ŸŸข Complicated Monolithic System Age Calculation Lending System
  14. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘

    ๐Ÿง‘ ๐Ÿ”ด ๐Ÿ”ด Complex Distributed System Loan Team Lending System
  15. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘

    ๐Ÿง‘ ๐Ÿ”ด ๐Ÿ”ด ๐Ÿ”ด Complex Distributed System Loan Team Lending System
  16. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘

    ๐Ÿง‘ ๐Ÿ”ด Complex Distributed System Loan Team Lending System
  17. @duffleit Relation Between Root Cause and E๏ฌ€ect Complex Distributed System

    Complicated Monolithical System is usually given is usually not given
  18. @duffleit Whatโ€™s the difference between a method call within a

    single deployment unit Deployment Unit Module A Module B moduleB.createUser() fun createUser() { /*...*/ }
  19. @duffleit Whatโ€™s the di๏ฌ€erence 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() { /*...*/ }
  20. @duffleit Whatโ€™s the di๏ฌ€erence between a method call within a

    single deployment unit, and a method call across the network. Everything.
  21. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘

    ๐Ÿง‘ ๐Ÿ”ด Complex Distributed System https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  22. @duffleit Relation Between Root Cause and E๏ฌ€ect Complex Distributed System

    Complicated Monolithical System is usually given is usually not given Cause of Failures reliability availability
  23. @du๏ฌ„eit Relation Between Root Cause and Effect Complex Distributed System

    Complicated Monolithical System is usually given is usually not given Cause of Failures reliability availability
  24. @duffleit Relation Between Root Cause and Effect Complex Distributed System

    Complicated Monolithic System is usually given is usually not given Cause of Failures reliability availability
  25. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด Complex

    Distributed System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Loan Team Lending System
  26. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด ๐Ÿ”ด

    Complex Distributed System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐ŸŸข Account Team Loan Team Lending System
  27. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Complex Distributed

    System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด Loan Team Lending System Account Team
  28. @duffleit We strive for a stable production. But this is

    totally elusive in a complex environment. and sometimes chaotic The sooner we accept this, the better.
  29. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Payment

    Service ๐Ÿง‘ Account Service ๐Ÿ› Online Shopping System
  30. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Account Service ๐Ÿ”ฅ Users[] ๐Ÿ”ฅ ๐Ÿ› Online Shopping System
  31. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Account Service Users[] ๐Ÿ”ฅ ๐Ÿ› Online Shopping System
  32. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Account Service Users[] cache ๐Ÿ› Online Shopping System
  33. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Account Service Users[] stream UserChanged ๐Ÿ› Online Shopping System
  34. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Account Service projection stream Users[] UserChanged ๐Ÿ› Online Shopping System
  35. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Account Service projection stream Users[] UserChanged ๐Ÿ› Online Shopping System
  36. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Payment

    Service ๐Ÿง‘ Account Service projection stream ๐Ÿ”ฅ๐Ÿ”ฅ ๐Ÿ”ฅ ๐Ÿ”ฅ Users[] ๐Ÿ› Online Shopping System
  37. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Payment

    Service ๐Ÿง‘ Account Service ๐Ÿ”ฅ ๐Ÿš€ LBs CBs Caching
  38. @du๏ฌ„eit Services that can run in a chaotic environment can

    run everywhere. Services that can only run in a stable environment can only run there.
  39. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘

    ๐Ÿ”ด Payment Team ๐Ÿง‘ Account Team Execute Payment Payment Gateway Team
  40. @du๏ฌ„eit < ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ SEPA Payment Team Account

    Team Execute Payment CREDITCARD Payment Team < ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘
  41. @du๏ฌ„eit < ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ SEPA Payment Team Account

    Team Execute Payment CREDITCARD Payment Team < COMPLICATED End2End flow ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ COMPLICATED End2End flow ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ˜Œ
  42. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ”ด Payment Team Account Team

    Execute Payment Payment Gateway Team COMPLEX End2End flow ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘
  43. @du๏ฌ„eit < SEPA Payment Team Account Team FRAUD CHECK <

    ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Core Team ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ’ Check Payment ๐Ÿ‘ฉ๐Ÿ’ป
  44. @duffleit < SEPA Payment Team Account Team Check Payment FRAUD

    CHECK < Core Team ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ How many Nines? Availability? 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 A Planed Outage is an Outage
  45. @duffleit < SEPA Payment Team Account Team Check Payment FRAUD

    CHECK < ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Core Team ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ 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 A Planed Outage is an Outage rescheduler Availability?
  46. @duffleit < SEPA Payment Team Account Team Check Payment FRAUD

    CHECK < ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Core Team ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ 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 ๐Ÿ”ด Availability?
  47. @duffleit < SEPA Payment Team Account Team Check Payment FRAUD

    CHECK < ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Core Team ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ MTTF? Platform teams SLAs
  48. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Legacy System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘
  49. @du๏ฌ„eit < SEPA Payment Team Account Team FRAUD CHECK <

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Legacy System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘
  50. @duffleit Readers Writers Writers Readers API User Fraud Data User

    Fraud Data Zero-Downtime Migration Events CDC
  51. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Complex Distributed System

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Gamedays ๐Ÿคก ๐Ÿคก ๐Ÿคก Payment Team
  52. @du๏ฌ„eit Failure and Scale in Mind. We need to architect

    with ๐Ÿ”ฅ End-2-End Customer Journeys. We need to architect for ๐Ÿชข By Availability. We need to architect driven 9โƒฃ A Zero-Downtime Mindset. We need to architect with ๐Ÿฆœ Chaos. We need to embrace ๐Ÿ’ฃ
  53. @du๏ฌ„eit ๐Ÿ“ฆ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ“ฆ ๐Ÿ“ฆ Keep the Flow

    of Value high & the Amount of Outages low. ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘

More Decks by SQUER Solutions

Other Decks in Technology