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

Architecting For Scale

Architecting Forย Scale

CraftConf 2023

SQUER Solutions

May 19, 2023

Transcript

96 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 There is a multitude of reasons to go for

    Distributed Systems. Modularisation is none of them.
  4. @duffleit Service A Service B Serivice C ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Ownership You build it, You Own it You build it, You Run it
  5. @duffleit Single Deployment Unit MOdule A MOdule B MOdule C

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Ownership You build it, You Own it You build it, You Run it ๐Ÿ”ฅ
  6. @duffleit Single Deployment Unit MOdule A MOdule B MOdule C

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Ownership You build it, You Own it You build it, You Run it ๐Ÿ”ฅ ๐Ÿ”ฅ
  7. @duffleit Service A Service B Serivice C ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Take Ownership and Responsibility
  8. @duffleit Deployment Units Monolithical Distributed Modularisation Bad Well Big Ball

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

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

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

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

    Complicated Monolithical System is usually given is usually not given
  13. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘

    ๐Ÿง‘ ๐Ÿ”ด ๐Ÿ”ด ๐Ÿ”ด Complex Distributed System
  14. @duffleit Whatโ€™s the difference between a method call within a

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

    single deployment unit, and a method call across the network. Everything.
  17. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘

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

    Complicated Monolithical System is usually given is usually not given Cause of Failures reliability availability
  19. @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
  20. @duffleit Relation Between Root Cause and Effect Complex Distributed System

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

    Distributed System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Online Shopping System Store Team Warehouse Team
  22. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด ๐Ÿ”ด

    Complex Distributed System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐ŸŸข Store Team Warehouse Team
  23. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Complex Distributed

    System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด Store Team Warehouse Team
  24. @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.
  25. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Accout Service ๐Ÿ”ฅ Users[] ๐Ÿ”ฅ
  26. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Accout Service projection stream Users[] UserChanged
  27. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ด

    Payment Service ๐Ÿง‘ Accout Service projection stream Users[] UserChanged
  28. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Payment

    Service ๐Ÿง‘ Accout Service projection stream ๐Ÿ”ฅ๐Ÿ”ฅ ๐Ÿ”ฅ ๐Ÿ”ฅ Users[]
  29. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Payment

    Service ๐Ÿง‘ Accout Service ๐Ÿ”ฅ ๐Ÿš€ LBs CBs Caching
  30. @duffleit Services that can run in a chaotic environment can

    run everywhere. Services that can only run in stable environment can only run there.
  31. @duffleit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘

    ๐Ÿ”ด Payment Team ๐Ÿง‘ Accout Team Execute Payment Payment Gateway Team
  32. @duffleit < ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ SEPA Payment Team Accout

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

    Team Execute Payment CREDITCARD Payment Team < COMPLICATED process ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ COMPLICATED process ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ˜Œ
  34. @du๏ฌ„eit ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ”ฅ ๐Ÿ”ด Payment Team Accout Team

    Execute Payment Payment Gateway Team COMPLEX process ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘
  35. @duffleit < SEPA Payment Team Accout Team FRAUD CHECK <

    ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Core Team ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘
  36. @duffleit < SEPA Payment Team Accout 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
  37. @duffleit < SEPA Payment Team Accout 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?
  38. @duffleit < SEPA Payment Team Accout 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?
  39. @duffleit < SEPA Payment Team Accout Team Check Payment FRAUD

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

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Legacy System ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘
  41. @duffleit < SEPA Payment Team Accout Team FRAUD CHECK <

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

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

    ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ Gamedays ๐Ÿคก ๐Ÿคก ๐Ÿคก Payment Team
  44. @duffleit Failure and Scale in Mind. Architect with ๐Ÿ”ฅ End-2-End

    Customer Journeys Architect for ๐Ÿชข By the given Availability Architect driven ๐ŸŸข A non-negotiable Zero-Downtime Mindset. Architect around ๐Ÿ˜Œ Embracing Chaos Architect by ๐Ÿ’ฃ
  45. @duffleit ๐Ÿ“ฆ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ“ฆ ๐Ÿ“ฆ Keep the Flow

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

More Decks by SQUER Solutions

Other Decks in Programming