Software Architecture != Software Design
1. Define what we call a monolith and a distributed system
2. Quick overview of some architectural patterns
3. Fewlines case study
One unit for all business flows and database access
Business flows and/or database access separated in multiple units but communicate and coordinate to appear as one coherent system for the end user
Presentation
Business
Persistence
Application
Database
Producer
Filters
...
Application
Pipe
Pipe
Consumer
Pipe
Core
System
Application
Plugin
Plugin
Plugin
Plugin
Plugin
Database
Database
Database
Gateway
Database
Service A
Service B
Service C
Service D
UI
API
Orchestrator
Component A
Component C
Component D
Component E
Component B
Orchestraor
Component A
Component B
Component C
Component D
Component A
Component B
Component C
Component D
Component ...
Component E
Requirements we thought we had:
Decision:
Reality:
Requirements we actually need:
Gateway
Database
Service A
Service B
Service C
Service D
UI
API
Database
Database
Database
Rule 1
Everything in software architecture is a trade-off
Corollary rule
If you think you have discovered something that isn’t a trade-off, more likely you just haven’t identified the trade-off yet
Rule 2
Why is more important than how