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

ATAM 2022 - Isoler la valeur de votre produit

Esprit Agile
November 10, 2022
17

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. 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 :
  2. 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 ?
  3. 5 Agile tour Aix Marseille 2022 - “Isoler la valeur

    de votre produit” La valeur ? 01
  4. 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 ?
  5. 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
  6. 8 Agile tour Aix Marseille 2022 - “Isoler la valeur

    de votre produit” Délimiter le système 02
  7. 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
  8. 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
  9. 11 Agile tour Aix Marseille 2022 - “Isoler la valeur

    de votre produit” Découper !!!!
  10. 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
  11. 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
  12. 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
  13. 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é
  14. 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
  15. 17 Agile tour Aix Marseille 2022 - “Isoler la valeur

    de votre produit” Comment délimiter ? 03
  16. 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
  17. 19 Agile tour Aix Marseille 2022 - “Isoler la valeur

    de votre produit” L’atelier “event storming” © Source: Introducing EventStorming - Alberto Brandolini Matériel
  18. 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 ?
  19. 21 Agile tour Aix Marseille 2022 - “Isoler la valeur

    de votre produit” © Source: Introducing EventStorming - Alberto Brandolini L’atelier “event storming” Les évènements
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 27 Agile tour Aix Marseille 2022 - “Isoler la valeur

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

    de votre produit” Un peu d’histoire : Data Driven Development
  27. 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
  28. 30 Agile tour Aix Marseille 2022 - “Isoler la valeur

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

    de votre produit” Les microservices
  30. 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
  31. 33 Agile tour Aix Marseille 2022 - “Isoler la valeur

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

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

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

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

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

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

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

    de votre produit” Coder la valeur 05
  39. 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€
  40. 42 Agile tour Aix Marseille 2022 - “Isoler la valeur

    de votre produit” Modèle anémique catégorie : int pri : int Type de course
  41. 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€
  42. 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
  43. 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€ ?
  44. 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€
  45. 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<Type de course>
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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