Press "Enter" to skip to content

GOTO 2017 • DDD Today – Modeling Uncertainty • Vaughn Vernon


[Musica]
[Applausi]
bene grazie mille per
prendendo il tuo tempo prezioso per partecipare
grazie ad Aberhart per avermi invitato
parlare e andare alla conferenza molto
prima conferenza classe in modo grazie così
quello che ho intenzione di parlare di oggi è
usando DDD nel nostro tempo moderno, quindi cos’è
DDD contemporaneo come in realtà questo discorso
è destinato a sottostimarti un po ‘perché
ricorda che sono un campione di semplicità ok
quindi qualunque cosa dirò sta andando
per essere la cosa più semplice che potrebbe
forse funziona bene e cosa sto andando
si spera che ti mostri come farlo
tagliare molte delle forse
incomprensioni o complessità
accidentale o addirittura intenzionale
complessità che puoi usare come te
sviluppare quindi cosa è il design basato sul dominio
circa oggi, quindi in realtà dominio guidato
il design non è cambiato molto da quando Eric
Evans ha codificato i modelli di cosa si tratta
ora 14 anni fa o qualcosa del genere
l’essenza del design guidato dal dominio è
ancora modellando un linguaggio ubiquo in
un contesto limitato ciò che probabilmente ha
cambiato è il modo in cui è limitato
il contesto è reso in produzione
in questi giorni se guardi attentamente
Il libro di Eric e, forse, forse
anche un po ‘leggere tra le righe
Penso che tu possa dire che Eric non lo era
opposto a tutti allo sviluppo di un monolite
ma ben strutturato e ben strutturato
monolite ben progettato
quindi potenzialmente potresti averlo davvero
più contatti limitati all’interno di uno
Una singola unità schierabile ovviamente non lo sono
cercando di leggere come mente questo è solo il mio
interpretazione delle sue espressioni
di nuovo conosci la vipera prima dell’anno 2003
linguaggio onnipresente in un contesto così limitato
ancora il segno distintivo del dominio guidato
design ma perché abbiamo un limite
contesto un confine dove modelliamo a
linguaggio ubiquo che avremo sempre
più contesti limitati è solo
perché lo scopo di un contesto limitato
dovrebbe essere abbastanza limitato l’ambito di
il tuo contesto limitato dovrebbe essere limitato
a poco la lingua che la tua squadra
parla e si sviluppa e quindi è
riflesso in un modello di dominio così ieri
Mi è stata fatta la domanda dove ti trovi
mantieni il modello in contrasto con il codice
e ancora un design molto importante
la filosofia del design guidato dal dominio è
il fatto che il modello sia il codice così
non si disegnano diagrammi UML come modello
e poi scrivere il codice dopo di loro
sono uno sullo stesso e quindi vedrai
questo modello si riflette come ho avuto qui in a
contesto single bounded forse usando
oggetti che non devi usare oggetti
potresti usare la programmazione funzionale
questi potrebbero essere record o strutture
che vengono passati in giro a
funziona ma dal momento che hai questo tipo
di confine attorno a un contesto in cui tu
parlare un linguaggio ubiquitario specifico
avrai più onnipresenti
lingue contesti multipli e
in questi giorni si vedrà il multiplo
contesti limitati resi in più
processi e se vuoi
sai che non posso essere diverso da
la maggior parte degli altri oratori qui dobbiamo
Dì qualcosa sui micro-servizi così
potresti pensare a un contesto limitato come
un micro servizio e penso che sia un
approccio degno non sempre, ma può essere
soprattutto se la tua lingua tende ad essere
piccolo è almeno un buon primo
approccio perché potresti avere delle ragioni per
rompere un’entità specifica o aggregare
di una singola unità di distribuzione per il ridimensionamento
o qualunque cosa possa essere
forse il tasso di cambiamento è diverso
rispetto al resto del contesto limitato e
quindi vuoi la libertà di scorrere
questo più rapidamente rispetto al resto del
contesto limitato ci possono essere vari
motivi per distribuire diversamente ma se tu
iniziare con l’ idea che un limite di
il contesto è un micro servizio è un
luogo eccellente per iniziare e mantenere il
contesto limitato piccolo così quando tu
considera il modo in cui il computing sta andando
in questi giorni ti dirò che devo essere il prossimo
a qualcosa che sta bloccando il mio segnale
eccoci
cos’è questo lo fai ciò che è
ok sai che in realtà potrebbe essere
interpretato in molti modi diversi
probabilmente la prima volta che guardi te
Diciamo che sto guardando una specie di galassia
si sa le stelle in una galassia, ma
in realtà questo potrebbe essere il
atomi in una cellula umana così quando siamo zoom in
i poteri di 10 cose tendono a sembrare
cose ad altri livelli e questo può essere
vero di voi lo sapete è questo tutti i sistemi
punti luce leggeri che rappresentano
tutti i sistemi su Internet o è
un punto luce
di tutti gli attori che corrono in un singolo
sistema potrebbe avere diversi
interpretazioni ma che cosa questo
illustra che quando ne abbiamo così tanti
cose che accadono nel nostro computer
sistemi indipendentemente dal fatto che lo siamo
usando monoliti che si integrano con molti
contesti limitati o eredità illimitata
sistemi qualunque cosa capita di essere
occuparsi di incertezza ovunque non
determinismo perché non sappiamo quando a
raggio di luce raggiungerà un posto o il
altro e non sappiamo quale ordine il
raggio di luce apparirà in un posto o
un altro ci possono essere fattori che noi
non sono in anticipo quindi volevo chiarire
qualcosa su ciò che Donald Knuth
ho detto che non ho mai incontrato Donald Knuth così sono
non conosci come il Donald Knuth
esperto qui o cercando di parlare per lui
ma la maggior parte della gente ricorda questa affermazione
di Donald Knuth dice che è prematuro
l’ottimizzazione è la radice di tutto il male
ok questo è vero ma a volte questo è
usato contro l’ottimizzazione lo sai
cosa ha detto veramente Donald Knuth se tu
Guarda la citazione completa questo è quello che lui
ha detto che dovremmo dimenticare il piccolo
inefficienze è l’ottimizzazione prematura
la radice di tutti i mali quindi ce ne sono alcuni
ovvi ottimizzazioni che dovremmo usare
e dovrebbe trarre vantaggio dal nostro
calcolando altrimenti qualcos’altro
Donald Knuth ha detto che sarà vero per noi
per le persone che sono più che casualmente
interessato ai computer e alla scrittura
software dobbiamo avere qualche idea del
hardware sottostante quello che siamo
sviluppando per e l’ambiente quello
stiamo sviluppando in altrimenti il
i programmi che scriviamo saranno piuttosto strani
Adoro questa affermazione, sai che è così
Dice solo tutto ciò che abbiamo avuto
sai negli anni di andare oltre
e più lontano da una conoscenza del
hardware che dovevo sapere molto
sui microprocessori molto sul
memoria disponibile in un piccolo PC che ho avviato
lo sviluppo di software quando il PC IBM era
floppy doppio nuovo di zecca e il meglio di noi
poteva fare in quei giorni era di circa 256 K
di ram va bene
da allora abbiamo teso solo a sapere
metti strato su strato su strato e noi
non so come funzionano davvero le cose dentro
ma penso che lo sarà
necessario agli sviluppatori per iniziare davvero
prendendo questo seriamente nei prossimi pochi
anni ed ecco una buona ragione per cui così se
vai fino all’anno 1973
e menzionerò tra un istante perché lo sono
usando l’anno 1973 puoi vederlo
la predizione è stata fatta anche prima da
La legge di Moore o la predizione di Moore se tu
lo faranno i microprocessori
continua a circa sai doppio
in velocità ogni pochi anni e quella tendenza
ha continuato ad accadere e anche che il
transistor e microprocessori lo farebbero
continuano a crescere anno su anno che
la seconda tendenza è continuata, ma in giro
l’anno 2003 abbiamo raggiunto un livello in cui
per vari motivi microprocessori
non potrebbe eseguire nello stesso tipo di
raddoppiando in velocità la crescita o la velocità
avevano negli anni passati quindi cosa ha fatto
il cambiamento è il fatto che i core e iper
threading ha iniziato ad essere evidente in
processori ora so che questo non è nuovo
notizie per te ma quanti software
i progetti non sono davvero usati
i core e un microprocessore ai loro
il miglior vantaggio se si è comunque
benvenuto all’incertezza la ragione che io
citato l’anno 2003 è quando Carl
Hewitt e alcuni colleghi si sono inventati
l’idea di attori come in attori come il
oggetti primitivi nel calcolo del
gli elementi primitivi o concetti
all’interno di informatica e attori un attore il
Il modello dell’attore e il sistema dell’attore divennero
sai molto in anticipo sui tempi
ok, Carl Hewitt era almeno
almeno 10 anni o 12 anni prima del suo
tempo perché Joe Armstrong non si è classificato
di reinventare attori nell’industria senza
anche conoscendo il lavoro di Carl Hewitt
o non molto comunque quando lui e
e il suo team ha iniziato a sviluppare il
Lingua di lingua inglese così quando inizi a utilizzare
strumenti come la concorrenza del modello di attore
o almeno una sincronia diventa reale
cosa e questo è perché multiplo
gli attori stanno operando in tempi diversi
cornici di altri attori e loro sono
agire in base ai messaggi che loro
hanno nella loro casella di posta e stanno agendo
basato sulla fetta del processore o
core che lo ottengono in un dato momento
fondamentalmente un thread ma indipendentemente da come
il nostro contesto limitato individuale o micro
i servizi sono implementati internamente
abbiamo ancora una sincronia o concorrenza
e non determinismo intorno al tutto
sistema perché stiamo pubblicando dominio
gli eventi su un contesto limitato più
probabilmente almeno se stai usando sai
l’ approccio più robusto all’integrazione
e collaborazione all’interno
contesto limitato, quindi stai usando eventi
e altri contesti limitati stanno reagendo
ai tuoi eventi anche se internamente
usa ancora una metafora di blocco per o a
paradigma di blocco per cui dovrei dire
elaborando gli eventi internamente così quando
affronti questa situazione
benvenuti all’incertezza, questo è
ciò che i nostri cervelli vogliono questo è ciò che è nostro
il cervello vuole che vogliamo l’evento uno due e
tre per colpire un disco in questo ordine
e vogliamo leggere quegli eventi in
lo stesso ordine e vogliamo reagire
loro esattamente nell’ordine che è giusto
quello che vogliamo il nostro cervello lo bramano ora io
pensa che probabilmente ce ne sono alcuni qui
che hanno già abbracciato le idee
di attore di parallelismo di concorrenza
modello e così via e e loro sono
si stanno almeno abituando, se no
molto esperto in questo, ma questo non lo è
il modo in cui le cose accadono a volte
succede in questo modo ma chiunque ci provi
per venderti esattamente una volta la consegna e
la consegna ordinata esatta non lo è
essendo completamente schietto perché lo è
impossibile e se c’è anche il
possibilità una singola possibilità per
questo evento o questo evento per arrivare
di ordine
devi pianificare che accada sempre
quindi puoi anche pianificare e progettare
nel tuo software che l’incertezza in a
sistema distribuito è solo un dato di fatto è
qualcosa che si sta andando ad avere per
vivere con così ho trovato questo davvero fantastico
definizione di incertezza è il
stato di essere incerto
e bene sai cosa sta dicendo
ok mio signore. scrittura ovvia o l’ o
Il dizionario di Webster è ovvio ma
sai che ci dà un suggerimento
qualcosa di incertezza come uno stato ah
okay, siamo abituati a trattare con lo stato se
siamo nello stato di incertezza noi
può ragionare su quello stato e sul design
intorno ad esso , prendiamolo da lì
l’incertezza ha sinonimi
imprevedibilità rischiosità inaffidabilità
cambio probabilità precarietà eNOS
variabilità delle abilità sai tutto
questi davvero questo sinonimo per tutti
questi sinonimi ci mettono a disagio
vero, siamo come boof e lo sai
So cosa stai pensando in questo momento
soprattutto se vivi in Germania sei
dicendo che affronto ogni incertezza
mattina intendo la prima cosa in
mattina la vasca da bagno tedesca che sorta di
tipo di atti come una doccia, ma non
interamente sai che conosci il
differenza la differenza tra il
livello del pavimento e il livello del
fondo della vasca e l’altezza
che devi sollevare la gamba in a
superficie scivolosa
è solo pazzesco , non lo so, lo sai
è come se fosse la vasca da bagno
Lo stilista tedesco della vasca ha detto bene
devi pulire te stesso così qui vai
lo sai ma sai che ecco come sembro
a questo intendo anche stamattina
ora non immaginatelo troppo attentamente
Sollevo la gamba sinistra e comincio a camminare
in questo e mi rendo conto che sai cosa
questo non è come fare un doccia a tutti
questo è come andare su un aumento si conosce in
i tuoi piedi nudi su una superficie scivolosa due
di quelle cose che vorrei quasi
certamente non scelgo mai di fare da solo
va bene
ora entri nella vasca da bagno ed è così
troppo stretto
ci sono angoli sul lato di nuovo è
scivoloso se non si erge nel
centro e tipo di shimmy fino al
l’acqua potrebbe essere completo disastro, ma
finalmente finalmente ora ecco qui è davvero
La cosa circa l’incertezza del
La vasca da bagno tedesca è quando hai finito bene
ora è il contrario ora che devi
sollevare la gamba e salire su una inferiore
superficie spingendoti in avanti
il che significa che questo piede scivolerà
questo va a colpire un asciugamano che è
sulla tegola a destra e voglio dire che ho
per spiegare ulteriormente la vera ragione
perché la Germania non ha Davey così
Voglio dire, devi chiamarlo così com’è
quindi ecco la cosa sono gli americani
dipendente da docce piatte con un sacco di
stanza in loro devo ammettere ma fa
questo significa che non posso non prenderlo
una doccia in Germania, ma è una specie di
come la nostra dipendenza abbiamo una dipendenza
bloccare il diritto su un oggetto client non
non a un altro sistema, sono solo
parlando di un oggetto Java o altro
tipo di oggetto in alcuni VM che fanno un
invocazione del metodo su un altro oggetto
chiamiamolo un server perché
fornisce qualche servizio e questo è un
bloccando l’invocazione e tu sai cosa noi
Mi sento davvero stupito di questo no
siamo come oh uomo, non so nient’altro
il mondo intero è tutto il mio universo
semplicemente comodo adesso
perché non so nulla altro sta per
capita fino a quando questo server non termina e io
avere qualche tipo di risultato e mi occuperò
con quello in qualche modo va bene così siamo
dipendenti da quel tipo di pensiero che siamo
anche dipendente – sai esattamente una volta
consegna e ordine totale che è il
il nostro cervello vuole pensarci
assuefatto allo stoccaggio che è completamente
transazionale e non solo transazionale
su una singola origine dati un singolo schema
o un tavolo o quello che sembra essere
ma vogliamo una coerenza transazionale
ogni posto tutto in una volta a destra X a globale
transazione a due fasi commettere qualsiasi cosa
ti piacerebbe chiamarlo ora quello che voglio
dirti è che essere a disagio è
ok e proprio come devo capire
come fare una doccia in Germania senza
uccidendo me dobbiamo capire come
per usare sai sistemi distribuiti in a
modo non distruttivo in un modo in cui
anche se non possiamo prevedere ciò che è
succederà che succederà ancora
con esso quindi non aver paura di questo
sentire ora ecco qualcosa in un altro modo
per confrontare questo lo sai che questo è
chiamato stereogramma auto lo sai
cosa c’è in questo auto stereogramma così tu
vedi che vedi questo tipo di grafica
non ha quasi senso c’è forse un
piccolo schema qua e là che tu
può tracciare ma se ti strizzi gli occhi
e tipo di attraversare leggermente uno o entrambi
occhi c’è uno squalo lì dentro fa
qualcuno qui lo vede che alcune persone lo vedono
come va bene , solo alcune persone vedono
come se non lo sapessi, sai che non lo so
so perché devo provare a vederlo
ma ora riesco a vederlo. Mi sono allenato da solo
per vederlo e dopo ti alleni
per vedere l’immagine che è attentamente
nascosto nello stereogram dell’audio automatico o
fissa lo stereogramma automatico, quindi conosci te
puoi quindi iniziare a vedere prontamente
loro e tu puoi semplicemente sceglierli
perché tu insegni a te stesso, impari
per stare bene con l’attenzione
oggetto nascosto e trattare con esso e io
pensa che questo tipo di descrive il
situazione in cui siamo con te lo sai
i nostri processori in questi giorni attentamente
nascosto in questo processore è multiplo
core sono a nostra disposizione che dovremmo
essere con loro e dovremmo usare
intelligentemente per fare il nostro lavoro
più veloce abbiamo bisogno di rompere le attività e
farli accadere contemporaneamente o in
parallelo e quindi cosa succede a noi
perché siamo dipendenti da certezze – –
blocco – sai sincrono
operazioni totali in ordine assoluto
garanzie in quel momento, a cui tendiamo
costruisci una fortezza intorno ai nostri confini
contesto e questa fortezza può essere
reso così in modo che qui abbiamo
un evento di dominio che vagabonda a
trovando la strada per i nostri confini
contesto e in definitiva vogliamo fare
qualcosa nel nostro modello di dominio che
riflette o reagisce al fatto che
vediamo arrivare dall’esterno ma
prima che lasciamo che il modello di dominio ce l’abbia
quello che faremo è costruire un
fortezza al nostro livello di infrastruttura e
questa fortezza sta per garantire che
non ci sono duplicati di questo
evento particolare e che questo evento è
ricevuto e trattato bene no
ricevuto ma affrontato nell’esatto
ordinando che si sia verificato, va bene
cosa vogliamo fare e così costruiamo
strutture come questa creiamo una D
duplicatori in modo che se vediamo l’ evento uno
rientrando al nostro limite
contesto ci assicuriamo che l’evento uno
è visto solo una volta e anche noi
riscritto in modo che se l’evento due è
latente ed è finalmente ricevuto che siamo
andando a cercare, conserveremo tutto
di questi eventi fino a due arriva e
poi una volta che gli eventi ordinati sono stati
completamente visto in un blocco che stiamo per
rilasciali all’interno che è
perché stiamo cercando di modellare per
certezza che vogliamo trattare con le cose
in questo modo conosci uno dei maggiori
problemi con questo è difficile è davvero
difficile ottenere questo diritto roba ci vuole un
molto spazio di archiviazione per te
persistono queste cose e quando possiamo
cancellali quando è sicuro eliminarli
il fatto che abbiamo finalmente visto l’evento
due in ordine quando è sicuro da eliminare
sai in questo caso cancellare gli eventi uno
due e tre da qui perché abbiamo
già visti e noi non dobbiamo
preoccupati di vederli
mai più giusto è dopo un giorno è
dopo alcuni giorni o una settimana intendo chi
può dire quando questo potrebbe accadere
di nuovo e così quando ci si trova in
uno di queste situazioni è giusto
diventa difficile e tu sai cosa noi
non ho ancora risolto alcun problema commerciale
giusto e questo è quello che siamo che sia
davvero quello che dovremmo fare è
risolvere i problemi di business quindi lascia andare
tutto questo sai in testa e scopri come
per modellare l’incertezza altrimenti sei
sarà bloccato in questa situazione
proprio dove dici, ferma tutto
destra
smetti tutto okay, vado avanti sono pronto
ora giusto non possiamo non possiamo continuare a
software di modello in questo modo perché non c’è
no ora non c’è ora ci c’è
in realtà un bug globale urgente è un
insetto insetto che è universalmente
infettare tutti i sistemi è questo
a destra in modo da guardare fuori per l’incertezza
poi si sa come abbiamo a che fare con
i sistemi distribuiti di incertezza sono qui
per rimanere ho detto che alcuni mesi fa io
non pensavo fosse così divertente ma
la gente rideva come una pazza, ho detto
solo i sistemi distribuiti sono qui per
rimani se non ti piace cambiare carriera
sai come forse aprire un ristorante se
apri un ristorante che stai solo andando
di utilizzare sistemi distribuiti voi
non li svilupperemo più così bene
modellare l’incertezza conta importa
perché i nuclei sono importanti per le nuvole
stiamo stiamo distribuendo nel cloud
le cose stanno andando e stanno andando dinamicamente
cose di crash cose si si ri ripristinati
so che è lì è una cosa reale
microservices importa è importante per essere
in grado di cambiare la cadenza su qualsiasi dato
micro servizio o il tasso di variazione
o la latenza della scalabilità è importante
perché le reti sono ovunque
e non non solo reti ma reti
di cose giuste Internet of Things e
tutte queste cose sono a buon mercato sono
tutto a buon mercato e quindi sono
avvenimento
sono un dato di fatto se vuoi intervistare
per un altro lavoro
conosci un anno o due da adesso
probabilmente dovrò sapere molto
su questo se non lo stai già bene
cosa facciamo su di esso
una cosa che Alan Kay ha detto e ho capito
per dirti che sono un grande fan di Alan Kay
essere un vecchio chiacchierone che conosci
Alan Kay per me ne ha così tanti
cose geniali da dire tranne dove
non siamo d’accordo ma tu sai una cosa
lui dice che sono d’accordo con lui
che la cosa interessante degli oggetti
non è l’implementazione del
oggetto interno
sono i messaggi tra gli oggetti così
i nomi degli oggetti come nei ruoli
che suonano e i messaggi che sono
scambiati tra loro sono i
cose interessanti e Alan Kay si riferisce
a questo come il MA va bene la mamma questo è un
Termine giapponese che potrei non dire
completamente correttamente ma MA
significa fondamentalmente ciò che esiste tra e
quindi dice che questo è ciò che ha veramente provato
era la cosa importante del
idea di oggetti ora molti di noi hanno speso a
decennio o due decenni o più pensando
riguardo l’interno di queste cose
in primo luogo giusto solido non sono io non sono
mancandoti di rispetto, sai che è un
buon principio di progettazione ma possiamo prendere
troppo lontano perché immagina questo
la cosa è potenzialmente una macchina disordinata
internamente è un attore vero
riceve un messaggio asincrono
so che è davvero super importante che io
sono
obbedendo al principio aperto-chiuso in
proprio in questo caso, ciò che conta davvero
è che ho un design che è buono
abbastanza per gestire questo messaggio in arrivo
in particolare e ciò che è interessante è
i nomi e i ruoli dei due
oggetti e il nome del messaggio
l’intento che è destinato a verificarsi è il nostro
linguaggio ubiquo che è ciò che DDD
sottolinea è il linguaggio onnipresente
e quindi ecco la cosa vera di a
parallelismo di simultaneità di sincronicità
insieme al design degli oggetti pensa al
messaggi in mezzo e stiamo sviluppando
sistemi reattivi quindi dobbiamo pensare
sui messaggi tra altri
micro-servizi di piccole macchine quindi ecco
lo stato di essere incerto Pat Helen
hai letto la sua vita di carta oltre
transazioni distribuite che qui ha
leggi che non abbastanza ti sto dicendo a te
devo andare a leggere questo documento in realtà
è d’accordo con DDD ma tu lo sai per intero
e io non so cosa sa Pat Helen
riguardo DDD ma questo è quello che Pat Helen
ha detto in questo articolo che è stato anche
vita aggiornata oltre distribuita
transazioni che dice che in un sistema
dove non puoi contare su distribuito
transazioni la gestione di
l’incertezza deve essere implementata nel
la logica aziendale va bene e Pat
Helen riconosce questo ora Pat Helland
discute questa idea di un’attività che è
un’attività partner quindi due entità
indipendentemente da dove sono, sai
quale contesto limitato sono in uno
potrebbe essere negli ordini che l’altro potrebbe
essere in adempimento qualunque cosa tranne loro
scambiare messaggi e la ricevuta di
un messaggio è chiamato attività partner
l’invio di un messaggio è chiamato a
attività partner e Pat Helen lo dice
ecco un’idea che puoi usare per
trattare con
– stai modellando l’incertezza ora Pat
Helen non approfondisce il tuo modo di procedere
in realtà esegui questo, ma quando leggo
il suo articolo è solo una specie di idea
che ottengo ho l’idea che si sa
un’attività può essere modellata come partner
attività in cui registreremo
un’attività quindi abbiamo un partner che
è fondamentalmente un’entità da qualche parte a destra
questo è il nostro partner e l’attività
ci dicono che a svolgere questo
diventa una coppia e questa coppia sta per
essere mantenuto internamente nella nostra entità
nella nostra entità locale perché è nostra
partner e dobbiamo sapere se abbiamo
visto prima
ora potresti modellare l’incertezza in questo
in modo che possa richiedere un sacco di spazio aggiuntivo
anche se può richiedere molto
sovraccarico per ricaricarli nel tempo se
attività se attività partner
continuare avanti e avanti per un lungo periodo di
tempo e persino Pat Helen dice che lo sai
devi pensarci perché
ci può essere un’enorme quantità di
memoria che conosci RAM utilizzata o in corso
RAM utilizzata e molto nella persistenza e
così via, quindi voglio continuare
So dove dovremmo effettivamente mettere
questo penso che abbia bisogno di essere nel cuore
del software giusto modelliamo questo
perché siamo nel business dell’uso
calcolo distribuito è una questione di
Infatti non possiamo sfuggire al fatto che
il calcolo distribuito è assoluto
necessità da ora e andare avanti
è solo il modo in cui sta per essere e
quindi fa parte dei nostri affari è parte
del modello di business e lo abbracciamo
e così accettiamo il fatto che abbiamo
incertezza e in realtà è meno
complesso è giusto che sia meno complesso e
Ho intenzione di dimostrare che è meno
complesso per modellarlo in questo modo, quindi abbiamo bisogno
un modello esplicito giusto abbiamo il nostro
attori o le nostre entità aggregate
qualunque cosa tu voglia chiamarli
sai che gli eventi stanno scorrendo tutto intorno
questi sono i piccoli oggetti arancioni e
gli oggetti blu sono comandi e
loro stanno andando dappertutto e
alcuni di loro sono stanno essendo sai sorta
di filtrato in un contesto limitato e
essere agito e mentre altri sono in essere
ignorato e gli eventi vengono emessi e
e continuiamo a farlo così abbiamo
per identificare il nostro dominio principale e lasciami
solo tu sai dire se stai lavorando
questo ambiente che è un p2p sai
un’economia peer-to-peer in cui i clienti sono
proporre brevi lavori che soddisfano la necessità di
essere fatto potrebbe essere qualsiasi cosa dal mio io
ho bisogno di qualcuno che faccia camminare il mio cane per avere un
finestra rotta per favore vieni e aggiusta il mio
finestra e poi qualche operaio è da qualche parte
sto per dire che farò quel lavoro e io
d’accordo con i tuoi prezzi e così via
giusto e potresti guardare questo e dire
sì, il front end è così importante
vogliamo che questo sia un utente coinvolgente
interfaccia per loro per l’abbinamento
tra clienti e lavoratori, ma dove lo fanno
pensi che il vero dominio di base sia dove
pensi davvero fare soldi in questo
situazione sai che è in realtà
probabilmente nel prezzo perché dobbiamo
assicurati di conoscere il tipo di
lavoro che viene fatto in uno specifico
quartiere demografico qualunque sia
capita di essere e dobbiamo saperlo
che quel lavoro è abbastanza costoso da
il cliente e il lavoratore sta accettando a
prezzo equo e così via e, e se
E se fosse programmato per una vacanza
vogliamo essere sicuri che quello
il lavoratore fa più soldi perché è un
vacanza vogliamo assicurarci che noi
fare più soldi perché stiamo gestendo
questo in una vacanza che sai che stiamo provando
per scoprire dove vogliamo mettere il nostro
investimento nella conoscenza e sto andando a
Diciamo che probabilmente non è per lo più qui
probabilmente nel prezzo quindi devi averti
devi scegliere il tuo dominio principale
attentamente così dall’abbinamento quando a quando a
il cliente propone
un lavoro che una proposta di lavoro del cliente ometterà a
proposta presentata evento questa proposta
l’evento presentato verrà visualizzato nel prezzo
e sarà visto in una programmazione e
allora ognuno di questi contesti limitati lo farà
fare una sorta di sapere logica di business
questo dirà che il prezzo è negato
o il prezzo è approvato per esempio
dove la pianificazione è negata e il
la programmazione è approvata okay abbastanza
caso d’ uso semplice ma è distribuito
usa il caso, quindi come gestirli?
tipi di situazioni in cui accadono
duplicare quando accadono fuori servizio
quindi ecco una situazione in cui potremmo
ricevere lo stesso evento più volte
il che significa che stiamo andando a tradurre
quell’evento nello stesso comando
più volte e sarà
ricevuto da qualche entità più volte
in realtà la soluzione semplice a questo
è mantenere uno stato semplice che ti permette
per determinare ho visto questo comando
già ok
quindi, ciò significa che non importa
quante volte hai visto questo
evento e tradotto il comando il
l’entità sta per modificare solo il suo valore
una volta questa particolare relazione o
Associazione e sta per emettere un
unico evento c’è quello era il
commutativo il non commutativo
operazione sei tu lo sai che sei ancora
ricevere più eventi tradotti in
comandi multipli ma dobbiamo avere
una sorta di identità di nuovo tipo
quella attività partner che ci permette di
guarda indietro e dì che ho visto questo
attività particolare da questo particolare
partner giusto e quindi non solo
mantenere uno stato ma manteniamo un ID
associato a quello stato, ma ancora
può essere
possiamo fare una parte precisa del nostro modello
cose simili con una sequenza che è un
ordina cosa succede se riceviamo l’evento due fuori
di ordine e processiamo l’ evento
uno e tre e diventano
comando sai che corrisponde a uno
e tre e ora ne abbiamo alcuni
incertezza qui perché il primo passo ha
si è verificato il passaggio tre ma
il secondo passo non si è ancora verificato cosa fai
Aspetti solo che il passaggio tre si verifichi
e poi fai qualcosa per te
emettere un evento che dice questo piccolo mini
il processo è terminato e tu sei
usando lo stesso tipo di sguardo indietro o
dichiaro di conoscere la macchina qui che dice
il passo uno due e tre ha completato e
sai cosa stai modellando il
affari questo è il modo in cui il business
il lavoro ora funziona ora lo è
non deterministico , non possiamo dire che non lo facciamo
anche sapere se questo sarà effettivamente
alla fine capita ma di cui parlerò
Tempismo in pochi minuti okay, se noi
voglio voler modellare il più vicino
centro di realizzazione okay, semplicemente
cercare qualche tipo di indicazione che a
centro di adempimento ci ha risposto
attraverso un evento e ci la sta dicendo
distanza e l’ intervallo di tempo, ad esempio
che possono operare e così noi
scegliere il più vicino quando abbiamo più
scelta potremmo scegliere il primo o il
più veloce in questo caso anche se 1.3
potrebbe non essere il più vicino che fosse il
risponditore più veloce
ed ancora che andremo a scegliere quel
quel risponditore e quando l’altro
finalmente arrivato cosa possiamo fare noi possiamo
nota che arrivano ma non lo siamo
intenzione di emettere un nuovo evento perché abbiamo
già scelto il primo e qualche volta
è necessario modellare un processo
manager di nuovo non aver paura di
questo sembra un po ‘ come lo sai questo
ragno pazzo che tu sai che lui ha
veleno e tu ne hai paura ma
in realtà sono solo alcuni
aggregati o entità che stanno emettendo
eventi
molto simile a quello che abbiamo appena camminato
attraverso e il gestore dei processi è a
posizione centrale per rintracciarlo e poi
il gestore dei processi emette i comandi su
ottenere altro lavoro come vede questo
il flusso di lavoro si verifica e, naturalmente, dobbiamo
affrontare i tempi perché il tempismo sei tu
sapere cosa succede se ci, se non lo faremo mai
ricevere quel secondo o terzo evento o
quarto o quinto o qualunque cosa accada
per stare bene abbiamo bisogno di un modo per guardare indietro
e scopri dove sai dove
questo evento potrebbe essere ma è anche buono
per sapere cosa ti abbiamo già visto
sapere se stai usando un duplicatore D o a
resequenced
fuori nella fortezza non sai dove
il tuo processo aziendale sta proprio ora
giusto perché non stai modellando il
affari che stai cercando di prevenire
incertezza quindi lasciamo l’incertezza
attraverso e ora permettiamo il business
stato per riflettere lo stadio che abbiamo
già raggiunto e dove potremmo avere
riconosciuto una condizione di fallimento o a
almeno una sorta di grave latenza così
ecco alcune euristiche di modellazione che tu
può passare in questo mondo incerto che
ora ci occupiamo prima di tutto di te
non possedere l’ intervallo di tempo come sviluppatore
devi impegnarti con il business no
solo per il linguaggio onnipresente ma per
determinare quale arco di tempo è
accettabile per il business per quando
questo tipo di situazioni timeout o
raggiungere una sorta di zona di avvertimento
devono impegnarsi con il business da fare
quello e qui è la cosa che sono giusto
cercando di proteggerti perché se il CEO
di una start-up, dice bene facciamolo
cinque minuti e questo e finisce
causando problemi con i clienti allora il
Il CEO può dire bene lo sai forse
dovrebbe essere dieci minuti se lo dici tu
dovrebbe essere di cinque minuti e provoca il taglio
i problemi per il cliente sono lontani
cosa diversa, quindi non è così
appartiene a te il secondo è
essere a disagio, ma prendere decisioni così
andare a disturbare gli affari, okay
quando dovrebbe come dovrebbe funzionare?
l’ ordinamento effettivo di ciò che è pieno
processo che dovremmo catturare qui
e quando scade o quando succede
diventa una situazione pericolosa dillo al
affari okay , non lo sappiamo
rispondi ma dobbiamo fare una buona ipotesi
Giusto, quindi sii scomodo, ma prova
qualcosa e consentire dati empirici a
prova che dovresti muoverti questa volta
frame o qualunque cosa capita di essere il
progettazione del processo in una direzione
o un altro altro euristico è di
corso inizia con quello che sai
quindi questo entra con come si modella
gli eventi in primo luogo dove lo fanno
si inizia bene iniziamo con il
il cliente di fronte si conosce l’abbinamento
contesto limitato e diciamo okay guardiamo noi
sappi che abbiamo bisogno di una proposta per due
le persone sono d’accordo su un cliente e a
lavoratore e perché abbiamo bisogno che abbiano
qualche accordo e l’ accordo è
andando oltre il prezzo e la pianificazione
e forse la posizione e così via e così
iniziamo con quello che prendiamo ciò che noi
conosciamo e modelliamo gli eventi del dominio
intorno a questo e poi scopriamo chi è
andando a vedere quegli eventi quali eventi
saranno emessi da quegli altri
contesti limitati e molto di ciò che può
essere scoperto attraverso una tecnica chiamata
evento che si scatena proprio tu potresti immaginare
questo fuori in poche ore okay cosa
Voglio fare ora, sto solo andando
cambia marcia un po ‘qui e mostra
un po ‘di codice e io penso di avere a
almeno cinque minuti o probabilmente no
prendere cinque minuti ma
va bene così in questo codice sorgente ne ho alcuni
Codice Java che tutti possono
tipo di vedere questo No
okay, fallirò se provo a farlo
qualcosa che in questo momento, ma
sentiti libero di andare su se tu sai se
non puoi vedere mi dispiace, quindi sono un po ‘
poco tempo quindi ecco cosa succede noi
avere una lingua onnipresente in parte
la lingua è una proposta è un lavoro
proposta che un cliente ha scritto questo
proposta quindi abbiamo il concetto del nostro
nostra identità di proposta abbiamo un abbiamo
un cliente e abbiamo delle aspettative
del cliente e abbiamo un progresso
giusto in modo che abbiamo modellato l’idea che
ci saranno progressi fatti su
approvazione di questa proposta in modo che possa
in definitiva essere accettato o lo sai preso
da un lavoratore per fare il lavoro così noi
avere una proposta di metodo statica dot submit
per le aspettative del cliente, vedi come
fluente legge va bene e poi abbiamo
un altro per proposta è cambiato con così
questo è questo è in realtà vedere dove io
avere modello di proposta fm questo è solo un
piccola separazione per dimostrare che questo può
essere modellato in un modo funzionale
quindi questo è in realtà un immutabile
entità dal fatto che lo stato dell’entità
non è direttamente mutato qui vedi
tutte le sue proprietà sono definitive, quindi
qualsiasi operazione che eseguo deve
rendere corretta una nuova istanza di proposta
è sempre la stessa proposta ma come
lo facciamo quindi diciamo che stiamo andando
per negare il prezzo otteniamo un evento dal
contesto limitato dai prezzi che dice
il prezzo negato alla fine sta andando
essere trasformato in un comando e il nostro
legato nella partita
contesto limitato e lo diremo
la proposta nega i prezzi ed ecco il
i prezzi suggeriti vanno bene così noi neghiamo il
prezzi, ma stiamo andando a verificare
abbiamo già visto questo adesso se
Michael penne è qui che sta per
Diciamo che c’è un se in questo codice, quindi io
scusarmi ma non penso che Java
ha abbastanza strumenti che deve ancora essere
Asst completamente condizionato ma forse
Sarò impostato direttamente in ogni caso, se
se lo avessimo già visto?
il prezzo negato stiamo semplicemente andando
restituire una tupla due della stessa proposta
senza eventi di dominio va bene così è
sorta di dire al mondo esterno
Nulla è cambiato proprio ignorare che nel
essenza e ora siamo semplici semplicemente se
non siamo in quella situazione che dobbiamo
avere un nuovo progresso con i prezzi negati
abbiamo nuove aspettative con l’ aggiustamento
il suo prezzo suggerito giusto e abbiamo
gli eventi del dominio con o un prezzo
evento di dominio negato dai nostri limiti
contesto e poi andremo a tornare
la tupla di una proposta cambiata con la nuova
aspettative nuovi progressi e siamo
andando a omettere l’evento se completato
che in effetti siamo completati ora
perché abbiamo già riscontrato un errore
situazione e negato quindi stiamo andando a
dare all’utente il client il
possibilità di riavvolgere qui e venire
con un prezzo diverso ho anche un
esempio di fare questo con l’evento
sourcing è solo un approccio diverso
ma si sa che si sta andando ad applicare un po ‘
evento di dominio che proviene dal processo
che siamo quello che stiamo fornendo e poi
stiamo andando a passare il nostro interno
stato basato su quando
il prezzo è negato stiamo andando a
salvare le nostre nuove aspettative nel nostro
nuovi progressi quindi spero che questo codice
ti ha sottovalutato che questo
tutta la presentazione ha detto questa roba
non è complicato modellare l’incertezza
nel dominio perché è lì
hai intenzione di fare progressi con
all’interno del business e lo farà
risparmiare un mondo di male quindi grazie
per la partecipazione
sì grazie mille quindi forse qualche breve
domande così come pensi eventi
dovrebbe essere nominato per convenzione contenente
verbi si, quindi dai il nome ai tuoi eventi in generale
forse come il nome dell’entità che è
emettendole come proposta seguita
da un verbo e dal passato altre volte
potrebbe essere semplicemente naturale dire prezzi
negato ma perché è all’interno di a
spazio dei nomi specifico o conosci il pacchetto
di un determinato contesto limitato che conosci
cosa significa questo contesto con questo
cattura di fatto quindi sì, ma usare l’uso
verbo e passato e non usare il
evento parola va bene non modellare il tuo
aggrega come proposta aggregata è a
aggregato di proposte non fa parte del
linguaggio onnipresente giusto è un evento
non parte bene potresti avere un evento in
il tuo linguaggio onnipresente, ma noi no
non utilizzare la denominazione dei termini tecnici
nel nostro modello di business va bene e altro
i critici Amplatz disponibili mandami un
email va bene se trovo la domanda I
penso di avere effettivamente un’e-mail
indirizzo sì, ti ho mandato qualcosa
che così ci si va e trova il
domanda vorresti firmare il mio libro di ddd
assolutamente sì, sii felice di andare bene
in realtà è davvero una domanda
che è arrivato attraverso l’ app e penso
sappiamo chi lo ha inviato in ok grazie a
molto per il roark grazie
tu
[Applausi]

Please follow and like us: