Idea - post-it - test verdi

Preview:

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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Idea —> Post-It —> Test Verdi

Idea

Post-it

Test Verdi!Alberto Brandolini!alberto.brandolini@avanscoperta.it @ziobrando http://ziobrando.blogspot.com

Andrea Balducci!andrea.balducci@prxm.it

@andreabalducci

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Idea —> Post-it —> Test verdi

Alberto Brandolini!alberto.brandolini@avanscoperta.it @ziobrando http://ziobrando.blogspot.com

Andrea Balducci!andrea.balducci@prxm.it

@andreabalducci

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Grazie a

Sponsor

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrando

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addicted

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinker

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summoner

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summonerIdea thief

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summonerIdea thiefLean & Agile

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

Post-it addictedVisual thinkerChaos summonerIdea thiefLean & AgileEntrepreneur

avanscoperta

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

About me@ziobrandoCertified DDD Trainer

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

alberto.brandolini@avanscoperta.it

DDD-IT

XPUG - Romagna

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Il problema

#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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Imponente

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Imponente

Flessibile?

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Ooops….

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Il miglior modo per rimuovere il pattume dal

sistema è…

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

non mettere pattume nel sistema

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Altrimenti…

#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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

!14

…da portare sul cloud

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

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

Quando si fa refactoring?

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

Quando si fa refactoring? Mañana!!

#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/

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Learning is the constraint

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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Piano d’azione

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Piano d’azione

1. Cominciare con il piede giusto

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Piano d’azione

1. Cominciare con il piede giusto

2. Rimuovere gli ostacoli all’apprendimento

#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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Event Storming!

#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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

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

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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Si, TUTTO lo spazio

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Il dominio…

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Prenotazione risorse

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Che è successo?

#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

#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

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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Roles & Responsibility

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Prima capiamo cosa sta dentro agli aggregati

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Poi capiamo che nome dargli

#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

#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…

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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Cambio!

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

!42@andreabalducci

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

Event Sourcing

!43

#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…

#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

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

!46

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

!47

..invece di guardare tutta la storia.

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

!48

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

!49

Quante informazioni perdiamo ?

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

Il saldo è 6.684€

!50

#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

#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

#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

#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

#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

#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

#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

#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

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

!53

Event Sourcing?

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

!53

Event Sourcing?ne ho sentito parlare…

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

Dominio

!54

#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

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

ok.. basta una tabella di log

!56

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

!57

basta

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

!57

bastaduplicare tutte le strutture dati

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

!57

bastaduplicare tutte le strutture datitenere tutto sincronizzato

#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

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

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

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

!58

basta uno storage ad eventi

#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

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

CommonDomainla “colla” tra DDD e NEventStore

!60

#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

#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

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

!63

Evento

Quando

Cosa

Chi

Perché

Dove

#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

#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

#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));

#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

#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

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

!67

Command

State

#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

#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

#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

#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

#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

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

!68

Svantaggi

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

dipende..

!69

Quantità di codice

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

!69

tantoQuantità di codice

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

!69

tantoQuantità di codice

ma dannatamente semplice

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

!70

Vantaggi

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

!71

Focus sustruttura dati

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

!71

Focus sucomportamento

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

!71

Focus sucomportamentobusiness value

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

!72

Decisioni prese sustato (stale)

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

stato corrente

!72

Decisioni prese su

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

stato corrente

!72

Decisioni prese su

by design

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

esponenziale

!73

Costo di implementazione

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

!73

Costo di implementazionelineare

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

!73

Costo di implementazionelineare

eventi++

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

!74

complessoTesting

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

!74

Testingfacile

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

!74

Testingfacile

stato -> comando -> eventi

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

!75

transazioni (tutto o niente)Collisioni

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

!75

Collisionimerge intelligenti / replay

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

!75

Collisionimerge intelligenti / replay

by design

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

!76

batch / etl / ws ad hoc / triggerIntegrabilità

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

!76

Integrabilitàevento -> subscriber

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

!76

Integrabilitàevento -> subscriber

push o pull

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

!77

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

!78

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

!79

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

!79

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

!79

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

!79

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

!80

Nei test runner diventa

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

!81

Join the dots

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

!82

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

!83

Register Resource

Resource Registered

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

!84

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

!85

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

!86

#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

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

!88

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

!89

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

!90

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

!91

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

!92

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

!93

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

!94

Ricapitolando

#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

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

!95

http://github.com/andreabalducci/cdays14

#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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Conclusioni

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Emersione rapida…

• … della complessità

• del problema business

• dei conflitti

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Troppa complessità

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

EventStorming non è la pillola per diventare

intelligenti

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

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

#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…

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

CRUDAssumo ORA di non avere

bisogno della storia del dato in futuro

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

#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/

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Customer Satisfaction

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Domain Events

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

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

#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

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

#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

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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Scenari classici• Analisi redditività

• Fraud detection

• Analisi temporali

• Predittività e correlazioni (scenario walmart)

• …

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

gli esperti ci aiutano a capire

e noi aiutiamo loro

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Cicli corti

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

#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

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Grazie!

#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