$30 off During Our Annual Pro Sale. View Details »

ATAM 2022 - Isoler la valeur de votre produit

Esprit Agile
November 10, 2022
6

ATAM 2022 - Isoler la valeur de votre produit

Agile Tour Aix-Marseille 2022
"Qu'est-ce que la valeur d'un produit ? La technologie derrière les IHM ? La base de données ?
Non, la valeur c'est le métier.
Après avoir effectué un rapide historique des anciennes pratiques de conception, cette conférence explique pourquoi et comment isoler le métier.
Le deuil d'une modélisation unique est la route vers cet objectif, et un moyen d'y arriver est le DDD stratégique.
L'isolation au sein d'un périmètre délimité est facilité par l'architecture Hexagonale ou la Clean architecture, et le DDD tactique nous aide à modéliser le coeur de notre métier.
Découvrir, creuser, expérimenter et démontrer la partie métier sans être influencé par l'appelant, ou la manière de stocker les données, est l'immense avantage que nous vous proposons de détailler."

Esprit Agile

November 10, 2022
Tweet

More Decks by Esprit Agile

Transcript

  1. 1
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”

    View Slide

  2. 2
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”

    View Slide

  3. 3
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Christophe Breheret-Girardin
    ● Développeur
    ● Coach craft
    ● Formateur
    ● Etudiant
    [email protected]
    @ChristopheB_G
    christophe-breheret-girardin
    En fin de présentation :

    View Slide

  4. 4
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    4
    Présentez-vous
    1. Qui est un coach agile ?
    2. Qui est PO ?
    3. Qui est PM ?
    4. Qui est top manager ?
    5. Qui est architecte ?
    6. Qui est développeur ?
    7. Qui s’est perdu ?

    View Slide

  5. 5
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    La valeur ?
    01

    View Slide

  6. 6
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    L’agilité et la valeur
    ๏ L’agilité est basée sur la valeur
    ๏ Nous prenons des décisions par rapport à cette valeur
    > Plus la valeur est élevée, plus il faut l’implémenter tôt
    > Moins c’est élevée, plus il faut le faire tard
    ๏ Mais la valeur, c’est quoi ?
    > Le business ?
    > Le client ?
    > La technologie ?
    > Les cookies ?
    > Autre ?

    View Slide

  7. 7
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    La nature du développement logiciel
    ๏ La valeur c’est ce que vous voulez :
    > La vie humaine
    > L’information
    > La vitesse du produit
    > Les progrès rapides
    > Un environnement agréable
    > Autre…
    @qpautrat

    View Slide

  8. 8
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Délimiter le système
    02

    View Slide

  9. 9
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    2001, l’ère du monolithe
    ๏ Une seule base de données
    > Et même un seul schéma
    ๏ La modélisation unique
    > De persistance
    > Utilisé partout, même au sein du métier
    ๏ Une seule base de code
    > Et même un seul contexte
    ๏ Une seule unité de déploiement
    > Tout ou rien

    View Slide

  10. 10
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Appréhender un monolithe
    ๏ Nous avions l’habitude de spécifier le système dans
    sa globalité
    > Puis le développer
    > Puis le qualifier
    > Puis…
    > Puis le déployer en production
    ๏ Pourquoi cette méthode était mauvaise ?
    > Attente que tout soit disponible avant la première mise
    en production
    > Effet tunnel
    > Charge cognitive importante
    > Feeback des utilisateurs recueilli tardivement

    View Slide

  11. 11
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Découper !!!!

    View Slide

  12. 12
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Les périmètres applicatifs
    ๏ Ils permettent de délimiter des parties différentes
    du système
    > Qui représentent des unités cohérentes
    > Des unités plus petites
    > Charge cognitive abordable
    > Permettent d’obtenir de l’autonomie
    ๏ En Domain Driven Design :
    > Ils sont appelés “bounded contexts”
    > Ils font partie des patterns stratégiques du DDD

    View Slide

  13. 13
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Exemple du VTC (Véhicule de Tourisme avec Chauffeur)
    ๏ Quelques bounded contexts possibles :
    > Authentification
    > Administration des chauffeurs
    > Administration des prix
    > Réservation d’une course
    > Facturation
    > Affichage de la position du véhicule en temps réel
    > Communiquer avec le chauffeur
    > Comptabilité
    > Fidélisation
    ๏ Est-ce que tous ces périmètres ont la même valeur ?
    Les bounded contexts

    View Slide

  14. 14
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Classer les périmètres
    ๏ Core
    > Le cœur de votre système
    > Ce qui est différenciant par rapport aux
    concurrents
    > Complexe
    > Build
    > Ce sont les périmètres prioritaires
    ๏ Supporting
    > Essentiel au système
    > Utilisé par le coeur
    > Build ou buy
    ๏ Generic
    > Nécessaire mais pas critique
    > Buy
    Core domain chart
    © Source: https://github.com/ddd-crew/core-domain-charts

    View Slide

  15. 15
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Exemple du VTC
    ๏ Core potentiels :
    > Réservation d’une course
    > Affichage de la position du véhicule en temps réel
    > Communication avec le chauffeur
    > Administration des prix
    ๏ Supporting potentiels :
    > Administration des chauffeurs
    > Fidélisation
    ๏ Generic potentiels :
    > Authentification
    > Facturation
    Core domain chart
    > Comptabilité

    View Slide

  16. 16
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Topologie d’équipe
    ๏ Principe de « pizza team » @ Amazon :
    > Une équipe = au nombre de personnes que l’on
    peut nourrir avec deux pizzas
    > Pas assez à manger : surdimensionnée
    > Trop à manger : sous-dimensionnée
    ๏ Features « Core » = valeur de votre système
    > Il faut mettre une équipe en adéquation
    > Pas d’équipe full juniors
    > Equipe non externalisée
    > Recrutement ?
    ๏ Features « Supporting »
    > On peut commencer à externaliser certaines
    parties

    View Slide

  17. 17
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Comment délimiter ?
    03

    View Slide

  18. 18
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Déterminer ces périmètres
    ๏ Plusieurs stratégies :
    > Imposée par un top manager qui n’est pas au
    cœur de l’équipe
    > L’intuition d’un architecte
    +
    Et en microservices svp
    > L’organisation de l’entreprise
    + Loi de Conway
    > De la collaboration via des ateliers

    View Slide

  19. 19
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    L’atelier “event storming”
    © Source: Introducing EventStorming - Alberto Brandolini
    Matériel

    View Slide

  20. 20
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    ๏ Historiquement :
    > Une équipe détenait la connaissance
    > Une équipe fonctionnelle était chargée de
    recueillir le besoin
    > Une équipe de réalisation était chargée du
    développement
    > Une équipe était chargée de qualifier
    l’application
    ๏ L’event storming prône la communication
    entre toutes les parties prenantes :
    > Tout ceux ayant des questions
    > Tout ceux ayant des réponses
    L’atelier “event storming”
    Qui inviter ?

    View Slide

  21. 21
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    © Source: Introducing EventStorming - Alberto Brandolini
    L’atelier “event storming”
    Les évènements

    View Slide

  22. 22
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    © Source: Introducing EventStorming - Alberto Brandolini
    L’atelier “event storming”
    Placer le 1er évènement

    View Slide

  23. 23
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    © Source: Introducing EventStorming - Alberto Brandolini
    L’atelier “event storming”
    Placer tous les évènements

    View Slide

  24. 24
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    © Source: Introducing EventStorming - Alberto Brandolini
    L’atelier “event storming”
    Challenger les événements

    View Slide

  25. 25
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    © Source: Introducing EventStorming - Alberto Brandolini
    L’atelier “event storming”
    Trouver les événements pivots

    View Slide

  26. 26
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    L’atelier “event storming”
    Déterminer les bounded contexts
    © Source: Introducing EventStorming - Alberto Brandolini

    View Slide

  27. 27
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Architecturer un périmètre
    04

    View Slide

  28. 28
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Un peu d’histoire : Data Driven Development

    View Slide

  29. 29
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Architecture spaghettis
    ๏ “Big ball of mud” en anglais
    > Avant les années 2000
    > Quoique…
    ๏ Illusion de vitesse, mais…
    > Non testable automatiquement
    > Onboarding compliqué
    > Souffrance en maintenance
    > Souffrance à faire évoluer

    View Slide

  30. 30
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Architecture en couches

    View Slide

  31. 31
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Les microservices

    View Slide

  32. 32
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Le design d’un périmètre
    ๏ La construction d’un périmètre se base sur une
    architecture logicielle
    ๏ Ce système doit être maintenu
    > De plus, il évolue
    > Doit s’effectuer avec le moins de douleur possible
    ๏ L’architecture logicielle est donc centrale dans le
    dispositif
    > C’est un processus itératif, refactoré en permanence
    > Basée sur la communication

    View Slide

  33. 33
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Hexagonal architecture d’Alistair Cockburn (2005)

    View Slide

  34. 34
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Isolation de la valeur

    View Slide

  35. 35
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Pérennité
    Sans technologie

    View Slide

  36. 36
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Architecture port et adapter

    View Slide

  37. 37
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    User-side / server-side

    View Slide

  38. 38
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Architecture évolutive / différer les décisions

    View Slide

  39. 39
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    La clean architecture de Robert C. Martin (2012)

    View Slide

  40. 40
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Coder la valeur
    05

    View Slide

  41. 41
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Exemple du VTC : administration des prix
    Règles de gestion
    ๏ Différentes catégories de course
    > Avec un prix de base pour chaque catégorie
    +
    basique
    +
    dimanche, jour férié
    +
    etc.
    > Qui sera ensuite indexé sur la distance, etc.
    ๏ La règle de mise à jour des prix est la suivante :
    > On fixe le prix de la catégorie 1
    > Catégorie 2 = 11% de la catégorie 1
    > Catégorie 3 = 23% de la catégorie 1
    > Catégorie 4 = 34% de la catégorie 1
    > Max : 110€

    View Slide

  42. 42
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Modèle anémique
    catégorie : int
    pri : int
    Type de course

    View Slide

  43. 43
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Modèle anémique
    Traitements externes
    Use case
    catégorie=1
    pri =20
    Type de course
    catégorie=2
    pri =22
    Type de course
    catégorie=3
    pri =24
    Type de course
    catégorie=4
    pri =26
    Type de course
    prix = 20
    prix = 20*11%
    prix = 20*23%
    prix = 20*34%
    Prix plafonné à 110€

    View Slide

  44. 44
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Modèle anémique
    Use case
    Traitements externes
    Type de course
    Type de course
    Perte de cohérence
    catégorie=1
    pri =20
    Type de course
    catégorie=2
    pri =22
    Type de course
    catégorie=4
    pri =26
    Type de course

    View Slide

  45. 45
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Où doit être situé le métier ?
    Ty e e
    cour e
    Connaissance des % par type de course ?
    Parcours des types de course ?
    Max 110€ ?

    View Slide

  46. 46
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    L’application est le métier
    Ty e e
    cour e
    Connaissance des % par type de course
    Parcours des types de course
    Max : 110€

    View Slide

  47. 47
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Modèle anémique vers un modèle riche
    Grille tarifaire
    catégorie:int
    pri :int
    Type de course
    La liste des types de course n’est pas exposée
    modifierPrix(int)
    calculerPrix(int)
    Liste

    View Slide

  48. 48
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Vers un modèle Riche
    Traitements internes
    catégorie=1
    pri =
    catégorie=2
    pri =
    catégorie=3
    pri =
    catégorie=4
    pri =
    Use case
    modifierPrix(int)
    Grille tarifaire
    modifierPrix(20) 20*34%
    20*23%
    20*11%
    20
    calculerPrix(20)
    calculerPrix(20)
    calculerPrix(20)
    calculerPrix(20)
    Type de course
    Type de course
    Type de course
    Type de course

    View Slide

  49. 49
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Un modèle riche
    ๏ Il faut placer les règles au même niveau
    que les données
    > Principe de « tell don’t ask »
    > Permet la réutilisation
    ๏ Il faut protéger les données
    > Permet d’éviter les états incohérents
    > Respect de l’encapsulation de la POO
    ๏ L’extérieur ne sait pas comment est
    organisé l’intérieur
    > Refactorisation facilitée

    View Slide

  50. 50
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Modèle riche
    modifierPrix(int)
    Grille tarifaire
    catégorie:int
    pri :int
    calculerPrix(int)
    Type de course
    primitive obsession

    View Slide

  51. 51
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Modèle riche
    énumération
    CatégorieCourse
    valeur:int
    PrixCourse
    calculer(pourcentage)
    modifierPrix(int)
    Grille tarifaire
    primitive obsession
    Basique
    Dimanche, jour férié
    Etc.
    catégorie:CatégorieCourse
    pri :Prix urse
    calculerPrix(int)
    Type de course

    View Slide

  52. 52
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    calcule(pourcentage)
    Grille tarifaire
    TypeCatégorie
    TypeCatégorie
    valeur:int
    PrixCourse
    calculer(pourcentage)
    modifierPrix(int)
    Grille tarifaire
    Prix plafonné à 110€ ?
    Modèle riche
    Enrichir encore et encore
    énumération
    CatégorieCourse
    catégorie:CatégorieCourse
    pri :Prix urse
    calculerPrix(int)
    Type de course

    View Slide

  53. 53
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Aggregate, aggregate root, entity, value object
    TypeCatégorie
    PrixCourse
    calcule(pourcentage)
    Domain Driven Design tactique
    TypeCatégorie
    PrixCourse
    calcule(pourcentage)
    valeur:int
    PrixCourse
    calculer(pourcentage)
    catégorie:CatégorieCourse
    pri :Prix urse
    calculerPrix(int)
    Type de course
    Grille tarifaire
    modifierPrix(int)
    Grille tarifaire
    énumération
    CatégorieCourse

    View Slide

  54. 54
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Architecture hexagonale + DDD tactique
    modifierPrix(int)
    Grille tarifaire
    Modifier les prix de la grille tarifaire

    View Slide

  55. 55
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Bilan
    06

    View Slide

  56. 56
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    Les 3 éléments importants à retenir
    ๏ L’isolation de la valeur s’effectue à plusieurs niveaux
    > Périmètres applicatifs
    > Equipes
    ๏ Un système doit être conçu de façon modulaire
    > Trouver les périmètres applicatifs
    > Déterminer ceux qui ont le plus de valeur
    > Adapter les équipes
    ๏ Isoler le métier au sein de chaque périmètre
    > Permet la testabilité, la maintenabilité, l’évolutivité
    > Permet de repousser les choix techniques
    > Permet de découvrir, creuser, expérimenter, démontrer
    Core domain chart
    Event Storming
    Team topologies
    Clean & hexagonale architecture
    DDD tactique
    DDD
    stratégique
    > Architecture logiciel
    > Code

    View Slide

  57. 57
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”
    MERCI
    "L'idéal de la vie n'est pas l'espoir de devenir parfait,
    c'est la volonté d'être toujours meilleur"
    Ralph Waldo Emerson

    View Slide

  58. 58
    Agile tour Aix Marseille 2022 - “Isoler la valeur de votre produit”

    View Slide