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

Cultivating Architecture in an Agile World

Cultivating Architecture in an Agile World

agile-meets-architecture.com
Berlin

SQUER Solutions

October 06, 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 “Good Architecture”
  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 Individual Scaling Demand

    Technology Segmentation CO-Locating Technical Benefits
  8. @duffleit Service A Service B Serivice 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 Single Deployment Unit MOdule A MOdule B MOdule C

    👧 🧑 🧑 👧 🧑 🧑 👧 🧑 🧑 Ownership You build it, You Own it You build it, You Run it 🔥 🔥
  11. @duffleit Service A Service B Serivice C 👧 🧑 🧑

    👧 🧑 🧑 👧 🧑 🧑 Enable Teams to work autonomously
  12. @duffleit a Threefold Architect needs to navigate the intersections of

    NFRs between all socio-technical aspects. Business & Domain Organisation Technology
  13. @duffleit Responsibility The ops will hate it Zone The Devs

    will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it
  14. @duffleit Responsibility The ops will hate it Zone The Devs

    will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it
  15. @duffleit Team Autonomy Decision Space Responsibility The ops will hate

    it Zone The Devs will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it Governance
  16. @duffleit Team Autonomy Decision Space Responsibility The ops will hate

    it Zone The Devs will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it Governance
  17. @duffleit Team Autonomy Decision Space Responsibility The ops will hate

    it Zone The Devs will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it Governance
  18. @duffleit Team Autonomy Decision Space Responsibility The ops will hate

    it Zone The Devs will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it Governance Fitness Functions ADRs & RFCs Tech Radar Figures of Merit
  19. @duffleit Team Autonomy Decision Space Responsibility The ops will hate

    it Zone The Devs will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it Governance Fitness Functions ADRs & RFCs Tech Radar Figures of Merit
  20. @duffleit Deployment Units Monolithic Distributed Modularisa6on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS
  21. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Change in Cause of Failure Reliabilty
  22. @duffleit Deployment Units Monolithic Distributed Modularisa6on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Change in Cause of Failure Reliabilty Availability
  23. @duffleit What’s the difference between a method call within a

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

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

    🧑 🔴 https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  27. @duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Change in Cause of Failure Reliabilty Availability
  28. @duffleit Deployment Units Monolithic Distributed Modularisa6on Bad Well Big Ball

    Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Change in Cause of Failure Reliabilty Availability
  29. @duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 Complex

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

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

    System 👧 🧑 🧑 🔴 Loan Team Lending System Account Team
  32. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service 🔥 Users[] 🔥
  33. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] 🔥
  34. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] cache
  35. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service Users[] stream UserChanged
  36. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service readmodel stream Users[] UserChanged
  37. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴

    Payment Service 🧑 Account Service readmodel stream Users[] UserChanged
  38. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service readmodel stream 🔥🔥 🔥 🔥 Users[]
  39. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service 🔥 🚀 Caching LBs CBs
  40. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment

    Service 🧑 Account Service 🔥 🔥 🔥 🔥
  41. @duffleit 👧 🧑 🧑 🔥 👧 🧑 👧 🧑 🧑

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

    CREDITCARD Payment Team < 👧 🧑 🧑 🧑 👧 🧑
  43. @duffleit < 👧 🧑 🧑 End2End Responsibility SEPA Payment Team

    Account Team CREDITCARD Payment Team < End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 😌
  44. @duffleit < 👧 🧑 🧑 End2End Responsibility SEPA Payment Team

    Account Team CREDITCARD Payment Team < End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 😌 We need to keep depenedencies in mind Accounts
  45. @duffleit < 👧 🧑 🧑 End2End Responsibility Account Team <

    End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 Accounts
  46. @duffleit < 👧 🧑 🧑 End2End Responsibility Account Team <

    End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 Accounts cache 🔥
  47. @duffleit < 👧 🧑 🧑 End2End Responsibility Account Team <

    End2End Responsibility 👧 🧑 🧑 🧑 👧 🧑 Accounts Account Changed readmodel 🔥
  48. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑
  49. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 💁🙋
  50. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 Availability 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 MTBF
  51. @duffleit Can our stream aligned team still have a 99,99%

    availability if our complex subsystem dependency has a 99,9% availability?
  52. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 Availability 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 rescheduler
  53. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

    👧 🧑 🧑 Check Payment Complicated Subsystem 👧 🧑 🧑 🧑 👧 🧑 Availability 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 🔄 rescheduler
  54. @duffleit < Account Team FRAUD CHECK < 👧 🧑 🧑

    Check Payment Complicated Subsystem 👧 🧑 🧑 Availability 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 🔄 rescheduler Platform Teams Developer Experience SLOs
  55. @duffleit < SEPA Payment Team Account Team FRAUD CHECK <

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

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

    Data Event Readers Writers Canary Releases Zero Downtime Migration Dark Launching A/B Testing Scientist Pattern
  58. @duffleit CDC User Fraud Data Readers Writers API User Fraud

    Data Event Readers Writers Canary Releases Zero Downtime Migration Dark Launching A/B Testing Scientist Pattern
  59. @duffleit Responsibility The ops will hate it Zone The Devs

    will Quit Zone Autonomy You build it you Own it You build it you run it You build it you care it Team Autonomy Decision Space Governance Fitness Functions ADRs & RFCs Tech Radar Figures of Merit Enablement
  60. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥
  61. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥 End-2-End Responsibilities Architect for 🛶
  62. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥 End-2-End Responsibilities Architect for 🛶 COMPLICATED Subsystem Teams Dependencies as a Service Architect for 9⃣
  63. @duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🧑

    Chaotic Environments Architect for 🔥 End-2-End Responsibilities Architect for 🛶 COMPLICATED Subsystem Teams Change Anxiety Architect against 🦜 Dependencies as a Service Architect for 9⃣