SlideShare una empresa de Scribd logo
1 de 19
CQRS + EVENT
SOURCING

Des concepts
de design
pour une
architecture à
toute épreuve
SÉPARATION DES COMMANDES ET REQUÊTES

© Pyxis Technologies inc.

2
SYSTÈME TRADITIONNEL
Données
relationnelles
Mise à jour BD

Logique
d’affaire

CRUD

Interface
usager
© Pyxis Technologies inc.

3
PROBLÈMES

© Pyxis Technologies inc.

4
POURQUOI CONTINUE-T-ON?

© Pyxis Technologies inc.

6
POURQUOI CONTINUE-T-ON?

© Pyxis Technologies inc.

7
CONFIANCE…

© Pyxis Technologies inc.

8
SYSTÈME TRADITIONNEL
Données
relationnelles
Mise à jour BD

Logique
d’affaire

CRUD

Interface
usager
© Pyxis Technologies inc.

9
SÉPAR AT IO N D ES C OMMAN D ES ET D ES R EQU ÊTES
Données
relationnelles
Mise à jour BD
Logique
d’affaire

Requêtes

Commandes
Interface
usager
© Pyxis Technologies inc.

10
CQRS -

C O M M A N D A N D Q U E R Y R E S P O N S A B I L I T Y S E G R E G AT I O N

Données
relationnelles
Mise à jour BD

Modèle de
lecture

Domaine

Gestion des
commandes

Requêtes

Commandes
Interface
usager
© Pyxis Technologies inc.

11
PASSONS À L’ACTION
 Utiliser des verbes pas des noms
 Il faut analyser comment l’usager utilisera le système

 Pas d’édition de données mais plutôt des actions sur le
domaine
 Passer des commandes
 Message sérialisable
 Mode impératif
 Langage clairement défini

 Est-ce qu’une commande peut être refusée?

© Pyxis Technologies inc.

12
CQRS
 Commandes
 Change l’état du système
 Asynchrone (pour le meilleur et pour le pire)

 Requêtes







Ne change pas le système
Modèle dénormalisé
Distribuable (Charding)
Scalable
Représente au moins 90% des accès au système
Performance

© Pyxis Technologies inc.

13
EST-CE QU’ON A TERMINÉ?

© Pyxis Technologies inc.

14
CQRS -

C O M M A N D A N D Q U E R Y R E S P O N S A B I L I T Y S E G R E G AT I O N

Données
relationnelles
Mise à jour BD

Modèle de
lecture

Domaine

Gestion des
commandes

Requêtes

Commandes
Interface
usager
© Pyxis Technologies inc.

15
CQRS + EVENT SOURCING

Événements

Dénormaliseur

Event Store

Gestion
d’événements

Service BUS

XML

SQL
HTML

Modèle de
lecture

Domaine

Gestion des
commandes

Requêtes

Commandes
Interface
usager
© Pyxis Technologies inc.
EVENT SOURCING







Modélise le comportement non pas la structure
Séquentiel et cumulatif
Peut rejouer les événements
Ajout seulement
Possible de construire n’importe quel modèle structuré
Audit

© Pyxis Technologies inc.

17
LES ÉVÉNEMENTS
 Rolling Snapshot
 Optimisation

 Aggregate root
 Transaction garantie uniquement dans ce cadre
 Construit à partir des événement
 Commandes
 ApplyEvent

 Events
 Ne peux pas échouer
 Aucune logique à appliquer

© Pyxis Technologies inc.

18
CQRS PIPELINE

Event store

User interface

Commands

© Pyxis Technologies inc.

Domain changes

Events

Denormalizer

Read models
LA FIN
 Questions?
 Rappelez-vous
 Les événements sont la seule vérité
 Le cœur du système est le domaine
 Le modèle de lecture est flexible et volatile

 Eric De Carufel
 eric@decarufel.net
 http://blog.decarufel.net
 http://pyxis-tech.com

© Pyxis Technologies inc.

20

Más contenido relacionado

La actualidad más candente

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfLilia Sfaxi
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQLLilia Sfaxi
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話JustSystems Corporation
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
Enterprise Architecture and Open Source
Enterprise Architecture and Open SourceEnterprise Architecture and Open Source
Enterprise Architecture and Open SourceKarim Baïna
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
Le Domain Driven Design, comment bien démarrer ?
Le Domain Driven Design, comment bien démarrer ?Le Domain Driven Design, comment bien démarrer ?
Le Domain Driven Design, comment bien démarrer ?Maxime Sanglan-Charlier
 
