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
140
Architecting for Scale
At
Vienna 2024
SQUER Solutions
May 18, 2024
Tweet
Share
More Decks by SQUER Solutions
See All by SQUER Solutions
Empowering-developers-with-Roslyn.pdf
squer
0
29
Building Event Driven Systems at Scale with Azure Cosmos DB
squer
0
45
Building Event-Driven Systems at Scale with Azure Cosmos DB
squer
0
24
Platform Engineering: It's Not What You Think It Is
squer
0
160
Patterns Of Architectural Modernization
squer
1
300
Platform Engineering: It's Not What You Think It Is
squer
0
160
Platform Engineering— the Good, the Bad, and the Ugly
squer
1
260
Your Platform Monolith is Probably a Bad Idea
squer
1
160
Architecting for Scale
squer
0
200
Other Decks in Programming
See All in Programming
functionalなアプローチで動的要素を排除する
ryopeko
1
210
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
290
Flatt Security XSS Challenge 解答・解説
flatt_security
0
740
快速入門可觀測性
blueswen
0
500
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
630
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
300
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
1k
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
為你自己學 Python
eddie
0
520
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
210
return文におけるstd::moveについて
onihusube
1
1.4k
watsonx.ai Dojo #6 継続的なAIアプリ開発と展開
oniak3ibm
PRO
0
170
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
960
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
180
Making the Leap to Tech Lead
cromwellryan
133
9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Facilitating Awesome Meetings
lara
51
6.2k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
870
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
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