173
Idea —> Post-It —> Test Verdi Idea Post-it Test Verdi! Alberto Brandolini [email protected] @ziobrando http://ziobrando.blogspot.com Andrea Balducci [email protected] @andreabalducci

Idea - post-it - test verdi

  • View
    813

  • Download
    0

Embed Size (px)

DESCRIPTION

Modellare un dominio applicativo può essere decisamente complesso; in questa sessione vedremo come Event Storming ed Event Sourcing permettono di prendere una idea, darle forma usando un rotolo di carta e dei post-it e tradurla in codice C# sfruttando BDD e Machine Specifications... alla velocità della luce. Presentazione a 4 mani di Alberto Brandolini e Andrea Balducci.

Citation preview

Page 1: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Idea —> Post-It —> Test Verdi

Idea

Post-it

Test Verdi!Alberto [email protected] @ziobrando http://ziobrando.blogspot.com

Andrea [email protected]

@andreabalducci

Page 2: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Idea —> Post-it —> Test verdi

Alberto [email protected] @ziobrando http://ziobrando.blogspot.com

Andrea [email protected]

@andreabalducci

Page 3: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Grazie a

Sponsor

Page 4: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrando

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 5: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 6: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addicted

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 7: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinker

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 8: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summoner

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 9: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summonerIdea thief

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 10: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summonerIdea thiefLean & Agile

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 11: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summonerIdea thiefLean & AgileEntrepreneur

avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 12: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summonerIdea thiefLean & AgileEntrepreneur…never satisfied avanscoperta

[email protected]

DDD-IT

XPUG - Romagna

Page 13: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Il problema

Page 14: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Costo delle modifiche

100 1 2 3 4 5 6 7 8 9

10

0

1

2

3

4

5

6

7

8

9

Complessità

Cos

to d

i mod

ifica

Label

Illusione del greenfield

“manutenzione”

Dobbiamo riscrivere

Non si può fare

Page 15: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 16: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Imponente

Page 17: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Imponente

Flessibile?

Page 18: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Ooops….

Page 19: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Il miglior modo per rimuovere il pattume dal

sistema è…

Page 20: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

non mettere pattume nel sistema

Page 21: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Altrimenti…

Page 22: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014© Alberto Brandolini 2013

Application

ApplicationApp

lication

Application

Applicat

ion

Database

Application App

lication

Database

ci ritroviamo con la solita architettura

Applic

ation

Page 23: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!14

…da portare sul cloud

Page 24: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014© Alberto Brandolini 2013

Page 25: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014© Alberto Brandolini 2013

Quando si fa refactoring?

Page 26: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014© Alberto Brandolini 2013

Quando si fa refactoring? Mañana!!

Page 27: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Ignorance is the single greatest impediment to throughput.

Dan Northhttp://dannorth.net/2010/08/30/introducing-deliberate-discovery/

Page 28: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Learning is the constraint

Dan Northhttp://dannorth.net/2010/08/30/introducing-deliberate-discovery/

Page 29: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Piano d’azione

Page 30: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Piano d’azione

1. Cominciare con il piede giusto

Page 31: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Piano d’azione

1. Cominciare con il piede giusto

2. Rimuovere gli ostacoli all’apprendimento

Page 32: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Piano d’azione

1. Cominciare con il piede giusto

2. Rimuovere gli ostacoli all’apprendimento

3. Iterare alla massima frequenza possibile

Page 33: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Event Storming!

Page 34: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Event Storming• Tutti in una stanza

• Rotolone di carta —> “unlimited modelling surface”

• Partiamo dai domain events!

• Raffiniamo il modello un passo alla volta

Page 35: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 36: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014Tutti in una stanza?

Page 37: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Tutti in una stanza!

• Risoluzione anticipata dei conflitti

• Visualizzazione di un artifact

• Possibilità di osservare l’aspetto umano

• Alto livello di energia.

Page 38: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Si, TUTTO lo spazio

Page 39: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 40: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 41: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Il dominio…

Page 42: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Prenotazione risorse

Page 43: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

Page 44: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

Page 45: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

Page 46: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Che è successo?

Page 47: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Bounded Contexts• Lavorando con le persone emergono i

naturali confini tra