Formation M2i - FinOps : Gestion des coûts dans le Cloud
Formation M2i - FinOps : Gestion des coûts dans le CloudFormation M2i - FinOps : Gestion des coûts dans le Cloud
Formation M2i - FinOps : Gestion des coûts dans le CloudM2i Formation
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQLebiznext
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQLOussama ARBI
 
Gestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueGestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueJihed Kaouech
 
Réplication des bases de données
Réplication des bases de donnéesRéplication des bases de données
Réplication des bases de donnéessie92
 
PrésentationCI_CD.pptx
PrésentationCI_CD.pptxPrésentationCI_CD.pptx
PrésentationCI_CD.pptxBechirElosma
 

La actualidad más candente (20)

Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 
chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Le Manifeste Agile
Le Manifeste AgileLe Manifeste Agile
Le Manifeste Agile
 
Introduction à TOGAF
Introduction à TOGAFIntroduction à TOGAF
Introduction à TOGAF
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
Enterprise Architecture and Open Source
Enterprise Architecture and Open SourceEnterprise Architecture and Open Source
Enterprise Architecture and Open Source
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
Le Domain Driven Design, comment bien démarrer ?
Le Domain Driven Design, comment bien démarrer ?Le Domain Driven Design, comment bien démarrer ?
Le Domain Driven Design, comment bien démarrer ?
 
Formation M2i - FinOps : Gestion des coûts dans le Cloud
Formation M2i - FinOps : Gestion des coûts dans le CloudFormation M2i - FinOps : Gestion des coûts dans le Cloud
Formation M2i - FinOps : Gestion des coûts dans le Cloud
 
Les modèles NoSQL
Les modèles NoSQLLes modèles NoSQL
Les modèles NoSQL
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQL
 
Gestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueGestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatique
 
Réplication des bases de données
Réplication des bases de donnéesRéplication des bases de données
Réplication des bases de données
 
PrésentationCI_CD.pptx
PrésentationCI_CD.pptxPrésentationCI_CD.pptx
PrésentationCI_CD.pptx
 

Destacado

CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
 
A year with event sourcing and CQRS
A year with event sourcing and CQRSA year with event sourcing and CQRS
A year with event sourcing and CQRSSteve Pember
 
CQRS & event sourcing in the wild
CQRS & event sourcing in the wildCQRS & event sourcing in the wild
CQRS & event sourcing in the wildMichiel Rook
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingBen Wilcock
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueThomas Pierrain
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event SourcingMike Bild
 
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Chris Richardson
 
Solution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échangeSolution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échangeOCTO Technology
 
Workshop event storming
Workshop event stormingWorkshop event storming
Workshop event stormingJef Claes
 
Cassandra as an event sourced journal for big data analytics Cassandra Summit...
Cassandra as an event sourced journal for big data analytics Cassandra Summit...Cassandra as an event sourced journal for big data analytics Cassandra Summit...
Cassandra as an event sourced journal for big data analytics Cassandra Summit...Martin Zapletal
 
Real World Event Sourcing and CQRS
Real World Event Sourcing and CQRSReal World Event Sourcing and CQRS
Real World Event Sourcing and CQRSMatthew Hawkins
 
Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)Chris Richardson
 
Atelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - NantesAtelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - NantesMaxime Sanglan-Charlier
 
codecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with Cassandracodecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with CassandraDataStax Academy
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
 
CQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architectureCQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architectureThomas Jaskula
 
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...Chris Richardson
 
Akka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutesAkka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutesKonrad Malawski
 

Destacado (20)

CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDD
 
A year with event sourcing and CQRS
A year with event sourcing and CQRSA year with event sourcing and CQRS
A year with event sourcing and CQRS
 
CQRS & event sourcing in the wild
CQRS & event sourcing in the wildCQRS & event sourcing in the wild
CQRS & event sourcing in the wild
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event Sourcing
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event Sourcing
 
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
 
Solution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échangeSolution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échange
 
Workshop event storming
Workshop event stormingWorkshop event storming
Workshop event storming
 
