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

The Art of Architecting for Scale

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

The Art of Architecting for Scale

Microservice Meetup Munich

Avatar for SQUER Solutions

SQUER Solutions

June 20, 2023

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