Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Decouvrir CQRS (sans Event sourcing) par la pratique

885 vues

Publié le

Introduction à CQRS présentée aux MS experiences 2016 (Palais des Congrès) par Thomas PIERRAIN, en compagnie de Bruno BOUCARD, Tomasz JASKULA et Eric VERNIE.

Publié dans : Logiciels
  • Soyez le premier à commenter

Decouvrir CQRS (sans Event sourcing) par la pratique

  1. 1. Thomas PIERRAIN @tpierrain Bruno BOUCARD @brunoboucard Tomasz JASKULA @tjaskula Eric VERNIE @EricVernie CQRS par la pratique
  2. 2. Pourquoi CQRS ?
  3. 3. Des problèmes de Scalabilité ? N° 4
  4. 4. Loi de Pareto 80-20 Le coupable… N° 5 0%0% 80% de lecture 20% d’écriture
  5. 5. Des contraintes très différentes à gérer par le même composant central donc … En même temps… N° 6
  6. 6. Tenez-en vous suffisamment compte dans vos choix de design et d’architecture ? Question (pour vous) N° 7
  7. 7. Comment optimiser une appli qui a besoin de monter à l’échelle ? Et alors (d’après vous…) N° 8
  8. 8. C’est là où CQRS… N° 9
  9. 9. CQRS (version courte)
  10. 10. CQRS sépare les 80 et les 20 N° 11
  11. 11. CQRS sépare les 80 et les 20 N° 12 20 % du temps 80 % du temps
  12. 12. C Q R S Et au fait ?!? ( powered by Greg YOUNG - @gregyoung ) N° 13
  13. 13. Command Query Responsibility Segregation Et au fait ?!? N° 14
  14. 14. Command Query Responsibility Segregation Et au fait ?!? N° 15
  15. 15. N° 16 Le petit CQRS illustré
  16. 16. N° 17 Le petit CQRS illustré
  17. 17. N° 18 Le petit CQRS illustré
  18. 18. N° 19 Le petit CQRS illustré
  19. 19. N° 20 Le petit CQRS illustré
  20. 20. N° 21 Le petit CQRS illustré
  21. 21. N° 22 Le petit CQRS illustré
  22. 22. N° 23 Le petit CQRS illustré
  23. 23. N° 24 Le petit CQRS illustré
  24. 24. N° 25 Le petit CQRS illustré
  25. 25. N° 26 Le petit CQRS illustré
  26. 26. N° 27 Le petit CQRS illustré
  27. 27. N° 28 Le petit CQRS illustré
  28. 28. N° 29 Le petit CQRS illustré
  29. 29. N° 30 Le petit CQRS illustré
  30. 30. Le petit CQRS illustré N° 31 Bases de données relationnelles (ACID) Caches, modèles dénormalisés, « prêts à «consommer » (no SQL)
  31. 31. Command DÉCLENCHE UNE ACTION Modifie l’état du système >> Ne retourne pas de donnée ! << Verbe a l’impératif Ex: BookARoom N° 32 Query RÉCUPÈRE UNE INFORMATION Lecture-seule ! Retourne des données Verbe a l’impératif Ex: GetAvailableRooms Event A DÉJÀ EU LIEU (Immutable) Verbe au participe passé Ex: RoomBooked
  32. 32. Démo
  33. 33. Implémentation Open Source disponible sur GitHub Constitué de deux parties CoreClr (Runtime d’exécution) (C++) CoreFx (inclue les classes, collections, file systems, xml etc….) (C#) Le Framework ASP.NET Core 1.0 s’appuie dessus Déploiement classique ou Containers (Linux ou Windows) .NET Core // Licensed to the .NET Foundation under one or more agreements.
  34. 34. N° 37
  35. 35. Live coding
  36. 36. Pour conclure…
  37. 37. Attention ! N° 42
  38. 38. …un pattern général d’architecture Utilisez-le pour les composants soumis à rude épreuve (perf) Et uniquement sur une sous-partie de votre plate-forme par exemple CQRS ce n’est pas… N° 43
  39. 39. Event Sourcing Ce n’est pas non plus… N° 44
  40. 40. CQRS Event Sourcing mais CQRS != Event Sourcing N° 45
  41. 41. Donc vous l’aurez compris… N° 46
  42. 42. … bien séparer son code de lecture et son code d’écriture CQRS c’est surtout… N° 47 Queries Caches, modèles dénormalisés, lecture-seule Commands Transactionnel ACID
  43. 43. N° 48 Merci aussi à Rui CARVALHO, Mendel MONTEIRO-BECKERMAN, Olivier COANET et Clément BOUDEREAU ainsi que Greg YOUNG pour leurs feedbacks et idées pour ce talk.
  44. 44. Pour refaire le lab a la maison : Suivez les instructions ici : https://github.com/tpierrain/CQRS/blob/master/LabInstruc tions.md
  45. 45. @microsoftfrance @Technet_France @msdev_fr @tpierrain @brunoboucard @tjaskula @EricVernie N° 50
  46. 46. N° 51
  47. 47. try { var uri = new Uri("http://example.com/datalist.aspx"); var httpClient = new HttpClient(); var result = await httpClient.GetStringAsync(uri); } catch (Exception e) { } Exemple de code N° 52

×