Cassandra as an event sourced journal for big data analytics Cassandra Summit...
Cassandra as an event sourced journal for big data analytics Cassandra Summit...Cassandra as an event sourced journal for big data analytics Cassandra Summit...
Cassandra as an event sourced journal for big data analytics Cassandra Summit...
 
Real World Event Sourcing and CQRS
Real World Event Sourcing and CQRSReal World Event Sourcing and CQRS
Real World Event Sourcing and CQRS
 
Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)
 
Atelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - NantesAtelier Event Storming - Piece of Make - Nantes
Atelier Event Storming - Piece of Make - Nantes
 
codecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with Cassandracodecentric AG: CQRS and Event Sourcing Applications with Cassandra
codecentric AG: CQRS and Event Sourcing Applications with Cassandra
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java Developers
 
CQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architectureCQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architecture
 
Model storming
Model stormingModel storming
Model storming
 
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
Building and deploying microservices with event sourcing, CQRS and Docker (Ha...
 
Akka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutesAkka persistence == event sourcing in 30 minutes
Akka persistence == event sourcing in 30 minutes
 

Similar a CQRS + Event Sourcing

Architecture azure performante
Architecture azure performanteArchitecture azure performante
Architecture azure performanteEric De Carufel
 
Architecture azure performante
Architecture azure performanteArchitecture azure performante
Architecture azure performanteMSDEVMTL
 
Présentation linkbynet 2015-02-16
Présentation linkbynet 2015-02-16Présentation linkbynet 2015-02-16
Présentation linkbynet 2015-02-16Matthieu DEMOOR
 
Présentation automatisation & conformité et de Rudder
Présentation automatisation & conformité et de RudderPrésentation automatisation & conformité et de Rudder
Présentation automatisation & conformité et de RudderRUDDER
 
GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...
GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...
GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...AZUG FR
 
La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...
La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...
La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...Marius Zaharia
 
24 didier-demodelisation-cms-orientee-services
24 didier-demodelisation-cms-orientee-services24 didier-demodelisation-cms-orientee-services
24 didier-demodelisation-cms-orientee-servicesitSMF France
 
Élaboration d'une stratégie de modernisation par Chris Koppe
Élaboration d'une stratégie de modernisation par Chris KoppeÉlaboration d'une stratégie de modernisation par Chris Koppe
Élaboration d'une stratégie de modernisation par Chris KoppeFresche Solutions
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo
 
Progicielde gestationintégré SAP
Progicielde gestationintégré SAPProgicielde gestationintégré SAP
Progicielde gestationintégré SAPkk kk
 
2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...
2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...
2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...Club Alliances
 
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 La voie du succès avec les bases de données de graphes, la Graph Data Scie... La voie du succès avec les bases de données de graphes, la Graph Data Scie...
La voie du succès avec les bases de données de graphes, la Graph Data Scie...Neo4j
 
Réinventez votre stratégie de données en 2021 avec la Data Virtualization
Réinventez votre stratégie de données en 2021 avec la Data VirtualizationRéinventez votre stratégie de données en 2021 avec la Data Virtualization
Réinventez votre stratégie de données en 2021 avec la Data VirtualizationDenodo
 
La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...
La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...
La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...OCTO Technology
 
#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devopsEmmanuel Roldan
 
Les solutions as a service au service des métiers - Loic Simon - Club Allianc...
Les solutions as a service au service des métiers - Loic Simon - Club Allianc...Les solutions as a service au service des métiers - Loic Simon - Club Allianc...
Les solutions as a service au service des métiers - Loic Simon - Club Allianc...Club Alliances
 
Serverless for OPS - Global Azure Bootcamp 2018
Serverless for OPS - Global Azure Bootcamp 2018Serverless for OPS - Global Azure Bootcamp 2018
Serverless for OPS - Global Azure Bootcamp 2018Manon PERNIN
 

Similar a CQRS + Event Sourcing (20)

Présentation de SQL Azure
Présentation de SQL AzurePrésentation de SQL Azure
Présentation de SQL Azure
 
Introduction aux ERP
Introduction aux ERPIntroduction aux ERP
Introduction aux ERP
 
SQL Server 2008 R2 V1.0
SQL Server 2008 R2 V1.0SQL Server 2008 R2 V1.0
SQL Server 2008 R2 V1.0
 
Architecture azure performante
Architecture azure performanteArchitecture azure performante
Architecture azure performante
 
Architecture azure performante
Architecture azure performanteArchitecture azure performante
Architecture azure performante
 
Présentation linkbynet 2015-02-16
Présentation linkbynet 2015-02-16Présentation linkbynet 2015-02-16
Présentation linkbynet 2015-02-16
 
Présentation automatisation & conformité et de Rudder
Présentation automatisation & conformité et de RudderPrésentation automatisation & conformité et de Rudder
Présentation automatisation & conformité et de Rudder
 
GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...
GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...
GAB 2017 PARIS - La santé de votre environnement Azure par Manon Pernin et Ma...
 
La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...
La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...
La santé de votre environnement Azure, entre Monitor, AppInsights et Log Anal...
 
24 didier-demodelisation-cms-orientee-services
24 didier-demodelisation-cms-orientee-services24 didier-demodelisation-cms-orientee-services
24 didier-demodelisation-cms-orientee-services
 
Élaboration d'une stratégie de modernisation par Chris Koppe
Élaboration d'une stratégie de modernisation par Chris KoppeÉlaboration d'une stratégie de modernisation par Chris Koppe
Élaboration d'une stratégie de modernisation par Chris Koppe
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie API
 
Progicielde gestationintégré SAP
Progicielde gestationintégré SAPProgicielde gestationintégré SAP
Progicielde gestationintégré SAP
 
2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...
2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...
2010.11.26 - DSI - Comment maîtriser l'intégration du Cloud et du SaaS dans l...
 
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 La voie du succès avec les bases de données de graphes, la Graph Data Scie... La voie du succès avec les bases de données de graphes, la Graph Data Scie...
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 
Réinventez votre stratégie de données en 2021 avec la Data Virtualization
Réinventez votre stratégie de données en 2021 avec la Data VirtualizationRéinventez votre stratégie de données en 2021 avec la Data Virtualization
Réinventez votre stratégie de données en 2021 avec la Data Virtualization
 
La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...
La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...
La Duck Conf 2018 : "Au secours : le Marketing a choisi Salesforce - SaaS ou ...
 
#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops#1 cloud-infra-talk- l ops-du-devops
#1 cloud-infra-talk- l ops-du-devops
 
Les solutions as a service au service des métiers - Loic Simon - Club Allianc...
Les solutions as a service au service des métiers - Loic Simon - Club Allianc...Les solutions as a service au service des métiers - Loic Simon - Club Allianc...
Les solutions as a service au service des métiers - Loic Simon - Club Allianc...
 
Serverless for OPS - Global Azure Bootcamp 2018
Serverless for OPS - Global Azure Bootcamp 2018Serverless for OPS - Global Azure Bootcamp 2018
Serverless for OPS - Global Azure Bootcamp 2018
 

Más de Eric De Carufel

Bracket Show Episode 35 - histoire de c# de 2002 à 2019
Bracket Show Episode 35 - histoire de c# de 2002 à 2019Bracket Show Episode 35 - histoire de c# de 2002 à 2019
Bracket Show Episode 35 - histoire de c# de 2002 à 2019Eric De Carufel
 
Refactoring vers les design patterns pyxis v2
Refactoring vers les design patterns   pyxis v2Refactoring vers les design patterns   pyxis v2
Refactoring vers les design patterns pyxis v2Eric De Carufel
 
Refactoring to Design Patterns
Refactoring to Design PatternsRefactoring to Design Patterns
Refactoring to Design PatternsEric De Carufel
 
Cqrs + event sourcing pyxis v2 - en
Cqrs + event sourcing   pyxis v2 - enCqrs + event sourcing   pyxis v2 - en
Cqrs + event sourcing pyxis v2 - enEric De Carufel
 
Top 5 des meilleures façons d'améliorer votre code
Top 5 des meilleures façons d'améliorer votre codeTop 5 des meilleures façons d'améliorer votre code
Top 5 des meilleures façons d'améliorer votre codeEric De Carufel
 
Dvcs mercurial - pyxis - eric de carufel
Dvcs   mercurial - pyxis - eric de carufelDvcs   mercurial - pyxis - eric de carufel
Dvcs mercurial - pyxis - eric de carufelEric De Carufel
 
Top 5 des meilleures façon d'améliorer ton code
Top 5 des meilleures façon d'améliorer ton codeTop 5 des meilleures façon d'améliorer ton code
Top 5 des meilleures façon d'améliorer ton codeEric De Carufel
 

Más de Eric De Carufel (8)

Bracket Show Episode 35 - histoire de c# de 2002 à 2019
Bracket Show Episode 35 - histoire de c# de 2002 à 2019Bracket Show Episode 35 - histoire de c# de 2002 à 2019
Bracket Show Episode 35 - histoire de c# de 2002 à 2019
 
Gadgteteer clean code
Gadgteteer   clean codeGadgteteer   clean code
Gadgteteer clean code
 
Refactoring vers les design patterns pyxis v2
Refactoring vers les design patterns   pyxis v2Refactoring vers les design patterns   pyxis v2
Refactoring vers les design patterns pyxis v2
 
Refactoring to Design Patterns
Refactoring to Design PatternsRefactoring to Design Patterns
Refactoring to Design Patterns
 
Cqrs + event sourcing pyxis v2 - en
Cqrs + event sourcing   pyxis v2 - enCqrs + event sourcing   pyxis v2 - en
Cqrs + event sourcing pyxis v2 - en
 
Top 5 des meilleures façons d'améliorer votre code
Top 5 des meilleures façons d'améliorer votre codeTop 5 des meilleures façons d'améliorer votre code
Top 5 des meilleures façons d'améliorer votre code
 
Dvcs mercurial - pyxis - eric de carufel
Dvcs   mercurial - pyxis - eric de carufelDvcs   mercurial - pyxis - eric de carufel
Dvcs mercurial - pyxis - eric de carufel
 
Top 5 des meilleures façon d'améliorer ton code
Top 5 des meilleures façon d'améliorer ton codeTop 5 des meilleures façon d'améliorer ton code
Top 5 des meilleures façon d'améliorer ton code
 

CQRS + Event Sourcing

  • 1. CQRS + EVENT SOURCING Des concepts de design pour une architecture à toute épreuve
  • 2. SÉPARATION DES COMMANDES ET REQUÊTES © Pyxis Technologies inc. 2
  • 3. SYSTÈME TRADITIONNEL Données relationnelles Mise à jour BD Logique d’affaire CRUD Interface usager © Pyxis Technologies inc. 3
  • 5. POURQUOI CONTINUE-T-ON? © Pyxis Technologies inc. 6
  • 6. POURQUOI CONTINUE-T-ON? © Pyxis Technologies inc. 7
  • 8. SYSTÈME TRADITIONNEL Données relationnelles Mise à jour BD Logique d’affaire CRUD Interface usager © Pyxis Technologies inc. 9
  • 9. SÉPAR AT IO N D ES C OMMAN D ES ET D ES R EQU ÊTES Données relationnelles Mise à jour BD Logique d’affaire Requêtes Commandes Interface usager © Pyxis Technologies inc. 10
  • 10. CQRS - C O M M A N D A N D Q U E R Y R E S P O N S A B I L I T Y S E G R E G AT I O N Données relationnelles Mise à jour BD Modèle de lecture Domaine Gestion des commandes Requêtes Commandes Interface usager © Pyxis Technologies inc. 11
  • 11. PASSONS À L’ACTION  Utiliser des verbes pas des noms  Il faut analyser comment l’usager utilisera le système  Pas d’édition de données mais plutôt des actions sur le domaine  Passer des commandes  Message sérialisable  Mode impératif  Langage clairement défini  Est-ce qu’une commande peut être refusée? © Pyxis Technologies inc. 12
  • 12. CQRS  Commandes  Change l’état du système  Asynchrone (pour le meilleur et pour le pire)  Requêtes       Ne change pas le système Modèle dénormalisé Distribuable (Charding) Scalable Représente au moins 90% des accès au système Performance © Pyxis Technologies inc. 13
  • 13. EST-CE QU’ON A TERMINÉ? © Pyxis Technologies inc. 14
  • 14. CQRS - C O M M A N D A N D Q U E R Y R E S P O N S A B I L I T Y S E G R E G AT I O N Données relationnelles Mise à jour BD Modèle de lecture Domaine Gestion des commandes Requêtes Commandes Interface usager © Pyxis Technologies inc. 15
  • 15. CQRS + EVENT SOURCING Événements Dénormaliseur Event Store Gestion d’événements Service BUS XML SQL HTML Modèle de lecture Domaine Gestion des commandes Requêtes Commandes Interface usager © Pyxis Technologies inc.
  • 16. EVENT SOURCING       Modélise le comportement non pas la structure Séquentiel et cumulatif Peut rejouer les événements Ajout seulement Possible de construire n’importe quel modèle structuré Audit © Pyxis Technologies inc. 17
  • 17. LES ÉVÉNEMENTS  Rolling Snapshot  Optimisation  Aggregate root  Transaction garantie uniquement dans ce cadre  Construit à partir des événement  Commandes  ApplyEvent  Events  Ne peux pas échouer  Aucune logique à appliquer © Pyxis Technologies inc. 18
  • 18. CQRS PIPELINE Event store User interface Commands © Pyxis Technologies inc. Domain changes Events Denormalizer Read models
  • 19. LA FIN  Questions?  Rappelez-vous  Les événements sont la seule vérité  Le cœur du système est le domaine  Le modèle de lecture est flexible et volatile  Eric De Carufel  eric@decarufel.net  http://blog.decarufel.net  http://pyxis-tech.com © Pyxis Technologies inc. 20

Notas del editor

  1. ** Les application traditionnelle sont découpées en couches.** Tout passe par la logique d’affaire, les commandes et les requêtes.** Il est facile de faire les deux en même temps** Problèmes de performance (optimisé read ou write)** Ajout de cache pour performance** Concurence en écriture, lock de table** La séparation évite qu’une commande retourne de l’information et qu’une requête modifie le modèle
  2. Modèle descriptifCRUD (Create, Read, Update, Delete)Domaine d’affaire définit par des nomsModèle rigide - Base de donnée difficile à modifier sans affecter les systèmesDifficile d’utiliser la modélisation DDDModèle anémiqueLogique d’affaire du côté client ou pire dans la tête des utilisateursScalabilityLa seule option est un BD plus grosse (ou LoadBalancing)Complexité accidentelleModèle de requête de plus en plus complexe et lent
  3. Est-ce qu’on ne fait que suivre les autres?
  4. - Les outils sont présents et faciles- Supporté par toutes les plateformes- Modèle bien connu- Les concepteur de base de données (SQL, Oracle, …) font la promotion ($) de ce modèle.- Confort / résistance au changement
  5. Faite-moi confiance mais la marche est haute!
  6. ** Les application traditionnelle sont découpées en couches.** Tout passe par la logique d’affaire, les commandes et les requêtes.** Il est facile de faire les deux en même temps** Problèmes de performance (optimisé read ou write)** Ajout de cache pour performance** Concurence en écriture, lock de table** La séparation évite qu’une commande retourne de l’information et qu’une requête modifie le modèle
  7. ** La séparation évite qu’une commande retourne de l’information et qu’une requête modifie le modèle** Mauvaise chose de faire des requête directement à la base de données
  8. ** L’ajout de la gestion des commande et du modèle de lecture renforce le principe de séparation** Comment synchroniser 2 BD?** On a besoind’avoirl’information live en tout temps.** Coming out – On n’estjamais live** Capitalisersurce fait plutôtque de s’enplaindre.** Dans ce contexte la base de donnée est complètement cachée elle est même inutile
  9. ** Une base de données une représentation passive d’un système** Il faut parler d’action et pas de données** Le concept de command fonctionne partout : Commander une pizza par exemple.** Se poser la question si une commande peut être refusé est sais et démontre qu’on porte attention aux règles d’affaires plutôt qu’aux données.
  10. ** L’asynchronicité fait partie du système au lieu d’être gérée comme une exception
  11. **On a les command et les requêtes** Il nous manque les événements
  12. ** L’ajout de la gestion des commande et du modèle de lecture renforce le principe de séparation** Comment synchroniser 2 BD?** On a besoind’avoirl’information live en tout temps.** Coming out – On n’estjamais live** Capitalisersurce fait plutôtque de s’enplaindre.** Dans ce contexte la base de donnée est complètement cachée elle est même inutile
  13. ** Plusieurs façon de voir la vérité dépendamment du point de vue. Ex: Changement d’adresse, Paye (dépense vs gain)** La seule vérité du système réside en ce qui c’est réellement passé, donc dans les événements.** Le modèle de lecture peux être persisté dans la forme la plus proche de sa consultation.** Le processus de mise à jour du modèle passe par la réception et le gestion des événement et par la transformation (dénormalisation) de l’événement en données utiles** Le Service BUS assure le transport des événement entre les différents systèmes.