Devoxx 17 - CQRS/EventSourcing par la pratique

128 vues

Publié le

Retrouvez la vidéo de la conférence sur : https://www.youtube.com/watch?v=zxa4y6eJj_g

L’Event Sourcing et CQRS sont sur toutes les lèvres en cette année 2017 qui marque l’avènement des systèmes dits « réactifs » ou « dirigés par les évènements ». Bien que leur présence ne date pas d’hier, peu d’applications en tirent aujourd’hui bénéfice.

Dans ce retour d’expérience, nous allons vous présenter dans le détail et en toute transparence, l’implémentation mise en place au sein d’une grande banque d’investissement française, ses avantages, ses inconvénients, ses compromis et les leçons que nous avons en tiré. Nous espérons vous donner ainsi le bagage nécessaire pour vous lancer à votre tour dans la grande aventure du réactif.

Par Clément Heliou, Expert Back et Coach Crafts chez Xebia

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
128
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
1
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Devoxx 17 - CQRS/EventSourcing par la pratique

  1. 1. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Event Sourcing/CQRS
 par la pratique Clément HELIOU
  2. 2. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr
  3. 3. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Diffusez vos cartes dans la communauté et devenez un ninja du développement.
  4. 4. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr @c_heliou
  5. 5. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr L’Event Sourcing
 En bref
  6. 6. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr « Capturer tous les changements d’état d’une application comme une SÉQUENCE D’ÉVÈNEMENTS » Martin Fowler
  7. 7. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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 €
  8. 8. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Pourquoi utiliser 
 l’EVENT SOURCING? Audit Analyse/debug Reprise de
 données Performance
  9. 9. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr APPLICATION Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it Commande FONCTION DE
 DÉCISION
  10. 10. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr FONCTION DE DÉCISION (état courant + commande) => évènement(s)
  11. 11. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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
  12. 12. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr FONCTION D’ÉVOLUTION (état courant + évènement) => nouvel état Pour chaque évènement émis par 
 la fonction de décision
  13. 13. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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
  14. 14. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Contexte Au coeur des 
 salles de marché
  15. 15. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr
  16. 16. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr http://www.les-terres-rares.com/platine-palladium-meme-famille-2-destins-differents/
  17. 17. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Couverture Livraison 
 physique A L’ÉCHÉANCE
  18. 18. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr CLIENT COMPTABILITÉ TRADER MARCHÉ VENDEUR AVANT 
 MULTIPLUS
  19. 19. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr CLIENT COMPTABILITÉ AUTOMATE
 DE PRIX MARCHÉ MULTIPLUS AVEC 
 MULTIPLUS COUVERTURE LIMITES MARGES
  20. 20. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr L’Event Sourcing
 chez Multiplus
  21. 21. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr APPLICATION Inspiré par J. Chassaing - http://thinkbeforecoding.com/post/2014/01/04/Event-Sourcing.-Draw-it FONCTION DE
 DÉCISION RecevoirPrix
 {commande}
  22. 22. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr FONCTION DE DÉCISION (état courant + commande) => évènement(s)
  23. 23. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr FONCTION DE DÉCISION (état courant + RecevoirPrix) => PrixReçu
  24. 24. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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}
  25. 25. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr
  26. 26. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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}
  27. 27. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr APPLICATION PrixReçu
 {évènement} PrixTransféré
 {évènement} BUSD’ÉVÈNEMENTS PrixTransféréHandler
 {handler} CLIENT
  28. 28. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Bus Handler Handler EMS thread pool IUM thread pool EMS thread pool IUM thread pool Event loop Commandes Évènements Messages Messages
  29. 29. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Bus Handler Handler EMS thread pool IUM thread pool EMS thread pool IUM thread pool Event loop Commandes Évènements Messages Messages
  30. 30. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr C2 = 10 ms C2 = 10 + 10 ms C1 C2 C3 C1 = 10 ms C2 = 10 ms
  31. 31. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Bus Handler Handler EMS thread pool IUM thread pool EMS thread pool IUM thread pool Event loop Commandes Évènements Messages Messages
  32. 32. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr BUS HANDLER HANDLER EMS thread pool IUM thread pool EMS thread pool IUM thread pool Event loop Commandes Évènements Messages Messages Event loop
  33. 33. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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
  34. 34. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Event sourcing ce que l’on a appris
  35. 35. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Vous pouvez (devez ?) faire SANS FRAMEWORK
  36. 36. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Ne pas confondre 
 EVENT sourcing et 
 COMMAND sourcing
  37. 37. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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
  38. 38. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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
  39. 39. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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/2017 - Marge 0,1% 01/07/2017 - Marge 0,2%
  40. 40. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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/
  41. 41. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr CQRS En bref
  42. 42. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Command Query 
 Responsibility Segregation ?
  43. 43. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Pourquoi utiliser CQRS ? Maintenabilité Performance
 des lectures Intégration avec
 l’Event Sourcing
  44. 44. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Contexte Monitorer notre business
  45. 45. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Monitoring « MÉTIER » Contrôles basiques
 par client, produit, etc. Suivi temps-réel
 des transactions
  46. 46. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr CQRS chez Multiplus
  47. 47. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 
BUS D’ÉVÈNEMENTS MULTIPLUS HANDLER PUSH-API STOCKAGE AGRÉGATION INDEX Évènement Queue EMS Web SocketVue CONSOLE Vue
  48. 48. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr PUSH-API STOCKAGE AGRÉGATION INDEX Web Socket CONSOLE Évènement
 {transaction #345} Évènements
 {transaction #345} Vue
 {transaction #345} Vue
 {transaction #345}
  49. 49. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr FONCTION 
 D’AGRÉGATION Exécution
 Demandée {transaction #345, idSéquence = 1} Exécution
 Acceptée {transaction #345, idSéquence = 2} FONCTION 
 D’AGRÉGATION Vue {transaction #345, 
 statut = TERMINÉE} Vue {transaction #345, 
 statut = EN COURS}
  50. 50. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr FONCTION 
 D’AGRÉGATION Vue {transaction #345, 
 statut = EN COURS} Exécution
 Acceptée {transaction #345, idSéquence = 2} FONCTION 
 D’AGRÉGATION Exécution
 Demandée {transaction #345, idSéquence = 1} Vue {transaction #345, 
 statut = TERMINÉE} FONCTION 
 D’AGRÉGATION Exécution
 Acceptée {transaction #345, idSéquence = 2} Vue {transaction #345, 
 statut = TERMINÉE}
  51. 51. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr CQRS ce que l’on a appris
  52. 52. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Il existe TOUJOURS un contrat, même s’il est IMPLICITE !
  53. 53. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Évènements d’intérêt Évènements 
 en mémoire Poser la 1ÈRE PIERRE, à l’édifice CQRS !
  54. 54. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr Conclusion
  55. 55. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 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).
  56. 56. #DevoxxFR #XebiaDevoxx @c_heliou @XebiaFr 1 #BeXebian recrutement@xebia.fr

×