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

Architecting For Scale

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑

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

    🧑 🔴 🔴 🔴 Complex Distributed System Lending System Loan Team
  12. @duffleit Rela%on Between Root Cause and Effect Complex Distributed System

    Complicated Monolithical System is usually given is usually not given
  13. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑

    🧑 🔴 🔴 🔴 Complex Distributed System
  14. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑

    🧑 🔴 Complex Distributed System
  15. @duffleit What’s the difference between a method call within a

    single deployment unit Deployment Unit Module A Module B moduleB.createUser() fun createUser() { /*...*/ }
  16. @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() { /*...*/ }
  17. @duffleit What’s the difference between a method call within a

    single deployment unit, and a method call across the network. Everything.
  18. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑

    🧑 🔴 Complex Distributed System https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  19. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑

    🧑 🔴 Complex Distributed System
  20. @duffleit Rela%on 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 Relation Between Root Cause and Effect Complex Distributed System

    Complicated Monolithical System is usually given is usually not given Cause of Failures reliability availability
  22. @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
  23. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 Complex

    Distributed System 👧 🧑 🧑 Online Shopping System Store Team Warehouse Team
  24. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 🔴

    Complex Distributed System 👧 🧑 🧑 🟢 Store Team Warehouse Team
  25. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 Complex Distributed

    System 👧 🧑 🧑 🔴 Store Team Warehouse Team
  26. @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.
  27. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Accout Service Online Shopping System
  28. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Accout Service 🔥 Users[] 🔥
  29. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Accout Service Users[] 🔥
  30. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Accout Service Users[] cache
  31. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Accout Service Users[] stream UserChanged
  32. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Accout Service projection stream Users[] UserChanged
  33. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Accout Service projection stream Users[] UserChanged
  34. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Accout Service projection stream 🔥🔥 🔥 🔥 Users[]
  35. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Accout Service 🔥 🚀 LBs CBs Caching
  36. @duffleit Services that can run in a chaotic environment can

    run everywhere. Services that can only run in stable environment can only run there.
  37. @duffleit 👧 🧑 🧑 🔥 👧 🧑 👧 🧑 🧑

    🔴 Payment Team 🧑 Accout Team Execute Payment Payment Gateway Team
  38. @duffleit < 👧 🧑 🧑 🔥 SEPA Payment Team Accout

    Team Execute Payment CREDITCARD Payment Team < 👧 🧑 🧑 🧑 👧 🧑
  39. @duffleit < 👧 🧑 🧑 🔥 SEPA Payment Team Accout

    Team Execute Payment CREDITCARD Payment Team < COMPLICATED process 👧 🧑 🧑 COMPLICATED process 🧑 👧 🧑 😌
  40. @duffleit 👧 🧑 🧑 🔥 🔴 Payment Team Accout Team

    Execute Payment Payment Gateway Team COMPLEX process 👧 🧑 🧑 👧 🧑 🧑
  41. @duffleit < SEPA Payment Team Accout Team FRAUD CHECK <

    🧑 👧 🧑 👧 🧑 🧑 Core Team 👧 🧑 🧑
  42. @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
  43. @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?
  44. @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?
  45. @duffleit < SEPA Payment Team Accout Team Check Payment FRAUD

    CHECK < 🧑 👧 🧑 👧 🧑 🧑 Core Team 👧 🧑 🧑 MTTF? Platform teams SLAs
  46. @duffleit < SEPA Payment Team Accout Team FRAUD CHECK <

    👧 🧑 🧑 Legacy System 👧 🧑 🧑 👧 🧑 🧑
  47. @duffleit < SEPA Payment Team Accout Team FRAUD CHECK <

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

    Events User Fraud Data Zero-Downtime Migration
  49. @duffleit 👧 🧑 🧑 👧 🧑 🧑 Complex Distributed System

    👧 🧑 🧑 Gamedays 🤡 🤡 🤡 Payment Team
  50. @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 💣
  51. @duffleit 📦 👧 🧑 🧑 📦 📦 Keep the Flow

    of Value high & the Amount of Outages low. 👧 🧑 🧑 👧 🧑 🧑