XebiCon'16 : CQRS/EventSourcing certains en parlent, nous les avons implémentés ! Par Clément Héliou, Développeur chez Xebia

Publicis Sapient Engineering
Publicis Sapient EngineeringCabinet IT à Publicis Sapient Engineering
@xebiconfr #xebiconfr
Event Sourcing/CQRS
Certains en parlent, nous les avons
implémentés!
Clément
HELIOU
@c_heliou @xebiconfr #xebiconfr 2
@c_heliou
@c_heliou @xebiconfr
#xebiconfr
L’Event Sourcing

En bref
@c_heliou @xebiconfr #xebiconfr 4
« Capturer tous les changements
d’état d’une application comme
une séquence d’évènements »
Martin Fowler
@c_heliou @xebiconfr #xebiconfr 5
Date Débit Crédit
2016/05/14 100 €
2016/05/14 -20 €
2016/05/16 -30 €
2016/05/24 380 €
2016/06/01 -70 €
Total -120 € 480 €
Solde 360 €
@c_heliou @xebiconfr #xebiconfr 6
Pourquoi utiliser 

l’Event Sourcing?
Audit
Analyse/debug
Reprise de

données
Performance
@c_heliou @xebiconfr #xebiconfr 7
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Commande
Fonction de

Décision
@c_heliou @xebiconfr #xebiconfr 8
Fonction de décision
(état courant + commande)
=> évènement(s)
@c_heliou @xebiconfr #xebiconfr 9
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Fonction de

Décision
Commande
Fonction 

d’évolution
Évènement(s)
Event
store
@c_heliou @xebiconfr #xebiconfr 10
Fonction d’évolution
(état courant + évènement)
=> nouvel état
Pour chaque évènement émis par 

la fonction de décision
@c_heliou @xebiconfr #xebiconfr 11
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Évènement(s)
Fonction de

Décision
Commande
Fonction 

d’évolution Event
store
Action
Effets de bord
@c_heliou @xebiconfr
#xebiconfr
Contexte
Au coeur des 

salles de marché
@c_heliou @xebiconfr #xebiconfr 13
@c_heliou @xebiconfr #xebiconfr 14
http://www.les-terres-rares.com/platine-palladium-meme-famille-2-destins-differents/
@c_heliou @xebiconfr #xebiconfr 15
Couverture
Livraison 

physique
A l’échéance
@c_heliou @xebiconfr #xebiconfr 16
Client
Comptabilité
Trader Marché
Vendeur
Avant Multiplus
@c_heliou @xebiconfr #xebiconfr 17
Client
Comptabilité
Automate

de prix
Marché
Multiplus
Avec Multiplus
Couverture
Limites
Marges
@c_heliou @xebiconfr
#xebiconfr
L’EVENT SOURCING

chez Multiplus
@c_heliou @xebiconfr #xebiconfr 19
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Fonction de

Décision
RecevoirPrix

{commande}
@c_heliou @xebiconfr #xebiconfr 20
Fonction de décision
(état courant + commande)
=> évènement(s)
@c_heliou @xebiconfr #xebiconfr 21
Fonction de décision
(état courant + RecevoirPrix)
=> PrixReçu
@c_heliou @xebiconfr #xebiconfr 22
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Fonction de

Décision
RecevoirPrix

{commande}
Fonction 

d’évolution
PrixReçu

{évènement}
@c_heliou @xebiconfr #xebiconfr 23
@c_heliou @xebiconfr #xebiconfr 24
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Fonction de

Décision
RecevoirPrix

{commande}
Fonction 

d’évolution
PrixReçu

{évènement}
Demande
de prix
Réception
de prix
PrixReçu

{évènement}
TransférerPrix

{action}
PrixTransféré

{évènement}
@c_heliou @xebiconfr #xebiconfr 25
Application
PrixReçu

{évènement}
PrixTransféré

{évènement}
Busd’évènements
PrixTransféréHandler

