Da crud a messaggi per app scalabili e manutenibili

13
Da CRUD a Messaggi per Applicazioni Scalabili e Manutenibili … sfatiamo qualche luogo comune…. Michele Aponte CEO/CTO Blexin Srl Presidente DotNetCampania MVP ASP.NET/IIS @apomic80 - http://www.tolist.net

Transcript of Da crud a messaggi per app scalabili e manutenibili

Page 1: Da crud a messaggi per app scalabili e manutenibili

Da CRUD a Messaggi per Applicazioni Scalabili e Manutenibili

… sfatiamo qualche luogo comune….

Michele AponteCEO/CTO Blexin SrlPresidente DotNetCampaniaMVP ASP.NET/IIS@apomic80 - http://www.tolist.net

Page 2: Da crud a messaggi per app scalabili e manutenibili

SponsorGrazie a

Page 3: Da crud a messaggi per app scalabili e manutenibili

Una architettura 3-tier al giorno, toglie il medico di torno?

PresentationLayer

BusinessLayer

DataLayer

Page 4: Da crud a messaggi per app scalabili e manutenibili

Una architettura 3-tier al giorno, toglie il medico di torno? Ma anche no...

Modello di Dominio

Business Services

Data Access Layer (ORM)

RDBMSApplication

Services

User Interface

Page 5: Da crud a messaggi per app scalabili e manutenibili

Limiti di un’architettura 3-Tier e monomodello

• Scrittura e lettura hanno esigenze diverse• Ci sono applicazioni in cui il numero di letture è

molto diverso dal numero di scritture• Problemi di performance• Manutenibilità con aggiunta di altri moduli

applicativi

Page 6: Da crud a messaggi per app scalabili e manutenibili

Proviamo a separare le responsabilità…

PresentationLayer

Write Model(Business Layer)

DataLayer

Read Model

Command Query Responsibility Segregation

Page 7: Da crud a messaggi per app scalabili e manutenibili

… un altro pochino ...

PresentationLayer

Write Model(Business Layer)

DataLayer

Read Model DataLayer

Command Query Responsibility Segregation

Page 8: Da crud a messaggi per app scalabili e manutenibili

Ok… ma come tengo “sincronizzati” Read Model e Write Model?

PresentationLayer

Write Model(Business Layer)

DataLayer

Read ModelDataLayer

Sincronizzatore(denormalizzatore)

Command Query Responsibility Segregation

Page 9: Da crud a messaggi per app scalabili e manutenibili

Mettiamoci l’anima in

pace: il mondo

non è transazion

ale!

Page 10: Da crud a messaggi per app scalabili e manutenibili

DemoCQRS un passo per volta…

Page 11: Da crud a messaggi per app scalabili e manutenibili

In un sistema del genere sapete cosa ci starebbe proprio bene?

PresentationLayer

Write Model

DataLayer

Read ModelDataLayer

Sincronizzatore(denormalizzatore)

ESB

Page 12: Da crud a messaggi per app scalabili e manutenibili

Quando usare CQRS e i Messaggi• Dividere modello di lettura e scrittura è sempre

una buona idea• Con la messaggistica vi portate a casa un sistema

di comunicazione che potete usare anche per scopi puramente applicativi (estendibilità, comunicazione in plugin, ecc.)• Qualcuno ha detto scalabilità???• Se avete una logica unicamente CRUD… ma vi è

veramente mai capitato?• Non guardate unicamente alla dimensione della

vostra applicazione al momento della nascita...

Page 13: Da crud a messaggi per app scalabili e manutenibili

Domande? Intanto qualche riferimento utile