SOA, DDD e microservices

Post on 16-Apr-2017

637 views 1 download

Transcript of SOA, DDD e microservices

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

mauro.servienti@particular.net@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 :-)