Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Architecting for Scale
Search
SQUER Solutions
May 18, 2024
Programming
0
230
Architecting for Scale
At
Vienna 2024
SQUER Solutions
May 18, 2024
Tweet
Share
More Decks by SQUER Solutions
See All by SQUER Solutions
AI-Driven Legacy Decomposition
squer
0
130
Plural of Platforms
squer
1
82
Demystifying Event Sourcing – A Practical Approach by Shahab Ganji
squer
0
150
Architecting Distributed Systems at Scale — From Pain to Pattern
squer
0
260
Empowering-developers-with-Roslyn.pdf
squer
0
130
Building Event Driven Systems at Scale with Azure Cosmos DB
squer
0
150
Building Event-Driven Systems at Scale with Azure Cosmos DB
squer
0
130
Platform Engineering: It's Not What You Think It Is
squer
0
330
Patterns Of Architectural Modernization
squer
1
500
Other Decks in Programming
See All in Programming
ぼくの開発環境2026
yuzneri
1
290
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.2k
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
400
AI巻き込み型コードレビューのススメ
nealle
2
2.4k
あなたはユーザーではない #PdENight
kajitack
4
290
CSC307 Lecture 11
javiergs
PRO
0
580
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
480
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
490
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
200
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
110
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
1
110
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
0
200
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Six Lessons from altMBA
skipperchong
29
4.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
2
65
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
89
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
340
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
67
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Designing for Performance
lara
611
70k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
70
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
470
Transcript
@duffleit Architecting FOR SCALE @duffleit
@duffleit DAVID LEITNER Coding Architect 👋
[email protected]
🌎 @duffleit
@duffleit 📦 👧 🧑 👧 🧑 👧 🔥 Safely and
sustainably reduce lead time to thank you. — Daniel Terhorst-North
@duffleit Simple System 👧 🧑
@duffleit Complicated System 👧 🧑 👧 🧑
@duffleit Complicated System 👧 🧑 👧 🧑 🧑 👧
@duffleit 👧 🧑 👧 🧑 🧑 👧 Program complexity grows
until it exceeds the capabilities of the programmer who must maintain it. — one of Lehman's laws
@duffleit Build Abstract Abstraction Abstraction Abstraction 👧 🧑 👧 🧑
🧑 👧
@duffleit Complicated System Sub Domains Sub Domains Sub Domains 👧
🧑 👧 🧑 🧑 👧
@duffleit Good modularization is the foundation of any well-designed software
systems.
@duffleit Complicated System Sub Domains Sub Domains Sub Domains 👧
🧑 👧 🧑 🧑 👧
@duffleit Distributed System Service A Service C Service B 👧
🧑 👧 🧑 🧑 👧
@duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball
Of Mud
@duffleit “Sadly, architecture has been undervalued for so long that
many engineers regard life with a Big Ball of Mud as normal.“ Foote & Yoder
@duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball
Of Mud Distributed MOnolith WelL-Structured MOdulith
@duffleit There is a multitude of reasons to go for
Distributed Systems. Modularisation is none of them.
@duffleit If you can’t build a well-structured monolith, what makes
you think microservices are the answer? Simon Brown
@duffleit Single Deployment Unit Individual Scaling Demand Technology Segmentation CO-Locating
👧 🧑 🧑 🧑 👧 👧 👩🦰 👧 👱
@duffleit Single Deployment Unit 👧 🧑 🧑 🧑 👧 👧
👩🦰 👧 👱
@duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑
@duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 🔥
@duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 🔥 🔥 🔥
@duffleit Independant Deployment Units 👧 🧑 🧑 👧 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑
@duffleit Independant Deployment Units 👧 🧑 🧑 👧 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Resilience 🔥
@duffleit Single Deployment Unit 👧 🧑 🧑 👧 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 📦
@duffleit Independant Deployment Units 👧 🧑 🧑 👧 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 📦 📦 📦 📦 📦 📦 Independent Deployability
@duffleit Independent Deployability Resilience Both of them only work on
top of proper modularization.
@duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Distributed Self-Sufficient Services Decomposition Fallacy
@duffleit Independent Deployability Resilience Both of them only work on
top of proper modularization.
@duffleit Independent Deployability Resilience Both of them will enable higher
team autonomy.
@duffleit Independent Deployability Resilience Both of them will introduce more
distribution.
@duffleit We go for distributed systems to enable independent, autonomous
teams.
@duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty Availability
@duffleit What’s the difference between a method call within a
single deployment unit Deployment Unit Module A Module B moduleB.createUser() fun createUser() { /*...*/ }
@duffleit What’s the difference between a method call within a
single deployment unit, and a method call across multiple deployment units. Deployment Unit Deployment Unit Service A Service B restClient.user() fun createUser() { /*...*/ }
@duffleit What’s the difference between a method call within a
single deployment unit, and a method call across multiple deployment units. Everything.
@duffleit within a single deployment unit Deployment Unit Module A
Module B moduleB.createUser() fun createUser() { /*...*/ }
@duffleit within a single deployment unit Deployment Unit Module A
Module B moduleB.createUser() fun createUser() { /*...*/ } ✅
@duffleit within a single deployment unit Deployment Unit Module A
Module B moduleB.createUser() fun createUser() { /*...*/ } 🔥
@duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()
fun createUser() { /*...*/ } within multiple deployment units
@duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()
fun createUser() { /*...*/ } within multiple deployment units
@duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()
fun createUser() { /*...*/ } within multiple deployment units
@duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()
fun createUser() { /*...*/ } within multiple deployment units
@duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()
fun createUser() { /*...*/ } within multiple deployment units
@duffleit Deployment Unit Deployment Unit Service A Service B restClient.user()
fun createUser() { /*...*/ } within multiple deployment units https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty Availability
@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball
Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based SYSTEMS Cause of Failure Reliabilty Availability
@duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 👧
🧑 🧑 Loan Team Lending System
@duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 🔴 🔥
👧 🧑 🧑 🟢 Account Team Loan Team Lending System
@duffleit 👧 🧑 🧑 🔥 👧 🧑 🧑 👧 🧑
🧑 🔴 Loan Team Lending System Account Team
@duffleit We strive for a stable environment.
@duffleit There is no stable environment. In Complex Distributed System
@duffleit Resilience Architect for 🔥
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment
Service 🧑 Account Service
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴
Payment Service 🧑 Account Service 🔥 Users[] 🔥
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴
Payment Service 🧑 Account Service Users[] 🔥
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴
Payment Service 🧑 Account Service Users[] cache
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴
Payment Service 🧑 Account Service Users[] stream UserChanged
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴
Payment Service 🧑 Account Service readmodel stream Users[] UserChanged
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 🔴
Payment Service 🧑 Account Service readmodel stream Users[] UserChanged
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment
Service 🧑 Account Service readmodel stream 🔥🔥 🔥 🔥 Users[]
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment
Service 🧑 Account Service 🔥 🚀 Caching LBs CBs Marketing Service
@duffleit 👧 🧑 🧑 👧 🧑 👧 🧑 🧑 Payment
Service 🧑 Account Service 🔥 🔥 🔥 🔥
@duffleit accept chaos as a constant in Distributed systems
@duffleit 👧 🧑 🧑 👧 🧑 🧑 👧 🧑 🧑
Gamedays 🤡 🤡 🤡
@duffleit A Services that can run in a stable environment
will run only there.
@duffleit A Services that can run in a chaotic environment
will run everywhere.
@duffleit Resilience Architect for 🔥
@duffleit Products Payments Users Accounts 👧 🧑 🧑 🧑 👧
👧 👩🦰 👧 👱 👧 🧑 🧑
@duffleit Products Payments Users Accounts 👧 🧑 🧑 🧑 👧
👧 👩🦰 👧 👱 👧 🧑 🧑 🔥
@duffleit Products Payments Users Accounts 👧 🧑 🧑 🧑 👧
👧 👩🦰 👧 👱 👧 🧑 🧑 🔥 💥
@duffleit Products Payments Users Accounts 👧 🧑 🧑 🧑 👧
👧 👩🦰 👧 👱 👧 🧑 🧑 Entity Service Antipattern Distributed Monolith
@duffleit Order Service Payments Service Users Delivery service 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Services along Customer Journeys Self-Sufficient Services Warehouse Service
@duffleit Order Service Payments Service Users Delivery service 👧 🧑
🧑 🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Services along Customer Journeys Self-Sufficient Services Warehouse Service 🔥 🔥 🔥 🟢
@duffleit The quality of a service-based system design can probably
be measured by the number of hops needed for the system's most business-critical customer journeys.
@duffleit On the Criteria To Be Used in Decomposing Systems
into Modules — D.L. Parnas
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS USERS USERS USERS
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS USERS USERS USERS User Service
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS USERS
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service USERS Event Bus USERS USERS 🔥
@duffleit End-2-End Responsibilities. Architect for 🛶
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service 👑 👑 👑 👑
@duffleit Highly autonomous teams may lead to organizational silos and
localized optimization.
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service S3 Blob S3
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service S3 Blob S3
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service S3 Blob S3 Global Effort
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Storage Module Global Effort
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Global Effort Storage Module
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Platform Teams Storage Module RFCs 🚴Paved Path
@duffleit Order Service Payments Service Delivery service 👧 🧑 🧑
🧑 👧 👧 👩🦰 👧 👱 👧 🧑 🧑 Warehouse Service Platform Teams Storage Module RFCs Dynamic Reteaming 🚴Paved Path
@duffleit System Harmony Architect for 🧘
@duffleit Domain
@duffleit Product Architecture
@duffleit Product Architecture Organisation Everything constantly changes in unpredictable ways;
that's the main constant in software. — Neal Ford
@duffleit 👧 🧑 🧑 Payment Serivce 👩🦰 👧 FrauD Logic
@duffleit User Fraud Data Readers Writers Readers Writers API FrauD
Service 👧 🧑 🧑 👩🦰 👧 Payment Serivce
@duffleit Payment Serivce FrauD Service User Fraud Data Readers Writers
Readers Writers API 👧 🧑 🧑
@duffleit Payment Serivce FrauD Service User Fraud Data Readers Writers
Readers Writers API 👧 🧑 🧑 Downtime ⏳
@duffleit Payment Serivce User Fraud Data Readers Writers Readers Writers
API Downtime ⏳
@duffleit Readers Writers Readers Writers API User Fraud Data 🔥
Payment Serivce
@duffleit Readers Writers Readers Writers API User Fraud Data 🔥
Payment Serivce
@duffleit User Fraud Data Readers Writers API 🔥 Readers Writers
Payment Serivce
@duffleit User Fraud Data Readers Writers API Readers Writers Payment
Serivce
@duffleit Event User Fraud Data Readers Writers Readers Writers API
User Fraud Data CDC Payment Serivce
@duffleit Event User Fraud Data Readers Readers Writers API User
Fraud Data Event Writers Payment Serivce
@duffleit Event User Fraud Data Readers Writers Readers Writers API
User Fraud Data Event 🔥 Payment Serivce
@duffleit Event User Fraud Data Readers Readers Writers API User
Fraud Data Event Writers 👷 Payment Serivce
@duffleit Event User Fraud Data Readers Writers Readers Writers API
User Fraud Data Event Payment Serivce
@duffleit Event User Fraud Data Readers Writers API User Fraud
Data Event Readers Writers Payment Serivce
@duffleit Event User Fraud Data Readers Writers API User Fraud
Data Event Readers Writers Payment Serivce
@duffleit Payment Serivce CDC User Fraud Data Readers Writers API
User Fraud Data Event Readers Writers Canary Releases Zero Downtime Migration Dark Launching Scientist Pattern
@duffleit Change Anxiety Architect against 🦜
@duffleit So many thing to consider, Let’s sum up.
@duffleit Modularisation is key, and if done right, distribution on
top enables autonomous teams.
@duffleit Modularisation is key, and if done right, distribution on
top enables autonomous teams.
@duffleit Modularisation is key, and if done right, distribution on
top enables autonomous teams.
@duffleit Deployment Units Monolithic Distributed Reliabilty Availability
@duffleit Resilience Architect for 🔥 End-2-End Responsibilities Architect for 🛶
System Harmony Architect for 🧘 Change Anxiety Architect against 🦜
@duffleit Keep the lead time to thank you low EVENT
AT SCALE.
@duffleit DAVID LEITNER Coding Architect 👋
[email protected]
🌎 @duffleit