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
Tweet

More Decks by SQUER Solutions

Other Decks in Technology

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

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

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

    🧑 🔴 Complex Distributed System Loan Team Lending System
  17. @duffleit Relation Between Root Cause and Effect 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 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() { /*...*/ }
  20. @duffleit What’s the difference between a method call within a

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

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

    🧑 🔴 Complex Distributed System https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  23. @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
  24. @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
  25. @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
  26. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 Complex

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

    Complex Distributed System 👧 🧑 🧑 🟢 Account Team Loan Team Lending System
  28. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 Complex Distributed

    System 👧 🧑 🧑 🔴 Loan Team Lending System Account Team
  29. @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.
  30. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service 🛍 Online Shopping System
  31. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service 🔥 Users[] 🔥 🛍 Online Shopping System
  32. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] 🔥 🛍 Online Shopping System
  33. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] cache 🛍 Online Shopping System
  34. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] stream UserChanged 🛍 Online Shopping System
  35. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service projection stream Users[] UserChanged 🛍 Online Shopping System
  36. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service projection stream Users[] UserChanged 🛍 Online Shopping System
  37. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service projection stream 🔥🔥 🔥 🔥 Users[] 🛍 Online Shopping System
  38. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

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

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

    🔴 Payment Team 🧑 Account Team Execute Payment Payment Gateway Team
  41. @duffleit < 👧 🧑 🧑 🔥 SEPA Payment Team Account

    Team Execute Payment CREDITCARD Payment Team < 👧 🧑 🧑 🧑 👧 🧑
  42. @duffleit < 👧 🧑 🧑 🔥 SEPA Payment Team Account

    Team Execute Payment CREDITCARD Payment Team < COMPLICATED End2End flow 👧 🧑 🧑 COMPLICATED End2End flow 🧑 👧 🧑 😌
  43. @duffleit 👧 🧑 🧑 🔥 🔴 Payment Team Account Team

    Execute Payment Payment Gateway Team COMPLEX End2End flow 👧 🧑 🧑 👧 🧑 🧑
  44. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    🧑 👧 🧑 👧 🧑 🧑 Core Team 👧 🧑 🧑 💁 Check Payment 👩💻
  45. @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
  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 A Planed Outage is an Outage rescheduler Availability?
  47. @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?
  48. @duffleit < SEPA Payment Team Account Team Check Payment FRAUD

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

    👧 🧑 🧑 Legacy System 👧 🧑 🧑 👧 🧑 🧑
  50. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

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

    Fraud Data Zero-Downtime Migration Events CDC
  52. @duffleit 👧 🧑 🧑 👧 🧑 🧑 Complex Distributed System

    👧 🧑 🧑 Gamedays 🤡 🤡 🤡 Payment Team
  53. @duffleit Complex Distributed System Deployment Units Monolithic Distributed Complicated Monolithic

    System Modularisation is no reason to go for Distributed Systems.
  54. @duffleit 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 💣
  55. @duffleit 📦 👧 🧑 🧑 📦 📦 Keep the Flow

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