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
190
Architecting for Scale
At
Vienna 2024
SQUER Solutions
May 18, 2024
Tweet
Share
More Decks by SQUER Solutions
See All by SQUER Solutions
Demystifying Event Sourcing – A Practical Approach by Shahab Ganji
squer
0
64
Architecting Distributed Systems at Scale — From Pain to Pattern
squer
0
170
Empowering-developers-with-Roslyn.pdf
squer
0
90
Building Event Driven Systems at Scale with Azure Cosmos DB
squer
0
120
Building Event-Driven Systems at Scale with Azure Cosmos DB
squer
0
82
Platform Engineering: It's Not What You Think It Is
squer
0
240
Patterns Of Architectural Modernization
squer
1
420
Platform Engineering: It's Not What You Think It Is
squer
0
210
Platform Engineering— the Good, the Bad, and the Ugly
squer
1
320
Other Decks in Programming
See All in Programming
kiroでゲームを作ってみた
iriikeita
0
150
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
240
構文解析器入門
ydah
7
2.1k
The State of Fluid (2025)
s2b
0
120
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
2k
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
2
420
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
1
130
Claude Code と OpenAI o3 で メタデータ情報を作る
laket
0
110
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
360
Go製CLIツールをnpmで配布するには
syumai
2
1.1k
それ CLI フレームワークがなくてもできるよ / Building CLI Tools Without Frameworks
orgachem
PRO
17
3.8k
バイブコーディング × 設計思考
nogu66
0
100
Featured
See All Featured
Bash Introduction
62gerente
614
210k
For a Future-Friendly Web
brad_frost
179
9.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Navigating Team Friction
lara
188
15k
Facilitating Awesome Meetings
lara
54
6.5k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
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