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

CQRS De la théorie à la pratique

CQRS De la théorie à la pratique

Séduisante sur le papier, nous avons pu confronter cette architecture à des problématiques bien réelles lors de l'implémentation d'une brique de gestion de stock. Nous vous proposons un retour d'expérience sur les obstacles et leurs solutions (transactionnalité, concurrence, résilience, gestion du synchronisme, ...) ainsi que sur les nombreux avantages et opportunités que nous avons tirés de cette architecture.

Nicolas Le Nardou

November 23, 2015
Tweet

More Decks by Nicolas Le Nardou

Other Decks in Technology

Transcript

  1. CONTEXTE : ARCHITECTURE ACTUELLE DU SI SI monolithique en cours

    de migration Approche WOA Découplage applicatif Broker AMQP Communication orientée événements
  2. COMMAND QUERY RESPONSIBILITY SEGREGATION Query ≈ read only Command ≈

    write only Dans un système classique, 90% de queries pour 10% de commandes SÉPARONS LES !
  3. EVENT SOURCING Pattern de stockage des données On ne stocke

    plus l'état final mais les modifications Capacité de reconstruire tous les états intermédiaires Log gratuit et fiable
  4. POUR ALLER PLUS LOIN SUR CQRS Agrégats, bounded contexts, projections,

    eventual consistency, etc. ... https://www.parleys.com/tutorial/distributed-ddd-cqrs-et- eventsourcing-1-3
  5. CAS FONCTIONNEL L'avancement dans le workflow de commande client dépend

    de la capacité à déstocker Evénement "Déstocke si tu peux"
  6. CONFUSION SYNCHRONE / RÉPONSE Commande qui renvoie une réponse ...

    arf Côté appli cliente, on a besoin de la réponse pour continuer le traitement Besoin d'une réponse, oui ... mais pas forcément synchrone !
  7. TRACKING NUMBER Emission par l'application de stock, d'un message de

    statut après le traitement d'une commande Uniquement si la commande contenait un header de tracking (uuid)
  8. RÉSISTE, PROUVE QUE TU EXISTES ! Tout le traitement d'une

    commande CQRS se fait en RAM Un événement n'a d'existence qu'une fois enregistré dans l'event store Persistence atomique
  9. INTERNAL EVENTS Evénements "techniques", internes à l'application Présents dans l'event

    store Filtrés dans les UI utilisateurs Compteur "réservé"