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
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. 👧 🧑 🧑 👧 🧑 🧑