Upgrade to PRO for Only $50/Yearโ€”Limited-Time Offer! ๐Ÿ”ฅ

Architecting For Scale

Architecting Forย Scale

CraftConf 2023

Avatar for SQUER Solutions

SQUER Solutions

May 19, 2023
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 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. ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘ ๐Ÿ‘ง ๐Ÿง‘ ๐Ÿง‘