• le porzioni del dominio —> subdomains!

• i modelli in essere —> Bounded Contexts

Page 48: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Ubiquitous Language

• la discussione ci ha portato ad una precisione del linguaggio sempre maggiore

• Il linguaggio è consistente e preciso all’interno di un Bounded Context

Page 49: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Aggregati ed Invarianti

• aggregati = unità di consistenza.!

• Gli aggregati vengono individuati sulla base del comportamento del sistema

• Le invarianti sono garantite dagli aggregati.

Page 50: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Roles & Responsibility

Page 51: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Prima capiamo cosa sta dentro agli aggregati

Page 52: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Poi capiamo che nome dargli

Page 53: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Conceptual CQRS

Command

User

issues

influences

External information

influencesRead Model

Domain Modelto

Event

raises

Projection

notified to

updates

Page 54: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Read Model

• Gli aggregati prendono decisioni sulla base dello stato corrente.

• Gli utenti prendono decisioni sulla base di quello che vedono…

Page 55: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014Vedo i dati vecchi…

Page 56: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Cambio!

Page 57: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!42@andreabalducci

Page 58: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Event Sourcing

!43

Page 59: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!44

Il nostro dominio ha una storia

da raccontare…

Page 60: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!45

…ma spesso ci accontentiamo dei titoli di coda

Page 61: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!46

Page 62: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!47

..invece di guardare tutta la storia.

Page 63: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!48

Page 64: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!49

Quante informazioni perdiamo ?

Page 65: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Il saldo è 6.684€

!50

Page 66: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!51

Data Dare Avere Descrizione operazione3/2 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 Saldo al 22/2 : 6.684

Page 67: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!52

Data Dare Avere Descrizione operazione3/2 160 Supermercato Le Fornaci - Castelfidardo4/2 1.500 ACME Spa - Stipendio Gennaio4/2 1.400 ACME Spa - Stipendio Gennaio

10/2 180 Supermercato Le Fornaci - Castelfidardo12/2 200 Mediaworld Ancona12/2 180 Pittarello Ancona14/2 80 Ristorante Osteria da Pippo17/2 200 IperSimply- Castelfidardo20/2 16 Autostrade Spa - Casello Bologna20/2 300 Mediaworld Bologna20/2 320 Carpisa Bologna20/2 75 Hotel Bologna21/2 16 Autostrade Spa - Casello Ancona22/2 180 amazon.it22/2 200 zalando.it

2.107 2.900 Saldo al 22/2 : 6.684

Page 68: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!52

Data Dare Avere Descrizione operazione3/2 160 Supermercato Le Fornaci - Castelfidardo4/2 1.500 ACME Spa - Stipendio Gennaio4/2 1.400 ACME Spa - Stipendio Gennaio

10/2 180 Supermercato Le Fornaci - Castelfidardo12/2 200 Mediaworld Ancona12/2 180 Pittarello Ancona14/2 80 Ristorante Osteria da Pippo17/2 200 IperSimply- Castelfidardo20/2 16 Autostrade Spa - Casello Bologna20/2 300 Mediaworld Bologna20/2 320 Carpisa Bologna20/2 75 Hotel Bologna21/2 16 Autostrade Spa - Casello Ancona22/2 180 amazon.it22/2 200 zalando.it

2.107 2.900 Saldo al 22/2 : 6.684

Due personeStessa Azienda

Page 69: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!52

Data Dare Avere Descrizione operazione3/2 160 Supermercato Le Fornaci - Castelfidardo4/2 1.500 ACME Spa - Stipendio Gennaio4/2 1.400 ACME Spa - Stipendio Gennaio

10/2 180 Supermercato Le Fornaci - Castelfidardo12/2 200 Mediaworld Ancona12/2 180 Pittarello Ancona14/2 80 Ristorante Osteria da Pippo17/2 200 IperSimply- Castelfidardo20/2 16 Autostrade Spa - Casello Bologna20/2 300 Mediaworld Bologna20/2 320 Carpisa Bologna20/2 75 Hotel Bologna21/2 16 Autostrade Spa - Casello Ancona22/2 180 amazon.it22/2 200 zalando.it

2.107 2.900 Saldo al 22/2 : 6.684

