Microservice: SOA e DDD alla massima
potenzaThe road to a
Service Oriented Architecture is paved with a message based infrastructure
Mauro ServientiSolution Architect @ Particular Software, makers of NServiceBus
[email protected]@mauroservienti
Microsoft MVP / Visual C#
All I want to do when I wake up in the morning is…(cit. Rosanna, Toto, Toto IV)
TicketOne
un biglietto
Stage dive… :-)
Tutto quello che loro vogliono è…
Mostrarmi i bigliettiPrenotare il posto
Farmi pagare
Assicurare i bigliettiSpedire
Gestire la loro “roba”
In alcuni casi l’ordine è
importante…
in altri no…
trovatel’inghippo
Risorse diverse--
Diversi “owner”
“Transaction boundaries”• Dal punto di vista utente: una singola operazione• Dal punto di vista del sistema: operazioni multiple
• Che dovrebbero essere “atomic”
• La Transazione di Business varca molti confini• Dialogo con il teatro per bloccare I posti• La carta di credito• L’assicurazione dei biglietti• La spedizione• La “roba” interna
• Alla fine finisce sempre in una…
…big ball of mud…Quando attraversiamo dei confini non
possiamo pretendere che le transazioni
funzionino
SOABoundariesare explicit
Il DTC dimenticare dobbiamo
La compensazione accettare
idempotenza il nostro miglior amico
Messages you wantMessages are
AtomicMessages are
UniqueEasily implements
Ledgersemantic
Messaging PatternsPerché non tutta la comunicazione nasce uguale…
Request/Response
Messaggio a qualcuno
Implica accoppiamento
Ci conosciamo
Pub/Sub
Evento, passato, pubblicato
Meno accoppiamento
Se ti interessa sai chi pubblica
Tickets reservation service
Tickets reservation service
Order management service
Order management service
Tickets reservation service
Credit Card service
Marketing service
Other stuff
Buy ticket
Charge Card
Ticket reserved
Reserve Tickets
Demo
Riepilogo• Meno accoppiamento, zero è impossibile• Se rispettate I confini
• Nessun accoppiamento temporale• I messaggi sono asincorni
• Molti meno mal di testa: manutenzione e deploy• Componenti autonomi
• Scale-out facile• “competing consumers”
• Consegna garantita• Con gestione degli errori
MicroservicesMy 2 cents…
Una cagata pazzesca… (cit.)
Possiamo chiamare quello che
abbiamo visto microservice?
Il problema è:possiamo chiamare
qualsiasi cosa microservice
microservice confonde
design e deploy
Curiosi?
Free e-book available at:
http://go.particular.net/Liguria
GrazieAndate e SOA-ificate il mondo :-)