Your SlideShare is downloading. ×
0
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Event Sourcing con NEventStore
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Event Sourcing con NEventStore

372

Published on

Estratto tecnico del talk http://lanyrd.com/2014/cdays14/scxbbf/ fatto a quattro mani con @ziobrando

Estratto tecnico del talk http://lanyrd.com/2014/cdays14/scxbbf/ fatto a quattro mani con @ziobrando

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
372
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
11
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Event Sourcing con NEventStore Estratto “dev” del talk per i Community Days 2014
 http://lanyrd.com/2014/cdays14/scxbbf/ Slide complete EventStorming+EventSourcing su http://www.slideshare.net/ziobrando/idea-postittest-verdi !1 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 2. @andreabalducci #CDays14 – Milano 25, 26 e 27 Febbraio 2014 !2
  • 3. Il nostro dominio ha una storia da raccontare… !3 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 4. …ma spesso ci accontentiamo dei titoli di coda !4 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 5. !5 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 6. ..invece di guardare tutta la storia. !6 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 7. !7 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 8. Quante informazioni perdiamo ? !8 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 9. Il saldo è 6.684€ !9 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 10. Data Dare 3/2 Avere Descrizione operazione 160 4/2 1.500 4/2 1.400 10/2 180 12/2 200 12/2 180 14/2 80 17/2 200 20/2 16 20/2 300 20/2 320 20/2 75 21/2 16 22/2 180 22/2 200 2.107 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Saldo al 22/2 : 6.684 !10
  • 11. Data Dare 3/2 Avere Descrizione operazione Supermercato Le Fornaci - Castelfidardo 160 4/2 1.500 ACME Spa - Stipendio Gennaio 4/2 1.400 ACME Spa - Stipendio Gennaio 10/2 180 Supermercato Le Fornaci - Castelfidardo 12/2 200 Mediaworld Ancona 12/2 180 Pittarello Ancona 14/2 80 17/2 200 20/2 16 20/2 300 Mediaworld Bologna 20/2 320 Carpisa Bologna 20/2 75 Hotel Bologna 21/2 16 Autostrade Spa - Casello Ancona 22/2 180 amazon.it 22/2 200 zalando.it 2.107 Ristorante Osteria da Pippo IperSimply- Castelfidardo Autostrade Spa - Casello Bologna 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Saldo al 22/2 : 6.684 !11
  • 12. Data Dare 3/2 Avere Descrizione operazione Supermercato Le Fornaci - Castelfidardo 160 4/2 1.500 ACME Spa - Stipendio Gennaio 4/2 1.400 ACME Spa - Stipendio Gennaio 10/2 180 Supermercato Le Fornaci - Castelfidardo 12/2 200 Mediaworld Ancona 12/2 180 Pittarello Ancona 14/2 80 17/2 200 20/2 16 20/2 300 Mediaworld Bologna 20/2 320 Carpisa Bologna 20/2 75 Hotel Bologna 21/2 16 Autostrade Spa - Casello Ancona 22/2 180 amazon.it 22/2 200 Due persone
 Stessa Azienda zalando.it 2.107 Ristorante Osteria da Pippo IperSimply- Castelfidardo Autostrade Spa - Casello Bologna 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Saldo al 22/2 : 6.684 !11
  • 13. Data Dare 3/2 Avere Descrizione operazione Supermercato Le Fornaci - Castelfidardo 160 4/2 1.500 ACME Spa - Stipendio Gennaio 4/2 1.400 ACME Spa - Stipendio Gennaio 10/2 180 Supermercato Le Fornaci - Castelfidardo 12/2 200 Mediaworld Ancona 12/2 180 Pittarello Ancona 14/2 80 17/2 200 20/2 16 20/2 300 Mediaworld Bologna 20/2 320 Carpisa Bologna 20/2 75 Hotel Bologna 21/2 16 Autostrade Spa - Casello Ancona 22/2 180 amazon.it 22/2 200 Due persone
 Stessa Azienda zalando.it 2.107 Ristorante Osteria da Pippo IperSimply- Castelfidardo Carnivori Autostrade Spa - Casello Bologna 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Saldo al 22/2 : 6.684 !11
  • 14. Data Dare 3/2 Avere Descrizione operazione Supermercato Le Fornaci - Castelfidardo 160 4/2 1.500 ACME Spa - Stipendio Gennaio 4/2 1.400 ACME Spa - Stipendio Gennaio 10/2 Auto senza 12/2 telepass 12/2 180 Supermercato Le Fornaci - Castelfidardo 200 Mediaworld Ancona 180 Due persone
 Stessa Azienda Pittarello Ancona Ristorante Osteria da Pippo 14/2 80 17/2 200 20/2 16 20/2 300 Mediaworld Bologna 20/2 320 Carpisa Bologna 20/2 75 Hotel Bologna 21/2 16 Autostrade Spa - Casello Ancona 22/2 180 amazon.it 22/2 200 Carnivori zalando.it 2.107 IperSimply- Castelfidardo Autostrade Spa - Casello Bologna 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Saldo al 22/2 : 6.684 !11
  • 15. LuiDataLei Dare & 3/2 Avere Descrizione operazione Supermercato Le Fornaci - Castelfidardo 160 4/2 1.500 ACME Spa - Stipendio Gennaio 4/2 1.400 ACME Spa - Stipendio Gennaio 10/2 Auto senza 12/2 telepass 12/2 180 Supermercato Le Fornaci - Castelfidardo 200 Mediaworld Ancona 180 Due persone
 Stessa Azienda Pittarello Ancona Ristorante Osteria da Pippo 14/2 80 17/2 200 20/2 16 20/2 300 Mediaworld Bologna 20/2 320 Carpisa Bologna 20/2 75 Hotel Bologna 21/2 16 Autostrade Spa - Casello Ancona 22/2 180 amazon.it 22/2 200 Carnivori zalando.it 2.107 IperSimply- Castelfidardo Autostrade Spa - Casello Bologna 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Saldo al 22/2 : 6.684 !11
  • 16. LuiDataLei Dare & 3/2 Avere Descrizione operazione Supermercato Le Fornaci - Castelfidardo 160 4/2 1.500 ACME Spa - Stipendio Gennaio 4/2 1.400 ACME Spa - Stipendio Gennaio 10/2 Auto senza 12/2 telepass 12/2 180 Supermercato Le Fornaci - Castelfidardo 200 Mediaworld Ancona 180 Due persone
 Stessa Azienda Pittarello Ancona Ristorante Osteria da Pippo 14/2 80 17/2 200 20/2 16 20/2 300 Mediaworld Bologna 20/2 320 Carpisa Bologna 20/2 75 Hotel Bologna 21/2 16 Autostrade Spa - Casello Ancona 22/2 180 amazon.it 22/2 200 zalando.it Carnivori 2.107 IperSimply- Castelfidardo Autostrade Spa - Casello Bologna 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Lei compra entro un’ora da lui Saldo al 22/2 : 6.684 !11
  • 17. LuiDataLei Dare & 3/2 Avere Descrizione operazione Supermercato Le Fornaci - Castelfidardo 160 4/2 1.500 ACME Spa - Stipendio Gennaio 4/2 1.400 ACME Spa - Stipendio Gennaio 10/2 Auto senza 12/2 telepass 12/2 180 Supermercato Le Fornaci - Castelfidardo 200 Mediaworld Ancona 180 Due persone
 Stessa Azienda Pittarello Ancona Ristorante Osteria da Pippo 14/2 80 17/2 200 20/2 16 20/2 300 Mediaworld Bologna 20/2 320 Carnivori Carpisa Bologna 20/2 21/2 22/2 22/2 IperSimply- Castelfidardo Autostrade Spa - Casello Bologna 75 24/2 spesa a Hotel Bologna 16 Autostrade Spa - Casello Ancona Lei compra entro Castelfidardo amazon.it 180 un’ora da lui 200 zalando.it 2.107 2.900 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Saldo al 22/2 : 6.684 !11
  • 18. Event Sourcing?
 !12 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 19. Event Sourcing?
 ne ho sentito parlare… !12 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 20. Dominio !13 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 21. Aggregato DB ORM Risorsa_1 Proprietà Richiesta_1 Richiesta_2 Utente_1 Metodi Risorsa_2 !14 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 22. ok.. basta una tabella di log !15 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 23. basta !16 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 24. basta duplicare tutte le strutture dati !16 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 25. basta duplicare tutte le strutture dati tenere tutto sincronizzato !16 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 26. basta duplicare tutte le strutture dati tenere tutto sincronizzato versionare tutto !16 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 27. basta duplicare tutte le strutture dati tenere tutto sincronizzato versionare tutto un bel flag “comando io” !16 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 28. basta duplicare tutte le strutture dati tenere tutto sincronizzato versionare tutto un bel flag “comando io” mapping! mapping! mapping! (cit) !16 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 29. basta uno storage ad eventi !17 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 30. NEventStore A persistence agnostic Event Store for .NET
 http://neventstore.org/ !18 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 31. CommonDomain la “colla” tra DDD e NEventStore !19 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 32. Aggregato DB ORM Risorsa_1 Proprietà Richiesta_1 Richiesta_2 Utente_1 Metodi Risorsa_2 !20 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 33. Aggregato EventStore Richiesta Creata Stato Common
 Domain Eventi Richiesta Approvata Prenotazione Confermata Prenotazione
 Respinta Risorsa
 Acquistata Comandi Risorsa
 Dismessa !21 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 34. Evento Chi Quando Dove Cosa Perché !22 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 35. Evento Chi Headers: User_1 Quando Timestamp: 2014-02-25T15:45 Dove Aggregato: Presentazione Cosa Slide Attiva: 1 Perché PresentazioneIniziata !23 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 36. Evento Chi Headers: User_1 Quando Timestamp: 2014-02-25T15:45 Dove Aggregato: Presentazione Cosa Slide Attiva: 1 Perché PresentazioneIniziata !24 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 37. A. var aggregate = repository.GetById<TAggregate>(id); B. aggregate.Command(a,b,c); C. repository.Save(aggregate, commitId, h => h.Add(k,v)); !25 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 38. A. var aggregate = repository.GetById<TAggregate>(id); B. aggregate.Command(a,b,c); C. repository.Save(aggregate, commitId, h => h.Add(k,v)); Store Commit Commit Headers Event1 Event2 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 !25
  • 39. A. var aggregate = repository.GetById<TAggregate>(id); B. aggregate.Command(a,b,c); C. repository.Save(aggregate, commitId, h => h.Add(k,v)); Store Commit Observers Commit Headers Event1 Event2 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Dispatch Commit Projections Process Managers Clients !25
  • 40. Command State !26 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 41. ubiquitous language Interrogazione Command State !26 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 42. Domain
 Exception ubiquitous language Interrogazione Command State !26 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 43. Domain
 Exception ubiquitous language Interrogazione Command Event (ok) State !26 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 44. Domain
 Exception ubiquitous language Interrogazione Command Event (ko) Event (ok) State !26 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 45. Domain
 Exception ubiquitous language Interrogazione Command Event (ko) Event (ok) Router State !26 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 46. Svantaggi !27 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 47. Quantità di codice dipende.. !28 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 48. Quantità di codice tanto !28 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 49. Quantità di codice tanto ma dannatamente semplice !28 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 50. Vantaggi !29 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 51. Focus su struttura dati !30 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 52. Focus su comportamento !30 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 53. Focus su comportamento business value !30 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 54. Decisioni prese su stato (stale) !31 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 55. Decisioni prese su stato corrente !31 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 56. Decisioni prese su stato corrente by design !31 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 57. Costo di implementazione esponenziale !32 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 58. Costo di implementazione lineare !32 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 59. Costo di implementazione lineare eventi++ !32 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 60. Testing complesso !33 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 61. Testing facile !33 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 62. Testing facile stato -> comando -> eventi !33 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 63. Collisioni transazioni (tutto o niente) !34 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 64. Collisioni merge intelligenti / replay !34 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 65. Collisioni merge intelligenti / replay by design !34 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 66. Integrabilità batch / etl / ws ad hoc / trigger !35 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 67. Integrabilità evento -> subscriber !35 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 68. Integrabilità evento -> subscriber push o pull !35 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 69. !36 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 70. !37 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 71. !38 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 72. !38 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 73. !38 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 74. !38 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 75. Nei test runner diventa !39 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 76. Join the dots !40 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 77. !41 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 78. Register Resource Resource Registered !42 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 79. !43 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 80. !44 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 81. !45 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 82. stato Handler eventi Interrogazioni allo stato in UL !46 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 83. !47 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 84. !48 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 85. !49 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 86. !50 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 87. !51 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 88. !52 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 89. Ricapitolando !53 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 90. Event Storming Common
 Domain NEventStore DDD #CDays14 – Milano 25, 26 e 27 Febbraio 2014 Machine Specifications !53
  • 91. http://github.com/andreabalducci/cdays14 !54 #CDays14 – Milano 25, 26 e 27 Febbraio 2014
  • 92. Elogio alla community “…gli user group sono stati lo strumento che maggiormente mi hanno permesso di imparare sia come scrivere software in modo nettamente migliore, sia come affrontare le altre componenti relative alla gestione di un prodotto o di un progetto. Ciò è stato possibile grazie al dialogo e al confronto con persone intelligenti e disponibili a scambiare gratuitamente le proprie idee, opinioni ed esperienze, col coraggio di riportare anche quelle fallimentari, invece di chiudersi nel proprio orticello cercando di nascondere i propri segreti. Questo è lo scambio culturale, che porta ad un’effettiva crescita, a cui tutti coloro che svolgono la nostra professione farebbero bene a partecipare e contribuire.” Elogio alla community - @ste8 #CDays14 – Milano 25, 26 e 27 Febbraio 2014 !55

×