Qui suis-je ? (vaste question)
Ce que j'aime faire
Mon boulot actuellement
@ugobourdon
Etat 1
Etat 2
Etat 3
E 1
E 2
E 3
Event 1-2
Event 2-3
Un petit exemple - Le panier
Panier t1
Panier t2
Un petit exemple - Le panier
Panier t1
Panier t2
article retiré du panier
{ article 2 }
1 article ajouté au panier
__________________________________
{
id: 1234,
name: article 2,
qty: 1,
...
}
1 article retiré du panier
__________________________________
{
id: 1234
}
1 article ajouté au panier
__________________________________
{
id: 3456,
name: article 1,
qty: 3,
...
}
___________________________________________________________________
>
temps
Current state
{
articles : [
article : {
id: 3456,
name: article 1,
qty: 3
}
]
}
apply
2 fonctions pour les contrôler toutes
decide :: Command -> State -> [Event]
apply :: State -> Event -> State
DECIDE
Command
[Event]
APPLY
State
Diagramme d'une boucle de rétro-action
Boite noire
Un système évènementiel c'est pareil
boite noire
Ouais c'est super mais t'es en train de nous arnaquer là !
Elle est où la base de données là ?
boite noire
Eventstore WTF ?
=> 1 simple queue de message
1 instance d'aggrégat = 1 stream d'évènement
La transactionalité n'est respectée qu'à l'intérieur d'un aggrégat donné
=> le système est "cohérent à terme"
__________________________________________________________________
>
BoatCreated
AvailPeriodAdded
BookingMade
BookingCanceled
...
t
Boat Aggregate | Boat Stream {id: 1234}
{
aggregateUid: 1234,
name: my supa boat,
...
}
{
aggregateUid: 1234,
startDate: LocalDate,
endDate: LocalDate,
...
}
{
aggregateUid: 1234,
bookingUid: 2534,
startDate: LocalDate,
endDate: LocalDate,
price: BigDecimal
}
{
aggregateUid: 1234,
bookingUid: 2534
}
__________________________________________________________________
>
BrokerEnrolled
BoatAdded
...
t
Broker Aggregat (boat owner)
{
aggregateUid: 1234,
name: best broker,
...
}
{
aggregateUid: 1234,
boatUid: 1234
}
boite noire
Bon c'est cool, mais ton truc c'est pas clair, en terme de perf ça à l'air bien pourri.
Et surtout, l'utilisateur lui il veut des écrans, comment on fait ?
Crédits / ressources