Presentazione tenuta al Rubyday 2015 a Torino.
C'è un enorme interesse intorno alle architetture microservice ... quasi ogni conferenza IT ha una sessione che ne parla.
Una chiara idea dei benefici / insidie che questo approccio porta con sé è cruciale per adottarla con successo in un progetto.
In questa presentazione condivido alcune delle esperienze fatte durante lo smantellamento di un'applicazione monolitica in microservices.
Analizzo alcuni dei motivi che giustificano l'adozione di questo tipo di architettura, parlo delle questioni più importanti da considerare e rivelo alcuni approcci che hanno avuto successo nella nostra esperienza.
Nota: Questa è una versione adattata della presentazione, senza effetti e animazioni.
6. 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)
17. ✓simple to develop
✓IDEs & development tools support
✓easy to test
✓simple to deploy
✓works well for relatively small apps
18. - growth overloads everything
- difficult to adopt new technologies
- often stuck with the starting choices
- doesn’t scale to long-lived-application
20. 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
22. ✓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
23. - 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
26. 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
27.
28. 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
33. Your efforts have little effect!
an orthogonal approach might
help you ...
34.
35. 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
48. – Martin Fowler, Chief Scientist -ThoughtWorks
“…don’t even consider microservices
unless you have a system that's too
complex to manage as a monolith”
58. – Melvin Conway, 1968
“organizations which design systems …
are constrained to produce designs
which are copies of the communication
structures of these organizations”
60. – Martin Fowler, Chief Scientist -ThoughtWorks
“For many people throwing away a code
base is a sign of failure, perhaps
understandable …, but still failure.”
64. 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!
74. TAKEAWAYS
• go monolith first
• communication (all-around) is strategic assets
• start simple, don’t fear the change
• take decisions. I-really-mean-that.
75. …WHAT’S NEXT ?
• testing
• CQRS + ES
• log analisys & monitoring
• metrics
• …