Thomas PIERRAIN
@tpierrain
Bruno BOUCARD
@brunoboucard
Tomasz JASKULA
@tjaskula
Eric VERNIE
@EricVernie
CQRS par
la pratiq...
Pourquoi CQRS ?
Des problèmes de Scalabilité ?
N° 4
Loi de Pareto
80-20
Le coupable…
N° 5
0%0%
80% de
lecture
20%
d’écriture
Des contraintes
très différentes à
gérer par le même
composant
central
donc
…
En même temps…
N° 6
Tenez-en vous suffisamment compte
dans vos choix de design et
d’architecture ?
Question
(pour vous)
N° 7
Comment optimiser une appli qui a
besoin de monter à l’échelle ?
Et alors
(d’après vous…)
N° 8
C’est là où
CQRS…
N° 9
CQRS (version courte)
CQRS sépare les 80 et les 20
N° 11
CQRS sépare les 80 et les 20
N° 12
20 % du temps
80 % du temps
C
Q
R
S
Et au fait ?!?
( powered by Greg YOUNG - @gregyoung )
N° 13
Command
Query
Responsibility
Segregation
Et au fait ?!?
N° 14
Command
Query
Responsibility
Segregation
Et au fait ?!?
N° 15
N° 16
Le petit CQRS illustré
N° 17
Le petit CQRS illustré
N° 18
Le petit CQRS illustré
N° 19
Le petit CQRS illustré
N° 20
Le petit CQRS illustré
N° 21
Le petit CQRS illustré
N° 22
Le petit CQRS illustré
N° 23
Le petit CQRS illustré
N° 24
Le petit CQRS illustré
N° 25
Le petit CQRS illustré
N° 26
Le petit CQRS illustré
N° 27
Le petit CQRS illustré
N° 28
Le petit CQRS illustré
N° 29
Le petit CQRS illustré
N° 30
Le petit CQRS illustré
Le petit CQRS illustré
N° 31
Bases de
données
relationnelles
(ACID)
Caches, modèles
dénormalisés,
« prêts à
«consommer »
(...
Command
DÉCLENCHE UNE ACTION
Modifie l’état du système
>> Ne retourne pas de donnée ! <<
Verbe a l’impératif
Ex: BookARoom...
Démo
Implémentation Open Source disponible sur GitHub
Constitué de deux parties
CoreClr (Runtime d’exécution) (C++)
CoreFx (inc...
N° 37
Live coding
Pour conclure…
Attention !
N° 42
…un pattern général d’architecture
Utilisez-le pour les composants soumis à rude épreuve (perf)
Et uniquement sur une sous...
Event Sourcing
Ce n’est pas non plus…
N° 44
CQRS Event Sourcing
mais
CQRS != Event Sourcing
N° 45
Donc vous l’aurez compris…
N° 46
… 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,
...
N° 48
Merci aussi à Rui CARVALHO, Mendel MONTEIRO-BECKERMAN,
Olivier COANET et Clément BOUDEREAU ainsi que Greg YOUNG
pour...
Pour refaire le lab a la
maison :
Suivez les instructions ici :
https://github.com/tpierrain/CQRS/blob/master/LabInstruc
t...
@microsoftfrance @Technet_France @msdev_fr
@tpierrain @brunoboucard @tjaskula @EricVernie
N° 50
N° 51
try
{
var uri = new Uri("http://example.com/datalist.aspx");
var httpClient = new HttpClient();
var result = await httpCli...
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
Prochain SlideShare
Chargement dans…5
×

Decouvrir CQRS (sans Event sourcing) par la pratique

593 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
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive
  • Ref: https://s-media-cache-ak0.pinimg.com/originals/69/12/a7/6912a7bfe9d6e154c83697a5e13d13fb.jpg
  • Ref: http://cdn.softwaretestinghelp.com/wp-content/qa/uploads/2011/06/Database-Testing.jpg
  • Ref: http://cdn.softwaretestinghelp.com/wp-content/qa/uploads/2011/06/Database-Testing.jpg
  • Ref: https://information2share.files.wordpress.com/2011/07/breaking-the-bottleneck.jpg
  • Ref: http://ep.imgci.com/PICTURES/CMS/58500/58513.3.jpg
  • Ref: http://cdn.softwaretestinghelp.com/wp-content/qa/uploads/2011/06/Database-Testing.jpg
  • CentOS 7.1Debian 8.4FreeBSD 10.1openSUSE 13.2openSUSE 42.1OS X 10.11Red Hat 7.2Fedora 23Ubuntu 14.04Ubuntu 16.04Ubuntu 16.10Windows 8.1
  • Ref: http://amgar.blog.processalimentaire.com/wp-content/uploads/2011/03/40061435.gif
  • https://github.com/tpierrain/CQRS/blob/master/LabInstructions.md
  • 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

    ×