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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
SQUER Solutions
May 18, 2024
Programming
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Architecting for Scale
At
Vienna 2024
SQUER Solutions
May 18, 2024
More Decks by SQUER Solutions
See All by SQUER Solutions
AI-Driven Legacy Decomposition
squer
0
220
Plural of Platforms
squer
1
140
Demystifying Event Sourcing – A Practical Approach by Shahab Ganji
squer
0
210
Architecting Distributed Systems at Scale — From Pain to Pattern
squer
0
330
Empowering-developers-with-Roslyn.pdf
squer
0
180
Building Event Driven Systems at Scale with Azure Cosmos DB
squer
0
210
Building Event-Driven Systems at Scale with Azure Cosmos DB
squer
0
180
Platform Engineering: It's Not What You Think It Is
squer
0
400
Patterns Of Architectural Modernization
squer
1
570
Other Decks in Programming
See All in Programming
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
340
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
350
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
220
プロポーザルを書いてもらう
pvcresin
0
290
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
490
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
160
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
540
5分で問診!Composer セキュリティ健康診断
codmoninc
0
910
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
550
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
140
Featured
See All Featured
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
440
Marketing to machines
jonoalderson
1
5.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building Applications with DynamoDB
mza
96
7.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
270
How to Ace a Technical Interview
jacobian
281
24k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.2k
Scaling GitHub
holman
464
140k
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