Bonjour j'aime bien vos vidéos et j'apprends beaucoup. Effectivement si tu peux faire une vidéo vraiment cas pratiques de À à Z d'un système de blog comme exemple.
Vidéo très intéressante et bien expliquée, merci ! Une petite question concernant le tout début où tu expliques ta structure sous forme de BoundedContext. Les contextes peuvent communiquer entre eux, du moment qu'il s'agit de la meme couche ? Par exemple, une classe Foo déclarée dans IdentityAndAccess à la couche Domain pourra etre utilisée dans le context Billing, couche Domain uniquement ?
Ouais le domain ne doit dépendre de rien d’autre que du domain ! Utiliser Foo dans Billing sur projet comme celui on peut se le permettre Mais on évitera les dépendances entre context avec des ACLs et Agrégats (c’est beaucoup plus poussé) et ça pourra faciliter la subdivision des contexts en micro service par exemple
Pour revenir sur les notions de DDD, dans Identity un utilisateur est un User mais dans Billing c’est un Subscriber 😅 C’est exactement le même utilisateur mais le changement de contexte change également la sémantique et le langage à utiliser et du coup il y’a plus vraiment de lien direct entre Identity et Billing 😅 La nation d’agrégation et plutôt intéressante pour ça
@@devscast_org merci pour les infos, je creuse de mon côté et c'est très intéressant. Je découvre beaucoup de concepts grâce à ça :) De ce que j'ai pu comprendre, tu as un User et un Customer dans ton exemple, qui sont quasiment identiques dans la définition, avec potentiellement quelques variations. Et l'ACL est simplement un service qui va traduire un User en Customer. Ca va permettre à ton BillingContext d'obtenir les infos du User, sans créer pour autant une dépendance avec l'Identity car il passe par un service (qui est donc l'ACL).
J'ai regardé la vidéo la semaine derrière, j'ai émis beaucoup de critiques mais après une mûre réflexion j'ai commencé à mettre ma façon de faire en question et franchement en regardant les spécifications j'ai compris l'utilité de le faire. Surtout pour les test et la maintenance. Manque plus qu'à l'implémenter dans mon prochain projet. Merci Bernard.
Ouais mais après si ton projet n’est pas complexe ça ne nécessitera pas tout ça 😅 c’est pas une façon de faire universelle adapté à tout projet, si c’est le cas alors beaucoup de courage J’ai pas mentionné dans la vidéo mais les tests sont beaucoup plus facile à réaliser vu le découplage
@devscast_org oui j'ai un projet de plus de 10 entités et des dizaines de use case qui sont biensur testé. La maintenance de ce code est vraiment fastidieuse et je comprends bien la nécessité de le decoupler avant qu'il ne grandisse d'avantage. En parlant des tests ils sont certes implémenté mais ils sont très lourd surtout que je suis obligé de faire des tests end to end. Avec cette archi, la plupart des tests seront unitaires.
Bonjour j'aime bien vos vidéos et j'apprends beaucoup. Effectivement si tu peux faire une vidéo vraiment cas pratiques de À à Z d'un système de blog comme exemple.
D'accord je vais essayer avec une vidéo en début d'année, si ça marche je pourrais en faire une série
@devscast_org ben super c'est génial
Vidéo très intéressante et bien expliquée, merci !
Une petite question concernant le tout début où tu expliques ta structure sous forme de BoundedContext. Les contextes peuvent communiquer entre eux, du moment qu'il s'agit de la meme couche ?
Par exemple, une classe Foo déclarée dans IdentityAndAccess à la couche Domain pourra etre utilisée dans le context Billing, couche Domain uniquement ?
Ouais le domain ne doit dépendre de rien d’autre que du domain ! Utiliser Foo dans Billing sur projet comme celui on peut se le permettre
Mais on évitera les dépendances entre context avec des ACLs et Agrégats (c’est beaucoup plus poussé) et ça pourra faciliter la subdivision des contexts en micro service par exemple
Pour revenir sur les notions de DDD, dans Identity un utilisateur est un User mais dans Billing c’est un Subscriber 😅
C’est exactement le même utilisateur mais le changement de contexte change également la sémantique et le langage à utiliser et du coup il y’a plus vraiment de lien direct entre Identity et Billing 😅
La nation d’agrégation et plutôt intéressante pour ça
@@devscast_org merci pour les infos, je creuse de mon côté et c'est très intéressant. Je découvre beaucoup de concepts grâce à ça :)
De ce que j'ai pu comprendre, tu as un User et un Customer dans ton exemple, qui sont quasiment identiques dans la définition, avec potentiellement quelques variations.
Et l'ACL est simplement un service qui va traduire un User en Customer.
Ca va permettre à ton BillingContext d'obtenir les infos du User, sans créer pour autant une dépendance avec l'Identity car il passe par un service (qui est donc l'ACL).
Exactement exactement !
La couche présentation n'interagit pas avec le domain directement
Oui effectivement voilà à quoi sert la couche applicative, je crois que je vais devoir faire une vidéo pour chaque couche plutôt qu’à la va vite
J'ai regardé la vidéo la semaine derrière, j'ai émis beaucoup de critiques mais après une mûre réflexion j'ai commencé à mettre ma façon de faire en question et franchement en regardant les spécifications j'ai compris l'utilité de le faire. Surtout pour les test et la maintenance. Manque plus qu'à l'implémenter dans mon prochain projet. Merci Bernard.
Ouais mais après si ton projet n’est pas complexe ça ne nécessitera pas tout ça 😅 c’est pas une façon de faire universelle adapté à tout projet, si c’est le cas alors beaucoup de courage
J’ai pas mentionné dans la vidéo mais les tests sont beaucoup plus facile à réaliser vu le découplage
@devscast_org oui j'ai un projet de plus de 10 entités et des dizaines de use case qui sont biensur testé. La maintenance de ce code est vraiment fastidieuse et je comprends bien la nécessité de le decoupler avant qu'il ne grandisse d'avantage.
En parlant des tests ils sont certes implémenté mais ils sont très lourd surtout que je suis obligé de faire des tests end to end. Avec cette archi, la plupart des tests seront unitaires.
Ouais Exactement