MicroMonolith
Top anti-patterns of distributed systems
@francmichal
www.mfranc.com
Lead Dev @
Poland -> London
<3 Vim
@francmichal
www.mfranc.com
Michal Franc
Not this presentation
-
not selling anything
-
not selling microservicses
Agenda
-
Monolith -> Microservices
-
Anti-patterns
The rise of microservices
Microservices are on the rise
But this is not a silver bullet!
Adopting micro services is a long learning process and big investment
journey to microservices
-
Tech 4 Good
-
Social Giving Platform
-
10+ mln active users
-
400+ gbp mln donations
Monolith in Numbers
-
120+ projects
-
60 min deploy time
-
one DB 1TB+
-
2-3 week release
-> Transformation ->
Microservices
in Numbers
-
120+ microservices
-
5-10 minutes deploy time
-
CouchDB, Redis, DynamoDB, EventStore, SQL
-
Daily releases ( 300+ so far )
What can we share ?
Antipatterns
- MicroMonolith
- One DB to rule them all
- HTTP all the things
-
MacroService
-
MicroOverload
MicroMonolith
The Promise
That was theory
The Big Ball Of Mud
Functional
Beautiful
Mess
Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations
— M. Conway
Conway's law
Why ?
- Complexity
- Chaos
- Development / Exploration
Distributed - Ball of Mud
First iteration
MicroMonolith
- Team structure
- Culture
- Previous experience
Direct translation of legacy system will lead to the same system with new problems
New problem
Network
-
latency
-
complexity
-
debbuging problems
-
security
Reboot
- new approach
- explored domain
- DDD-lite
- training
One DB to rule them all
Single point of failure
Natural step from monolith DB
Good Idea ?
Multiple Databases
New problems
data sharing
queries
polyglot persistence
Good Enough
Options
-
table per service
-
schema per service
-
event sourcing
HTTP all the things
Messaging
DB sync
Event Sourcing
MacroService
It is natural process for the service to grow with time
Useful split example
Why this split is useful
-
Scaling
-
Stability
-
Lower complexity
-
Releases
-
Costs
MicroOverload
More Microservices
leads to increased
complexity
cost
maintenance
more network problems
Just like building 'good enough' software is difficult. Finding balance in number of microservices is also difficult.
ScaleUp perf
ScaleDown money
Be prepared for increased costs
Mess in services add running costs on top of that
Mess in code leads to development / maintenance costs
Planned downtime
Containers - Docker
Controlling size
Summary
Is Monolith first approach that bad ?
Adopting microservices requires changes in the team structure and culture
Simple requests through HTTP are not enough
QA
The End
@francmichal
www.mfranc.com
Micromonolith
By Michal Franc
Micromonolith
- 3,287