Due personeStessa Azienda

Carnivori

Page 70: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!52

Data Dare Avere Descrizione operazione3/2 160 Supermercato Le Fornaci - Castelfidardo4/2 1.500 ACME Spa - Stipendio Gennaio4/2 1.400 ACME Spa - Stipendio Gennaio

10/2 180 Supermercato Le Fornaci - Castelfidardo12/2 200 Mediaworld Ancona12/2 180 Pittarello Ancona14/2 80 Ristorante Osteria da Pippo17/2 200 IperSimply- Castelfidardo20/2 16 Autostrade Spa - Casello Bologna20/2 300 Mediaworld Bologna20/2 320 Carpisa Bologna20/2 75 Hotel Bologna21/2 16 Autostrade Spa - Casello Ancona22/2 180 amazon.it22/2 200 zalando.it

2.107 2.900 Saldo al 22/2 : 6.684

Due personeStessa Azienda

Carnivori

Auto senza telepass

Page 71: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!52

Data Dare Avere Descrizione operazione3/2 160 Supermercato Le Fornaci - Castelfidardo4/2 1.500 ACME Spa - Stipendio Gennaio4/2 1.400 ACME Spa - Stipendio Gennaio

10/2 180 Supermercato Le Fornaci - Castelfidardo12/2 200 Mediaworld Ancona12/2 180 Pittarello Ancona14/2 80 Ristorante Osteria da Pippo17/2 200 IperSimply- Castelfidardo20/2 16 Autostrade Spa - Casello Bologna20/2 300 Mediaworld Bologna20/2 320 Carpisa Bologna20/2 75 Hotel Bologna21/2 16 Autostrade Spa - Casello Ancona22/2 180 amazon.it22/2 200 zalando.it

2.107 2.900 Saldo al 22/2 : 6.684

Due personeStessa Azienda

Carnivori

Auto senza telepass

Lui & Lei

Page 72: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!52

Data Dare Avere Descrizione operazione3/2 160 Supermercato Le Fornaci - Castelfidardo4/2 1.500 ACME Spa - Stipendio Gennaio4/2 1.400 ACME Spa - Stipendio Gennaio

10/2 180 Supermercato Le Fornaci - Castelfidardo12/2 200 Mediaworld Ancona12/2 180 Pittarello Ancona14/2 80 Ristorante Osteria da Pippo17/2 200 IperSimply- Castelfidardo20/2 16 Autostrade Spa - Casello Bologna20/2 300 Mediaworld Bologna20/2 320 Carpisa Bologna20/2 75 Hotel Bologna21/2 16 Autostrade Spa - Casello Ancona22/2 180 amazon.it22/2 200 zalando.it

2.107 2.900 Saldo al 22/2 : 6.684

Due personeStessa Azienda

Lei compra entro un’ora da lui

Carnivori

Auto senza telepass

Lui & Lei

Page 73: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!52

Data Dare Avere Descrizione operazione3/2 160 Supermercato Le Fornaci - Castelfidardo4/2 1.500 ACME Spa - Stipendio Gennaio4/2 1.400 ACME Spa - Stipendio Gennaio

10/2 180 Supermercato Le Fornaci - Castelfidardo12/2 200 Mediaworld Ancona12/2 180 Pittarello Ancona14/2 80 Ristorante Osteria da Pippo17/2 200 IperSimply- Castelfidardo20/2 16 Autostrade Spa - Casello Bologna20/2 300 Mediaworld Bologna20/2 320 Carpisa Bologna20/2 75 Hotel Bologna21/2 16 Autostrade Spa - Casello Ancona22/2 180 amazon.it22/2 200 zalando.it

2.107 2.900 Saldo al 22/2 : 6.684

Due personeStessa Azienda

24/2 spesa a Castelfidardo Lei compra entro

un’ora da lui

Carnivori

Auto senza telepass

Lui & Lei

Page 74: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!53

Event Sourcing?

Page 75: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!53

Event Sourcing?ne ho sentito parlare…

Page 76: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Dominio

!54

Page 77: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!55

Proprietà

Metodi

ORM

DB

Risorsa_1

Richiesta_1

Richiesta_2

Utente_1

Risorsa_2

Aggregato