{handler}
CLIENT
@c_heliou @xebiconfr #xebiconfr 26
Bus
Handler
Handler
EMS
thread
pool
IUM
thread
pool
EMS
thread
pool
IUM
thread
pool
Event loop
Commandes Évènements
Messages
Messages
@c_heliou @xebiconfr #xebiconfr 27
Bus
Handler
Handler
EMS
thread
pool
IUM
thread
pool
EMS
thread
pool
IUM
thread
pool
Event loop
Commandes Évènements
Messages
Messages
@c_heliou @xebiconfr #xebiconfr 28
C1 C2 C3
C1 = 10 ms C2 = 10 ms
C2 = 10 ms
C2 = 10 + 10 ms
@c_heliou @xebiconfr #xebiconfr 29
Bus
Handler
Handler
EMS
thread
pool
IUM
thread
pool
EMS
thread
pool
IUM
thread
pool
Event loop
Commandes Évènements
Messages
Messages
@c_heliou @xebiconfr #xebiconfr 30
Bus
Handler
Handler
EMS
thread
pool
IUM
thread
pool
EMS
thread
pool
IUM
thread
pool
Event loop
Commandes
Évènements
Messages
Messages
Event loop
@c_heliou @xebiconfr #xebiconfr 31
Bus
Handler
Handler
EMS
thread
pool
IUM
thread
pool
EMS
thread
pool
IUM
thread
pool
Event loop
Commandes
Évènements
Messages
Messages
Event loop
Commandes
@c_heliou @xebiconfr
#xebiconfr
Event sourcing
ce que l’on a appris
@c_heliou @xebiconfr #xebiconfr 33
Vous pouvez (devez ?)
faire sans framework
@c_heliou @xebiconfr #xebiconfr 34
Ne pas confondre Event
sourcing et Command sourcing
@c_heliou @xebiconfr #xebiconfr 35
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Évènement(s)
Fonction de

Décision
Commande
Fonction 

d’évolution Event
store
Action
@c_heliou @xebiconfr #xebiconfr 36
Application
Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it
Évènement(s)
Fonction de

Décision
Commande
Fonction 

d’évolution Event
store
Action
@c_heliou @xebiconfr #xebiconfr 37
Recevoir prix

{commande}
requêteId: 9387
prix: 100€
Fonction de

Décision
Fonction de

Décision
Prix reçu

{évènement}
requêteId: 9387
prix: 100€
marge: 0,10€
Recevoir prix

{commande}
requêteId: 9387
prix: 100€
Prix reçu

{évènement}
requêteId: 9387
prix: 100€
marge: 0,20€
12/02/2016 - Marge 0,1%
01/07/2016 - Marge 0,2%
@c_heliou @xebiconfr #xebiconfr 38
Dénommer un évènement
n’est pas chose Aisée.
« Anatomy of domain event »
M. Praglowski - http://blog.arkency.com/2016/05/the-anatomy-of-domain-event/
@c_heliou @xebiconfr
#xebiconfr
CQRS
En bref
@c_heliou @xebiconfr #xebiconfr 40
Command Query 

Responsibility Segregation ?
@c_heliou @xebiconfr #xebiconfr 41
Pourquoi utiliser CQRS?
Maintenabilité
Performance

des lectures
Intégration avec

l’Event Sourcing
@c_heliou @xebiconfr
#xebiconfr
Contexte
Monitorer 

notre business
@c_heliou @xebiconfr #xebiconfr 43
Monitoring « Métier »
Contrôles basiques

par client, produit, etc.
Suivi temps-réel

des transactions
@c_heliou @xebiconfr
#xebiconfr
CQRS chez 

Multiplus
@c_heliou @xebiconfr #xebiconfr 45

Bus d’évènements
Multiplus
Handler
PUSH-API
Fonction de

STOCKAGE
Fonction 

D’AGREGATION
Event
store
Évènement
QUEUE EMS
WEB
SOCKETVue CONSOLE
Vue
@c_heliou @xebiconfr #xebiconfr 46
PUSH-API
Fonction de

STOCKAGE
Fonction 

D’AGREGATION
Event
store
WEB
SOCKET
CONSOLE
Évènement

