clean architecture - matthewrenze · venus sun saturn jupiter mars. classic 3-layer...
TRANSCRIPT
![Page 1: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/1.jpg)
Clean ArchitecturePatterns, Practices, and Principles
@MatthewRenze
#CodeMash
![Page 2: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/2.jpg)
![Page 3: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/3.jpg)
![Page 4: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/4.jpg)
![Page 5: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/5.jpg)
![Page 6: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/6.jpg)
![Page 7: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/7.jpg)
![Page 8: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/8.jpg)
Overview
1. Clean Architecture
![Page 9: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/9.jpg)
Overview
1. Clean Architecture
2. Domain-Centric Architecture
![Page 10: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/10.jpg)
Overview
1. Clean Architecture
2. Domain-Centric Architecture
3. Application Layer
![Page 11: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/11.jpg)
Overview
1. Clean Architecture
2. Domain-Centric Architecture
3. Application Layer
4. Commands and Queries
![Page 12: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/12.jpg)
Overview
1. Clean Architecture
2. Domain-Centric Architecture
3. Application Layer
4. Commands and Queries
5. Functional Organization
![Page 13: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/13.jpg)
Overview
1. Clean Architecture
2. Domain-Centric Architecture
3. Application Layer
4. Commands and Queries
5. Functional Organization
6. Microservices
![Page 14: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/14.jpg)
Focus
Enterprise Architecture
![Page 15: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/15.jpg)
Focus
Enterprise Architecture
Modern equivalent of 3-Layer
![Page 16: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/16.jpg)
Focus
Enterprise Architecture
Modern equivalent of 3-Layer
Generally applicable
![Page 17: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/17.jpg)
Focus
Enterprise Architecture
Modern equivalent of 3-Layer
Generally applicable
6 Key Points
![Page 18: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/18.jpg)
Focus
Enterprise Architecture
Modern equivalent of 3-Layer
Generally applicable
6 Key Points
Q & A
![Page 19: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/19.jpg)
What is Software Architecture?
Source: http://msdn.microsoft.com/en-us/library/ff650706.aspx
![Page 20: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/20.jpg)
What is Software Architecture?
High-level
Source: http://msdn.microsoft.com/en-us/library/ff650706.aspx
![Page 21: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/21.jpg)
What is Software Architecture?
High-level
Structure
Source: http://msdn.microsoft.com/en-us/library/ff650706.aspx
![Page 22: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/22.jpg)
What is Software Architecture?
High-level
Structure
Layers
Source: http://msdn.microsoft.com/en-us/library/ff650706.aspx
![Page 23: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/23.jpg)
What is Software Architecture?
High-level
Structure
Layers
Components
Source: http://msdn.microsoft.com/en-us/library/ff650706.aspx
![Page 24: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/24.jpg)
What is Software Architecture?
High-level
Structure
Layers
Components
Relationships
Source: http://msdn.microsoft.com/en-us/library/ff650706.aspx
![Page 25: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/25.jpg)
Levels of Architectural Abstraction
System
Sub-systems
Layers
Components
Classes
Data and Methods
![Page 26: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/26.jpg)
Levels of Architectural Abstraction
System
Sub-systems
Layers
Components
Classes
Data and Methods
![Page 27: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/27.jpg)
Messy vs Clean Architecture
![Page 28: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/28.jpg)
Messy vs Clean Architecture
![Page 29: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/29.jpg)
Messy vs Clean Architecture
![Page 30: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/30.jpg)
What Is Bad Architecture?
Complex
Inconsistent
Incoherent
Rigid
Brittle
Untestable
Unmaintainable
![Page 31: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/31.jpg)
What Is Clean Architecture?
Simple
Understandable
Flexible
Emergent
Testable
Maintainable
![Page 32: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/32.jpg)
What Is Clean Architecture?
Architecture that is designed for the inhabitants of the architecture… not for the architect… or the machine
![Page 33: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/33.jpg)
What Is Clean Architecture?
Architecture that is designed for the inhabitants of the architecture… not for the architect… or the machine
![Page 34: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/34.jpg)
What Is Clean Architecture?
Architecture that is designed for the inhabitants of the architecture… not for the architect… or the machine
![Page 35: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/35.jpg)
What Is Clean Architecture?
Architecture that is designed for the inhabitants of the architecture… not for the architect… or the machine
![Page 36: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/36.jpg)
What Is Clean Architecture?
Architecture that is designed for the inhabitants of the architecture… not for the architect… or the machine
![Page 37: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/37.jpg)
Why Is Clean Architecture Important?
Cost/benefit
![Page 38: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/38.jpg)
Why Is Clean Architecture Important?
Cost/benefit
Minimize cost to maintain
![Page 39: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/39.jpg)
Why Is Clean Architecture Important?
Cost/benefit
Minimize cost to maintain
Maximize business value
![Page 40: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/40.jpg)
Why Is Clean Architecture Important?
Cost/benefit
Minimize cost to maintain
Maximize business value
Maximize total ROI
![Page 41: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/41.jpg)
Decisions, Decisions, Decisions…
Context is king
![Page 42: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/42.jpg)
Decisions, Decisions, Decisions…
Context is king
All decisions are a tradeoff
![Page 43: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/43.jpg)
Decisions, Decisions, Decisions…
Context is king
All decisions are a tradeoff
Use your best judgement
![Page 44: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/44.jpg)
Domain-Centric Architecture
![Page 45: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/45.jpg)
Earth
Moon
Mercury
Venus
SunMars
SaturnJupiter
![Page 46: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/46.jpg)
Earth
Mercury
Venus Sun
SaturnJupiter
Mars
![Page 47: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/47.jpg)
Geocentric Model Heliocentric Model
Earth
Moon
Mercury
Venus
SunMars
SaturnJupiter
Earth
Mercury
Venus Sun
SaturnJupiter
Mars
![Page 48: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/48.jpg)
Classic 3-layer Database-centric Architecture
DatabaseDatabase
Data Access
Business Logic
UI
![Page 49: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/49.jpg)
Database- vs. Domain-centric Architecture
DatabaseDatabase
Data Access
Business Logic
UI
DatabaseDomain
Application
Presentation
Database
![Page 50: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/50.jpg)
“The first concern of the architect is to make sure that the house is
usable, it is not to ensure that the house is made of brick.”
– Uncle Bob
![Page 51: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/51.jpg)
Essential vs. Detail
![Page 52: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/52.jpg)
Essential vs. Detail
Space is essential
![Page 53: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/53.jpg)
Essential vs. Detail
Space is essential
Usability is essential
![Page 54: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/54.jpg)
Essential vs. Detail
Building material is a detail
![Page 55: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/55.jpg)
Essential vs. Detail
Building material is a detail
Ornamentation is a detail
![Page 56: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/56.jpg)
Essential vs. Detail
![Page 57: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/57.jpg)
Essential vs. Detail
Domain is essential
![Page 58: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/58.jpg)
Essential vs. Detail
Domain is essential
Use cases are essential
![Page 59: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/59.jpg)
Essential vs. Detail
Presentation is a detail
![Page 60: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/60.jpg)
Essential vs. Detail
Presentation is a detail
Persistence is a detail
![Page 61: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/61.jpg)
Database- vs. Domain-centric Architecture
DatabaseDatabase
Data Access
Business Logic
UI
DatabaseDomain
Application
Presentation
Database
![Page 62: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/62.jpg)
Database- vs. Domain-centric Architecture
DatabaseDatabase
Data Access
Business Logic
UI
![Page 63: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/63.jpg)
Database- vs. Domain-centric Architecture
DatabaseDomain
Application
Presentation
Database
![Page 64: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/64.jpg)
Hexagonal Architecture
Original source: http://alistair.cockburn.us/Hexagonal+architecture
Application
httpfeed
GUI
httpadapter
app-to-appadapter
testadapter
mockdatabase
databaseadapter
mocktelephone
emailadapter
answeringmachineadapter
app
DB
![Page 65: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/65.jpg)
Onion Architecture
Database
Application Services
User Interface
Domain Model
Domain Services
Application Core
DB
webservice
file
Original source: http://jeffreypalermo.com/blog/the-onion-architecture-part-2/
![Page 66: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/66.jpg)
Database
Controllers
Entities
Use Cases
Original source: http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
External Interfaces
PresenterUse case
output port
Use caseinteractor
Use caseinput port
Controller
Flowof
Control
I
I
Clean Architecture
![Page 67: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/67.jpg)
It’s All the Same Thing
Hexagonal Onion Clean
Original Source: http://blog.ploeh.dk/2013/12/03/layers-onions-ports-adapters-its-all-the-same/
![Page 68: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/68.jpg)
Why Use Domain-Centric Architecture?
ProsFocus on essential
![Page 69: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/69.jpg)
Why Use Domain-Centric Architecture?
ProsFocus on essential
Less coupling to details
![Page 70: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/70.jpg)
Why Use Domain-Centric Architecture?
ProsFocus on essential
Less coupling to details
Necessary for DDD
![Page 71: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/71.jpg)
Why Use Domain-Centric Architecture?
ProsFocus on essential
Less coupling to details
Necessary for DDD
ConsChange is difficult
![Page 72: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/72.jpg)
Why Use Domain-Centric Architecture?
ProsFocus on essential
Less coupling to details
Necessary for DDD
ConsChange is difficult
Requires extra thought
![Page 73: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/73.jpg)
Why Use Domain-Centric Architecture?
ProsFocus on essential
Less coupling to details
Necessary for DDD
ConsChange is difficult
Requires extra thought
Initial higher cost
![Page 74: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/74.jpg)
Application Layer
![Page 75: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/75.jpg)
What Are Layers?
Levels of abstraction
Single-Responsibility Principle
Developer roles / skills
Multiple implementations
Varying rates of change
![Page 76: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/76.jpg)
Classic 3-Layer Architecture
UI
Business Logic
Data Access
Database
Users
Dependency
![Page 77: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/77.jpg)
Modern 4-Layer Architecture
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Dependency
![Page 78: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/78.jpg)
Application Layer
Implements use cases Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Dependency
![Page 79: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/79.jpg)
Application Layer
Implements use cases
High-level application logic
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Dependency
![Page 80: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/80.jpg)
Application Layer
Implements use cases
High-level application logic
Knows about domain
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Dependency
![Page 81: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/81.jpg)
Application Layer
Implements use cases
High-level application logic
Knows about domain
No knowledge of other layers
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Dependency
![Page 82: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/82.jpg)
Application Layer
Implements use cases
High-level application logic
Knows about domain
No knowledge of other layers
Contains interfaces for details
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Dependency
![Page 83: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/83.jpg)
Layer Dependencies
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Flow of Control Dependency
![Page 84: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/84.jpg)
Layer Dependencies
Dependency inversionPresentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Flow of Control Dependency
![Page 85: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/85.jpg)
Layer Dependencies
Dependency inversion
Inversion of control
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Flow of Control Dependency
![Page 86: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/86.jpg)
Layer Dependencies
Dependency inversion
Inversion of control
Independent deployability
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Flow of Control Dependency
![Page 87: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/87.jpg)
Layer Dependencies
Dependency inversion
Inversion of control
Independent deployability
Flexibility and maintainability
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
Flow of Control Dependency
![Page 88: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/88.jpg)
Users
OSDatabase
Composition
ImplementsDatabaseContext
IDatabaseContext
Sale
ICreateSaleCommand
CreateSaleCommand
SalesController
IInventoryClient
InventoryClient
Cro
ss-Cuttin
gC
oncern
s
IDateService
DateService
Presentation
Application
Persistence
Domain
Infrastructure
![Page 89: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/89.jpg)
Why Use an Application Layer?
ProsFocus is on use cases
![Page 90: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/90.jpg)
Why Use an Application Layer?
ProsFocus is on use cases
Easy to understand
![Page 91: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/91.jpg)
Why Use an Application Layer?
ProsFocus is on use cases
Easy to understand
Follows DIP
![Page 92: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/92.jpg)
Why Use an Application Layer?
ProsFocus is on use cases
Easy to understand
Follows DIP
ConsAdditional cost
![Page 93: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/93.jpg)
Why Use an Application Layer?
ProsFocus is on use cases
Easy to understand
Follows DIP
ConsAdditional cost
Requires extra thought
![Page 94: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/94.jpg)
Why Use an Application Layer?
ProsFocus is on use cases
Easy to understand
Follows DIP
ConsAdditional cost
Requires extra thought
IoC is counter-intuitive
![Page 95: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/95.jpg)
Commands and Queries
![Page 96: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/96.jpg)
Command-Query Separation
CommandDoes something
Should modify state
Should not return a value
![Page 97: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/97.jpg)
Command-Query Separation
CommandDoes something
Should modify state
Should not return a value
QueryAnswers a question
Should not modify state
Always returns a value
![Page 98: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/98.jpg)
Command-Query Separation
CommandDoes something
Should modify state
Should not return a value (ideally)
QueryAnswers a question
Should not modify state
Always returns a value
Avoid mixing the two!
![Page 99: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/99.jpg)
CQRS Architectures
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
Data Flow
![Page 100: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/100.jpg)
CQRS Architectures
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
Data Flow
![Page 101: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/101.jpg)
CQRS Architectures
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
Data Flow
![Page 102: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/102.jpg)
CQRS Architectures
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
Data Flow
![Page 103: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/103.jpg)
CQRS Type 1 – Single Database
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
Data Flow
![Page 104: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/104.jpg)
CQRS Type 1 – Single Database
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
Data Flow
![Page 105: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/105.jpg)
CQRS Type 1 – Single Database
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
Data Flow
![Page 106: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/106.jpg)
CQRS Type 2 – Read/Write Databases
Presentation
Domain
Persistence
Users
Queries
WriteDatabase
Commands
Data Access
ReadDatabase
Data Flow
![Page 107: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/107.jpg)
CQRS Type 2 – Read/Write Databases
Presentation
Domain
Persistence
Users
Queries
WriteDatabase
Commands
Data Access
ReadDatabase
Data Flow
![Page 108: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/108.jpg)
CQRS Type 2 – Read/Write Databases
Presentation
Domain
Persistence
Users
Queries
WriteDatabase
Commands
Data Access
ReadDatabase
Data Flow
![Page 109: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/109.jpg)
CQRS Type 2 – Read/Write Databases
Presentation
Domain
Persistence
Users
Queries
WriteDatabase
Commands
Data Access
ReadDatabase
Data Flow
![Page 110: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/110.jpg)
CQRS Type 2 – Read/Write Databases
Presentation
Domain
Persistence
Users
Queries
WriteDatabase
Commands
Data Access
ReadDatabase
Data Flow
![Page 111: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/111.jpg)
CQRS Type 3 – Event Sourcing
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
Data Flow
![Page 112: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/112.jpg)
CQRS Type 3 – Event Sourcing
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
Data Flow
Sale Created
Item 1 Added
Item 2 Added
Payment Made
Sale Completed
Events
![Page 113: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/113.jpg)
CQRS Type 3 – Event Sourcing
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
Data Flow
Sale Created
Item 1 Added
Item 2 Added
Payment Made
Sale Completed
Events
![Page 114: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/114.jpg)
CQRS Type 3 – Event Sourcing
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
Data Flow
![Page 115: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/115.jpg)
CQRS Type 3 – Event Sourcing
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
![Page 116: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/116.jpg)
CQRS Type 3 – Event Sourcing
Complete audit trail
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
![Page 117: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/117.jpg)
CQRS Type 3 – Event Sourcing
Complete audit trail
Point-in-time reconstruction
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
![Page 118: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/118.jpg)
CQRS Type 3 – Event Sourcing
Complete audit trail
Point-in-time reconstruction
Replay events
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
![Page 119: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/119.jpg)
CQRS Type 3 – Event Sourcing
Complete audit trail
Point-in-time reconstruction
Replay events
Rebuild production database
Presentation
Domain
Persistence
Users
Queries
Event Store
Commands
Data Access
ReadDatabase
![Page 120: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/120.jpg)
Why Use CQRS?
ProsMore efficient design
![Page 121: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/121.jpg)
Why Use CQRS?
ProsMore efficient design
Simpler within each stack
![Page 122: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/122.jpg)
Why Use CQRS?
ProsMore efficient design
Simpler within each stack
Optimized performance
![Page 123: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/123.jpg)
Why Use CQRS?
ProsMore efficient design
Simpler within each stack
Optimized performance
ConsInconsistent across stacks
![Page 124: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/124.jpg)
Why Use CQRS?
ProsMore efficient design
Simpler within each stack
Optimized performance
ConsInconsistent across stacks
Type 2 is more complex
![Page 125: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/125.jpg)
Why Use CQRS?
ProsMore efficient design
Simpler within each stack
Optimized performance
ConsInconsistent across stacks
Type 2 is more complex
Type 3 might be overkill
![Page 126: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/126.jpg)
Functional Organization
![Page 127: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/127.jpg)
“The architecture should screamthe intent of the system!”
– Uncle Bob
![Page 128: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/128.jpg)
Bed
roo
mBed
roo
m
Din
ing
Ro
om
Livi
ng
Ro
om
Kitc
hen
Entr
y
Util
ityBat
h
![Page 129: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/129.jpg)
Bed
roo
mBed
roo
m
Din
ing
Ro
om
Livi
ng
Ro
om
Kitc
hen
Entr
y
Util
ityBat
h
![Page 130: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/130.jpg)
Material Quantity Cost
Appliances 5 $5,000
Cabinets 10 $2,500
Doors 15 $750
Fixtures 12 $2,400
Floors 9 $4,000
Walls 20 $10,000
Windows 8 $2,500
![Page 131: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/131.jpg)
ControllersViews
Models
![Page 132: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/132.jpg)
ControllersViews
Models
vs
VendorsProducts
Customers
![Page 133: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/133.jpg)
Content
Controllers
Models
Scripts
Views
![Page 134: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/134.jpg)
vs
Content
Controllers
Models
Scripts
Views
Customers
Employees
Products
Sales
Vendors
![Page 135: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/135.jpg)
So what?
![Page 136: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/136.jpg)
![Page 137: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/137.jpg)
vs
![Page 138: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/138.jpg)
Why Use Functional Organization
ProsSpatial locality
![Page 139: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/139.jpg)
Why Use Functional Organization
ProsSpatial locality
Easy to navigate
![Page 140: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/140.jpg)
Why Use Functional Organization
ProsSpatial locality
Easy to navigate
Avoid vendor lock-in
![Page 141: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/141.jpg)
Why Use Functional Organization
ProsSpatial locality
Easy to navigate
Avoid vendor lock-in
ConsLose framework conventions
![Page 142: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/142.jpg)
Why Use Functional Organization
ProsSpatial locality
Easy to navigate
Avoid vendor lock-in
ConsLose framework conventions
Lose automatic scaffolding
![Page 143: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/143.jpg)
Why Use Functional Organization
ProsSpatial locality
Easy to navigate
Avoid vendor lock-in
ConsLose framework conventions
Lose automatic scaffolding
Categorical is easier at first
![Page 144: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/144.jpg)
Microservices
![Page 145: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/145.jpg)
Components
UI
Business
Data Access
Database
Users
Sales Support Inventory
Sales Support Inventory
Sales Support Inventory
![Page 146: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/146.jpg)
Components
UI
Business
Data Access
Database
Users
Sales Support Inventory
Sales Support Inventory
Sales Support Inventory
![Page 147: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/147.jpg)
Problem Domain
SalesSales Opportunity
Contact
Sales Person
Product
Sales Territory
SupportSupport Ticket
Customer
Support Person
Product
Resolution
![Page 148: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/148.jpg)
Single Domain Model
Sales Opportunity
Support Ticket
Product
Employee
Customer
Sales Territory
Resolution
![Page 149: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/149.jpg)
Single Domain Model
Sales Opportunity
Support Ticket
Product
Employee
Customer
Sales Territory
Resolution
![Page 150: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/150.jpg)
Single Domain Model
Sales Opportunity
Support Ticket
Product
Employee
Customer
Sales Territory
Resolution
![Page 151: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/151.jpg)
Single Domain Model
Sales Opportunity
Support Ticket
Product
Employee
Customer
Sales Territory
Resolution
![Page 152: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/152.jpg)
SupportSales
Overlapping Contexts
Sales Opportunity
Support Ticket
Product
Employee
Customer
Sales Territory
Resolution
![Page 153: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/153.jpg)
SupportSales
Bounded Contexts
Sales Opportunity
Support Ticket
Product
Contact
Sales Territory
Resolution
Customer
Product
Support Person
Sales Person
![Page 154: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/154.jpg)
Microservice Architectures
Sales
Support
Inventory
Marketing HR
![Page 155: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/155.jpg)
Microservice Architectures
Subdivide system Sales
Support
Inventory
Marketing HR
![Page 156: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/156.jpg)
Microservice Architectures
Subdivide system
Light-weight APIsSales
Support
Inventory
Marketing HR
![Page 157: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/157.jpg)
Microservice Architectures
Subdivide system
Light-weight APIs
Small teams
Sales
Support
Inventory
Marketing HR
![Page 158: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/158.jpg)
Microservice Architectures
Independent Sales
Support
Inventory
Marketing HR
![Page 159: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/159.jpg)
Microservice Architectures
Independent
Similar to SOASales
Support
Inventory
Marketing HR
![Page 160: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/160.jpg)
Microservice Architectures
Independent
Similar to SOA
Size matters
Sales
Support
Inventory
Marketing HR
![Page 161: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/161.jpg)
Why Use Microservices?
ProsLess cost for large domains
![Page 162: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/162.jpg)
Why Use Microservices?
ProsLess cost for large domains
Smaller teams
![Page 163: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/163.jpg)
Why Use Microservices?
ProsLess cost for large domains
Smaller teams
Independence
![Page 164: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/164.jpg)
Why Use Microservices?
ProsLess cost for large domains
Smaller teams
Independence
ConsOnly for large domains
![Page 165: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/165.jpg)
Why Use Microservices?
ProsLess cost for large domains
Smaller teams
Independence
ConsOnly for large domains
Higher up-front cost
![Page 166: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/166.jpg)
Why Use Microservices?
ProsLess cost for large domains
Smaller teams
Independence
ConsOnly for large domains
Higher up-front cost
Distributed system costs
![Page 167: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/167.jpg)
Code Demo
![Page 168: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/168.jpg)
Where to Go Next?
![Page 169: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/169.jpg)
Where to Go Next?
Martin Fowler
![Page 171: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/171.jpg)
Where to Go Next?
Eric Evans
![Page 172: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/172.jpg)
Where to Go Next?
Greg Young Udi Dahan
![Page 173: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/173.jpg)
Where to Go Next?
Articles
Courses
Presentations
Source Code
Videos
www.matthewrenze.com
![Page 174: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/174.jpg)
www.pluralsight.com/authors/matthew-renze
![Page 175: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/175.jpg)
Conclusion
![Page 176: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/176.jpg)
Summary
Focus on the inhabitants
![Page 177: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/177.jpg)
Summary
Focus on the inhabitants
Domain-centric Architecture
DatabaseDomain
Application
Presentation
![Page 178: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/178.jpg)
Summary
Focus on the inhabitants
Domain-centric Architecture
Application Layer
Presentation
Domain
Persistence
Users
Application
Infrastructure
OSDatabase
Cro
ss-Cuttin
g C
oncern
s
![Page 179: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/179.jpg)
Summary
Focus on the inhabitants
Domain-centric Architecture
Application Layer
Commands and Queries
Presentation
Domain
Persistence
Users
Queries
Database
Commands
Data Access
![Page 180: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/180.jpg)
Summary
Focus on the inhabitants
Domain-centric Architecture
Application Layer
Commands and Queries
Functional CohesionVendorsProducts
Customers
![Page 181: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/181.jpg)
Summary
Focus on the inhabitants
Domain-centric Architecture
Application Layer
Commands and Queries
Functional Cohesion
Bounded Contexts
Sales
Support
Inventory
Marketing HR
![Page 182: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/182.jpg)
Feedback
Very important to me!
One thing you liked?
One thing I could improve?
![Page 183: Clean Architecture - Matthewrenze · Venus Sun Saturn Jupiter Mars. Classic 3-layer Database-centric Architecture Database Database Data Access Business Logic UI. Database- vs. Domain-centric](https://reader033.vdocuments.us/reader033/viewer/2022050121/5f5161e3f2ecc879061bd9d9/html5/thumbnails/183.jpg)
Contact Info
Matthew Renze
Data Science Consultant
Renze Consulting
Twitter: @matthewrenze
Email: [email protected]
Website: www.matthewrenze.com
Thank You! : )