Page 78: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

ok.. basta una tabella di log

!56

Page 79: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!57

basta

Page 80: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!57

bastaduplicare tutte le strutture dati

Page 81: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!57

bastaduplicare tutte le strutture datitenere tutto sincronizzato

Page 82: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!57

bastaduplicare tutte le strutture datitenere tutto sincronizzatoversionare tutto

Page 83: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!57

bastaduplicare tutte le strutture datitenere tutto sincronizzatoversionare tuttoun bel flag “comando io”

Page 84: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!57

bastaduplicare tutte le strutture datitenere tutto sincronizzato

mapping! mapping! mapping! (cit)

versionare tuttoun bel flag “comando io”

Page 85: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!58

basta uno storage ad eventi

Page 86: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

NEventStoreA persistence agnostic Event Store for .NET

http://neventstore.org/

!59

Page 87: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

CommonDomainla “colla” tra DDD e NEventStore

!60

Page 88: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!61

Proprietà

Metodi

ORM

DB

Risorsa_1

Richiesta_1

Richiesta_2

Utente_1

Risorsa_2

Aggregato

Page 89: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!62

Stato

Comandi

Eventi

Aggregato

Common Domain

Richiesta Creata

Richiesta Approvata

Prenotazione Confermata

PrenotazioneRespinta

Risorsa Acquistata

Risorsa Dismessa

EventStore

Page 90: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!63

Evento

Quando

Cosa

Chi

Perché

Dove

Page 91: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!64

Evento

Quando

Cosa

Chi

Perché

Dove

Timestamp: 2014-02-25T15:45

Headers: User_1

Aggregato: Presentazione

Slide Attiva: 1

PresentazioneIniziata

Page 92: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!65

Evento

Quando

Cosa

Chi

Perché

Dove

Timestamp: 2014-02-25T15:45

Headers: User_1

Aggregato: Presentazione

Slide Attiva: 1

PresentazioneIniziata

Page 93: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!66

A. var aggregate = repository.GetById<TAggregate>(id);

B. aggregate.Command(a,b,c);

C. repository.Save(aggregate, commitId, h => h.Add(k,v));

Page 94: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!66

A. var aggregate = repository.GetById<TAggregate>(id);

B. aggregate.Command(a,b,c);

C. repository.Save(aggregate, commitId, h => h.Add(k,v));

Commit

Event1

Event2

Headers

Store Commit

Page 95: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!66

A. var aggregate = repository.GetById<TAggregate>(id);

B. aggregate.Command(a,b,c);

C. repository.Save(aggregate, commitId, h => h.Add(k,v));

Commit

Event1

Event2

Headers

Store Commit

Observers

Dispatch Commit

Projections

Process Managers

Clients

Page 96: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!67

Command

State

Page 97: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!67

Command

State

Inte

rrog

azio

ne

ubiq

uito

us la

ngua

ge

Page 98: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!67

Command

State

DomainException

Inte

rrog

azio

ne

ubiq

uito

us la

ngua

ge

Page 99: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!67

Command

Event (ok)

State

DomainException

Inte

rrog

azio

ne

ubiq

uito

us la

ngua

ge

Page 100: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!67

Command

Event (ko)Event (ok)

State

DomainException

Inte

rrog

azio

ne

ubiq

uito

us la

ngua

ge

Page 101: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!67

Command

Event (ko)Event (ok)

State

Router

DomainException

Inte

rrog

azio

ne

ubiq

uito

us la

ngua

ge

Page 102: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!68

Svantaggi

Page 103: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

dipende..

!69

Quantità di codice

Page 104: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!69

tantoQuantità di codice

Page 105: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!69

tantoQuantità di codice

ma dannatamente semplice

Page 106: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!70

Vantaggi

Page 107: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!71

Focus sustruttura dati

Page 108: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!71

Focus sucomportamento

Page 109: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!71

Focus sucomportamentobusiness value

Page 110: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!72

Decisioni prese sustato (stale)

Page 111: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

stato corrente

!72

Decisioni prese su

Page 112: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

stato corrente

!72

Decisioni prese su

by design

Page 113: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

esponenziale

!73

Costo di implementazione

Page 114: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!73

Costo di implementazionelineare