{transaction #345}
Évènements

{transaction #345}
Vue

{transaction #345}
Vue

{transaction #345}
@c_heliou @xebiconfr #xebiconfr 47
Fonction 

D’AGREGATION
Exécution

Demandée
{transaction #345,
idSéquence = 1}
Exécution

Acceptée
{transaction #345,
idSéquence = 2}
Fonction 

D’AGREGATION
Vue
{transaction #345, 

statut = TERMINÉE}
Vue
{transaction #345, 

statut = EN COURS}
@c_heliou @xebiconfr #xebiconfr 48
Fonction 

D’AGREGATION
Exécution

Demandée
{transaction #345,
idSéquence = 1}
Exécution

Acceptée
{transaction #345,
idSéquence = 2}
Fonction 

D’AGREGATION
Vue
{transaction #345, 

statut = TERMINÉE}
Vue
{transaction #345, 

statut = EN COURS}
Fonction 

D’AGREGATION
Exécution

Acceptée
{transaction #345,
idSéquence = 2}
Vue
{transaction #345, 

statut = TERMINÉE}
@c_heliou @xebiconfr
#xebiconfr
CQRS
ce que l’on a appris
@c_heliou @xebiconfr #xebiconfr 50
Il existe toujours un contrat,
même s’il est implicite !
@c_heliou @xebiconfr #xebiconfr 51
Poser la 1ère pierre, à
l’édifice CQRS !
Évènements d’intérêt
Évènements 

en mémoire
@c_heliou @xebiconfr
#xebiconfr
CONCLUSION
@c_heliou @xebiconfr #xebiconfr 53
Ressources
๏Xebicon 15’ - CQRS + Event Sourcing: en direct !
๏Back Day 15’ - Explorer les principes de l’event sourcing
๏Thinkbe4coding #Eventsourcing
๏KATA MixteR
- https://github.com/devlyon/mixter
- Kata explorant les principes de l’Event Sourcing/CQRS.
- https://www.youtube.com/watch?v=QGGZs0KqxZw
- Live coding présentant les principes de l’Event Sourcing/CQRS.
- http://thinkbeforecoding.com/tag/Event%20Sourcing
- L’un des auteurs français à suivre sur le sujet Event Sourcing/CQRS.
- http://www.xebia.tv/vod?videoId=S8566fyZHp0
- Présentation plus large du projet Multiplus (DDD, BDD, Architecture hexagonale).
1 sur 53

Recommandé

DDD, CQRS, ES lessons learned par
DDD, CQRS, ES lessons learnedDDD, CQRS, ES lessons learned
DDD, CQRS, ES lessons learnedQframe
2.3K vues41 diapositives
CQRS without event sourcing par
CQRS without event sourcingCQRS without event sourcing
CQRS without event sourcingThomas Pierrain
4.9K vues53 diapositives
Decouvrir CQRS (sans Event sourcing) par la pratique par
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueThomas Pierrain
2K vues50 diapositives
Devoxx 17 - CQRS/EventSourcing par la pratique par
Devoxx 17 - CQRS/EventSourcing par la pratiqueDevoxx 17 - CQRS/EventSourcing par la pratique
Devoxx 17 - CQRS/EventSourcing par la pratiquePublicis Sapient Engineering
765 vues56 diapositives
XebiCon'16 : Plan de bataille pour devenir une entreprise Data Driven Nicola... par
XebiCon'16 : Plan de bataille pour devenir une entreprise Data Driven  Nicola...XebiCon'16 : Plan de bataille pour devenir une entreprise Data Driven  Nicola...
XebiCon'16 : Plan de bataille pour devenir une entreprise Data Driven Nicola...Publicis Sapient Engineering
616 vues39 diapositives
Pilotage optimisé de son SEO en e-commerce : méthode et analyse par
Pilotage optimisé de son SEO en e-commerce : méthode et analysePilotage optimisé de son SEO en e-commerce : méthode et analyse
Pilotage optimisé de son SEO en e-commerce : méthode et analyseGuillaume CAGNON
742 vues51 diapositives

Contenu connexe

Similaire à XebiCon'16 : CQRS/EventSourcing certains en parlent, nous les avons implémentés ! Par Clément Héliou, Développeur chez Xebia

La métrique, ce n'est pas que pour le devops par
La métrique, ce n'est pas que pour le devopsLa métrique, ce n'est pas que pour le devops
La métrique, ce n'est pas que pour le devopsPatrick Allaert
1.4K vues96 diapositives
La mesure, ce n'est pas que pour le devops par
La mesure, ce n'est pas que pour le devopsLa mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsOlivier Garcia
1.9K vues96 diapositives
Power Saturday 2018 - Actionnable BI par
Power Saturday 2018 - Actionnable BIPower Saturday 2018 - Actionnable BI
Power Saturday 2018 - Actionnable BIJoël Crest
52 vues25 diapositives
Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F... par
Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F...Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F...
Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F...Game Camp France
118 vues76 diapositives
Le besoin de mon client au cœur de tout par
Le besoin de mon client au cœur de toutLe besoin de mon client au cœur de tout
Le besoin de mon client au cœur de toutAgile En Seine
32 vues74 diapositives
Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per... par
Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per...Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per...
Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per...Effinity
872 vues28 diapositives

Similaire à XebiCon'16 : CQRS/EventSourcing certains en parlent, nous les avons implémentés ! Par Clément Héliou, Développeur chez Xebia(20)

La métrique, ce n'est pas que pour le devops par Patrick Allaert
La métrique, ce n'est pas que pour le devopsLa métrique, ce n'est pas que pour le devops
La métrique, ce n'est pas que pour le devops
Patrick Allaert1.4K vues
La mesure, ce n'est pas que pour le devops par Olivier Garcia
La mesure, ce n'est pas que pour le devopsLa mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devops
Olivier Garcia1.9K vues
Power Saturday 2018 - Actionnable BI par Joël Crest
Power Saturday 2018 - Actionnable BIPower Saturday 2018 - Actionnable BI
Power Saturday 2018 - Actionnable BI
Joël Crest52 vues
Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F... par Game Camp France
Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F...Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F...
Penser son game concept pour le long terme - Alexandre Besenval - Game Camp F...
Game Camp France118 vues
Le besoin de mon client au cœur de tout par Agile En Seine
Le besoin de mon client au cœur de toutLe besoin de mon client au cœur de tout
Le besoin de mon client au cœur de tout
Agile En Seine32 vues
Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per... par Effinity
Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per...Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per...
Webinar : Affiliation : retrouvez le chemin de la croissance avec l'hyper-per...
Effinity872 vues
L'ergonomie facteur de croissance en e-commerce - Laurent Danflous par Laurent Danflous
L'ergonomie facteur de croissance en e-commerce - Laurent DanflousL'ergonomie facteur de croissance en e-commerce - Laurent Danflous
L'ergonomie facteur de croissance en e-commerce - Laurent Danflous
Laurent Danflous164 vues
Social Média dans le E-tourisme - Optimiser, diffuser et amplifier vos conten... par Camille Lemesle
Social Média dans le E-tourisme - Optimiser, diffuser et amplifier vos conten...Social Média dans le E-tourisme - Optimiser, diffuser et amplifier vos conten...
Social Média dans le E-tourisme - Optimiser, diffuser et amplifier vos conten...
Camille Lemesle940 vues
Cours / formation SEO (FR) | Comment donner de la visibilité à votre business... par Renaud PERRIN
Cours / formation SEO (FR) | Comment donner de la visibilité à votre business...Cours / formation SEO (FR) | Comment donner de la visibilité à votre business...
Cours / formation SEO (FR) | Comment donner de la visibilité à votre business...
Renaud PERRIN977 vues
Comment le Response Marketing décuple le ROI de vos applications web & mobile par LaFrenchMobile
Comment le Response Marketing décuple le ROI de vos applications web & mobileComment le Response Marketing décuple le ROI de vos applications web & mobile
Comment le Response Marketing décuple le ROI de vos applications web & mobile
LaFrenchMobile839 vues
Diffusion de la méthode BDD chez AXA via les 3 amigos par Emilie-Anne GUERCH
Diffusion de la méthode BDD chez AXA via les 3 amigosDiffusion de la méthode BDD chez AXA via les 3 amigos
Diffusion de la méthode BDD chez AXA via les 3 amigos
Emilie-Anne GUERCH3.2K vues
Pensez Conversion et non position - Guillaume Eouzan - SEOcamp'us Paris 2019 par SEO CAMP
Pensez Conversion et non position - Guillaume Eouzan - SEOcamp'us Paris 2019Pensez Conversion et non position - Guillaume Eouzan - SEOcamp'us Paris 2019
Pensez Conversion et non position - Guillaume Eouzan - SEOcamp'us Paris 2019
SEO CAMP296 vues
Arnaques, crimes et analytics - Aristide Riou - Measure Camp Paris 2016 par Prénom Nom de famille
Arnaques, crimes et analytics - Aristide Riou - Measure Camp Paris 2016Arnaques, crimes et analytics - Aristide Riou - Measure Camp Paris 2016
Arnaques, crimes et analytics - Aristide Riou - Measure Camp Paris 2016
Vendre son innovation - Lyon Start Up - EMLyon par Samir Bounab
Vendre son innovation - Lyon Start Up - EMLyonVendre son innovation - Lyon Start Up - EMLyon
Vendre son innovation - Lyon Start Up - EMLyon
Samir Bounab572 vues
Drupal, les hackers, la sécurité & les (très) grands comptes par Skilld
Drupal, les hackers, la sécurité & les (très) grands comptesDrupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptes
Skilld889 vues
#Seocamp Pensez conversion et non Position par Guillaume Eouzan
#Seocamp  Pensez conversion et non Position#Seocamp  Pensez conversion et non Position
#Seocamp Pensez conversion et non Position
Guillaume Eouzan2.8K vues

Plus de Publicis Sapient Engineering

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain par
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainPublicis Sapient Engineering
1.7K vues51 diapositives
Xebicon'18 - IoT: From Edge to Cloud par
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudPublicis Sapient Engineering
627 vues46 diapositives
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur par
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurPublicis Sapient Engineering
496 vues41 diapositives
XebiCon'18 - Modern Infrastructure par
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructurePublicis Sapient Engineering
541 vues90 diapositives
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin... par
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...Publicis Sapient Engineering
580 vues61 diapositives
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin par
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin Publicis Sapient Engineering
457 vues23 diapositives

Plus de Publicis Sapient Engineering(20)

XebiCon'16 : CQRS/EventSourcing certains en parlent, nous les avons implémentés ! Par Clément Héliou, Développeur chez Xebia