Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Les bonnes pratiques de DDD, CQRS & Event-Sourcing

Les bonnes pratiques de DDD, CQRS & Event-Sourcing

Dans cette présentation, nous abordons les concepts-clés du DDD, du CQRS et de l'Event-Sourcing, ainsi que les best practices à suivre.

Le Domain-Driven Design facilite la modélisation du domaine métier dans un système logiciel. Ses concepts permettent de construire des bounded contexts, qui apparaissent bien souvant dans les architectures de type micro-services. L'architecture réactive encourage la communication asynchrone entre componsants d'un système, tout en favorisant un faible couplage entre ceux-ci. Le pattern nommé Command Query Responsibility Segregation (CQRS) permet la séparation des opérations de lecture et d'écritures. L'Event Sourcing met l'accent sur les changements d'état d'un système qui l'ont conduit dans son état actuel.

AxonIQ propose une plateforme de développement et d'infrastructure pour implémenter des systèmes basées sur l'Event Sourcing. Nous présentons comment AxonIQ facilite la mise en place et offre des gains de temps dans cette implémentation.

Une fois que ces pratiques émergent dans une organisation IT, les développeurs et développeuses doivent en avoir connaissance, afin d'éviter des coûts de maintenance accrus, des retards de livraison, ou encore des revues de code sans fin. Comment amener les bonnes pratiques DDD, CQRS et Event Sourcing au maximum de personnes, et comment diffuser cette connaissance? Nous présentons comment la plateforme Promyze répond à cet enjeu.

Promyze

July 22, 2022
Tweet

More Decks by Promyze

Other Decks in Programming

Transcript

  1. Agenda DDD, CQRS & Event Sourcing The good, ubly &

    bad: 11 examples of practices Share best CQRS & Event Sourcing practices
  2. Domain Domain Driven Design Aggregate Aggregate Root Entity Entity Value

    Object Value Object Value Object Id Command Event Id Id Ubiquitous Language Bounded Context Bounded Context Bounded Context Id Id Concept Concept Anti-Corruption Layer Ref Ref Domain Id Status Value Object Value Object
  3. Command Query Responsibility Segregation Maintainable Extensible Responsive Elastic Resilient Message

    Driven Read Model Write Model Read Model Read Model Read Model Sharded Replicated Read Model Write Model Read Model Read Model Read Model Command Event Query Command Event Aggregate State New Aggregate State Event Projection State New Projection State Status Query Projection State Response
  4. Event Sourcing Read Model Read Model Read Model Read Model

    Command Event Query Event Event Event Event Event Event Event Event Event Read Model Read Model Read Model Read Model Command Event Query Event Event Event Event Event Event Event Event Event BOOM 0 N 0 N Command Event New Projection State Status Event Event Event Eve nt Event Event Event Event Event Event Event 1494 Luca Pacioli invents the double entry booking system New Snapshot Snapshot Snapshot Aggregate State
  5. CRUD like message names Create Customer Customer Created Update Customer

    Customer Updated Delete Customer Customer Deleted
  6. Business oriented message names Register Customer Customer Registered Correct Customer

    Address Customer Address Corrected Forget Customer Customer Forgotten
  7. Mixing Commands, Events and Queries semantic Aggregate Get Customer Details

    Get Customer Details Customer Details Projection Update Customer Details New Customer Details Correct Customer Details
  8. Building the Aggregate State from its Events Aggregate Command OK

    Event Event Event Event Event Event Aggregate State
  9. Applying Side Effects while rebuilding the State Aggregate Command OK

    Event Event Event Event Event Event Aggregate State Command Procedure Event