Page 115: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!73

Costo di implementazionelineare

eventi++

Page 116: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!74

complessoTesting

Page 117: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!74

Testingfacile

Page 118: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!74

Testingfacile

stato -> comando -> eventi

Page 119: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!75

transazioni (tutto o niente)Collisioni

Page 120: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!75

Collisionimerge intelligenti / replay

Page 121: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!75

Collisionimerge intelligenti / replay

by design

Page 122: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!76

batch / etl / ws ad hoc / triggerIntegrabilità

Page 123: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!76

Integrabilitàevento -> subscriber

Page 124: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!76

Integrabilitàevento -> subscriber

push o pull

Page 125: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!77

Page 126: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!78

Page 127: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!79

Page 128: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!79

Page 129: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!79

Page 130: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!79

Page 131: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!80

Nei test runner diventa

Page 132: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!81

Join the dots

Page 133: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!82

Page 134: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!83

Register Resource

Resource Registered

Page 135: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!84

Page 136: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!85

Page 137: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!86

Page 138: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!87

stato

Handler eventi

Interrogazioni allo stato in UL

Page 139: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!88

Page 140: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!89

Page 141: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!90

Page 142: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!91

Page 143: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!92

Page 144: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!93

Page 145: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!94

Ricapitolando

Page 146: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!94

NEventStore Common Domain

Machine Specifications

Event Storming

DDD

Page 147: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!95

http://github.com/andreabalducci/cdays14

Page 148: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014#CDays14 – Milano 25, 26 e 27 Febbraio 2014

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.”

!96Elogio alla community - @ste8

Page 149: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Conclusioni

Page 150: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Emersione rapida…

• … della complessità

• del problema business

• dei conflitti

Page 151: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Troppa complessità

Page 152: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

EventStorming non è la pillola per diventare

intelligenti

Page 153: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

EventStorming ci permette di scoprire dove abbiamo torto …il prima possibile

Page 154: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

rapporto costi/benefici

• Alcuni domini chiamano a gran voce EventSourcing

• …su altri non è che ci sia poi tutta questa complessità.

• ma…

Page 155: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

CRUDAssumo ORA di non avere

bisogno della storia del dato in futuro

Page 156: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014Quanto costa la colla?

Page 157: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Ignorance is the single greatest impediment

to throughput.

Dan Northhttp://dannorth.net/2010/08/30/introducing-deliberate-discovery/

Page 158: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Customer Satisfaction

Page 159: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Domain Events

Page 160: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Domain Events• Lo-Fi —> Gli esperti ci correggono

Page 161: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Domain Events• Lo-Fi —> Gli esperti ci correggono

• Transizioni di stato —> Maggior precisione e ricchezza del linguaggio

Page 162: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Domain Events• Lo-Fi —> Gli esperti ci correggono

• Transizioni di stato —> Maggior precisione e ricchezza del linguaggio

• Non ragiono più in tabelle. —> non costringo gli utenti ad adattarsi.

Page 163: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Domain Events• Lo-Fi —> Gli esperti ci correggono

• Transizioni di stato —> Maggior precisione e ricchezza del linguaggio

• Non ragiono più in tabelle. —> non costringo gli utenti ad adattarsi.

• Faccio le domande giuste

Page 164: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014UX

Page 165: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 166: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Scenari classici• Analisi redditività

• Fraud detection

• Analisi temporali

• Predittività e correlazioni (scenario walmart)

• …

Page 167: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014©  Alberto  Brandolini  2009

gli esperti ci aiutano a capire

e noi aiutiamo loro

Page 168: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Cicli corti

Page 169: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 170: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 171: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Per saperne di più…

• http://ziobrando.blogspot.it/2013/11/introducing-event-storming.html

• https://it.groups.yahoo.com/neo/groups/DDD-IT/

• 19 marzo a Roma / 2 aprile a Bologna

Page 172: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Grazie!

Page 173: Idea - post-it - test verdi

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Q&ATutto il materiale di questa sessione su

http://www.communitydays.it/

!Lascia il feedback su questa sessione,

potrai essere estratto per i nostri premi!

!Seguici su

Twitter @CommunityDaysIT

Facebook http://facebook.com/cdaysit

#CDays14