come ti smantello un'app monolitica in microservices
TRANSCRIPT
DISCLAIMER
my personal opinion
people have different experiences
ideas, comment, etc contact me @realfuzzy
subject is wide, so I’d love to hear your thoughts :-)
It’s not a code talk (but I’ll show you some code)
✓simple to develop
✓IDEs & development tools support
✓easy to test
✓simple to deploy
✓works well for relatively small apps
- growth overloads everything
- difficult to adopt new technologies
- often stuck with the starting choices
- doesn’t scale to long-lived-application
WHAT’S A MICROSERVICE• suite of small services• running in its own process• communicating with lightweight mechanisms• built around business capabilities • independently automated deployable • minimum of centralized management• technology agnostic
✓each microservice is relatively small
✓easier for a developer to understand
✓easier to scale development
✓improve fault isolation
✓develop and deploy independently
✓no long-term commitment to a tech-stack
✓allow a fine-grained performance tuning or scaling
- additional complexity of a distributed system
- tools/IDEs are monolithic applications oriented
- testing is more difficult
- must implement the inter-service communication
- increase memory consumption
THE NEWBEGINNING
http
s://u
ploa
d.wiki
med
ia.or
g/w
ikipe
dia/
com
mon
s/6/6
7/Ch
ange
_In_
Han
d.jpg
AGENDA*
✓what’s a microservice?
• why have I to jump in ?
• where I can start from ?
• how I should be aware of ?
* I know, I know, I lied about the agenda
Sir. Tools
A warrior that can use every kind of tool as a weapon
Strateky Sensei
Master renowned for its strategic and
tactical ability
Workodoo Master
The work-force is strong with this one
Q0: HOW TO DECOMPOSE A MONOLITH?
1. Identify business boundaries
2. start decomposing each into own microservice
3. follow the Single Responsibility Principle
4. goto :2
OUR CHOICE ☛ RABBITMQ
• AMPQ message broker
• Erlang
• Fast, reliable, secure
• Many clients
• Commercial support
SLIM FIT
circuit_breaker https://github.com/wsargent/circuit_breaker
breaker_box https://github.com/sittercity/breaker_box
CB2 https://github.com/pedro/cb2
S
M
L
– Martin Fowler, Chief Scientist - ThoughtWorks
“…don’t even consider microservices unless you have a system that's too complex to manage as a monolith”
YAGNIdo monolith first
monolith
microservice
complexity
prod
uctiv
ity
http
://m
artin
fow
ler.co
m/b
liki/M
icros
ervic
ePre
mium
.htm
l
– Melvin Conway, 1968
“organizations which design systems … are constrained to produce designs
which are copies of the communication structures of these organizations”
– Martin Fowler, Chief Scientist - ThoughtWorks
“For many people throwing away a code base is a sign of failure, perhaps
understandable …, but still failure.”
The Smith
Master craftsman expert in forging
anything
The Sculptor
An artist able to give shape to
magnificent works
The Painter
Colors and shapes come to life on her
canvas!
TAKEAWAYS
• go monolith first
• communication (all-around) is strategic assets
• start simple, don’t fear the change
• take decisions. I-really-mean-that.