SlideShare une entreprise Scribd logo
1  sur  57
palais des
congrès
Paris




7, 8 et 9
février 2012
« Les logiciels c’est comme les
cathédrales, d’abord on les construit, et
ensuite on prie »
                        Développeur anonyme
Patterns et Antipatterns
d’architecture pour les
applications d’entreprise
7 Février 2012
Riana Rambonimanana
Développeur .NET
Citégestion
Agenda

  Rappels
  Patterns et Antipatterns
      Organiser les logiques métier
      Accéder aux données
      Gérer la distribution
  Exemples d’implémentation
  Introduction à DDD et CQRS
  Conclusion
  Questions / Réponses
Rappels
Redessinons le contexte
Rappels


 Application d’entreprise ( * Fowler )

      Grande quantité de donnée
      Système de persistance
      Multi utilisateurs
      Logique métier souvent complexe
Rappels


 Architecture

      L’ensemble des aspects techniques qui sont
     importants pour le logiciel
      Les choix architecturaux influent sur la réussite ou
     l’échec d’un projet
Rappels


 Patterns

      Formalisation de solutions courantes à des problèmes
     récurrents
      Moyen efficace de partager les connaissances
      Pratiques éprouvées et considérées comme bonnes
      Différentes catégories (design, analyse, architecture
     etc.)
Rappels


 Antipatterns

      Pratiques courantes mais contreproductives
      Résulte souvent de patterns mal utilisés
      Conduit à des coûts élevés de développement
Rappels


 Business logic ( logique métier )

      Business rules + Workflows
      Souvent séparé en deux catégories :
         Domain logic
         Application logic
Patterns et Antipatterns
Réutilisons ce qui marche
Les couches

          Presentation




                                     Communication interprocessus
            Service
                                                          Patterns pour
                      Data Transfer Object (DTO)          l’organisation de la
                           Remote Facade                  logique métier
                            Service layer
                                                          Patterns pour l’accès aux
           Business                                       données

                          Transaction script

                            Domain model
                                                          Patterns pour les
                                                          problèmes de
          Data access
                                                          distribution

                              Repository

                            Data mapper
Organiser les logiques métier
Pattern : Transaction script

         Presentation




                                    Communication interprocessus
           Service

                     Data Transfer Object (DTO)

                          Remote Facade

                           Service layer

          Business

                        Transaction script

                           Domain model

         Data access

                             Repository

                           Data mapper
Pattern : Transaction script

Chaque “use case” est réalisé par une méthode qui exécute toute la
logique correspondante.



                  GestionCommande
                   CommanderArticle()
 Requête Client                                      Domain Logic

                                                     Application Logic

              Transaction script
                   FaireUneReclamation()
 Requête Client
Pattern : Transaction script


Points forts :              Points faibles
   Implémentation facile      Réutilisabilité &
    du à l’approche             extensibilité limités
    procédurale                Ne convient pas aux
   Convient bien aux           logiques complexes
    logiques simples

Antipatterns fréquents :
   God class
   Spaghetti code
   Copy-paste
Pattern : Domain Model

        Presentation




                                   Communication interprocessus
          Service

                    Data Transfer Object (DTO)

                         Remote Facade

                          Service layer

         Business

                        Transaction Script

                         Domain model

        Data access

                            Repository

                          Data mapper
Pattern : Domain Model

Les logiques sont partagées par plusieurs objets qui collaborent pour
satisfaire les demandes.



               Domain model

 Requête        Command
  Client        e                                       Domain Logic

                                  Client
                                                        Application Logic

 Requête
  Client        Reclamation
Pattern : Domain Model


Points forts :                 Points faibles
   Exploite le paradigme         Mise en place plus
    objet = extensibilité et       longue
    réutilisabilité               Nécessite de vrais
   Convient bien aux              compétences objets
    logiques complexes            Mappage complexe
   Testabilité améliorée          avec la persistance
    (TDD etc.)

Antipatterns fréquents :
   Anemic Domain model
Pattern : Service Layer

         Presentation




                                    Communication interprocessus
           Service

                     Data Transfer Object (DTO)

                          Remote Facade
                           Service layer

          Business

                         Transaction script

                           Domain model

         Data access

                             Repository

                           Data mapper
Pattern : Service Layer

 Constitue un point d’entrée unique pour l’extérieur et orchestre les
 demandes entrantes, mais délègue la majorité des tâches au Domain
 model.


          Service Layer
                          Commande
Requête
 Client                                                  Domain Logic
                                        Client

                                                         Application Logic
                          Reclamation

Requête
 Client
Choisir ?

                   Transaction script
Coût de mise en
place et
maintenance
                              Domain model




                  Complexité de la
                  logique métier
Accéder aux données
Pattern : Data mapper

         Presentation




                                    Communication interprocessus
           Service

                     Data Transfer Object (DTO)

                          Remote Facade

                           Service layer

          Business

                         Transaction script

                           Domain model

         Data access

                             Repository

                           Data mapper
Pattern : Data mapper

   Découple entièrement le modèle objet et le modèle de donnée et
   prends en charge le mapping entre les deux mondes.




                                 Data mapper
Domain model

    Client          Achat                      Schéma

                                                 Client

                 ClientFidele
                                                           Achat
 NouveauClient
Pattern : Repository

         Presentation




                                    Communication interprocessus
           Service

                     Data Transfer Object (DTO)

                          Remote Facade

                           Service layer

          Business

                         Transaction script

                           Domain model

         Data access

                            Repository

                           Data mapper
Pattern : Repository

 Isole le Domain model de l’accès aux données rendant ainsi le Domain
 Model indépendant, réutilisable et facilement testable.



Domain model




                                            Data mapper
                               Repository
                                                              DB
Gérer la distribution
Pattern : Data Transfer Object

         Presentation




                                     Communication interprocessus
           Service

                     Data Transfer Object (DTO)

                          Remote Facade

                            Service layer

          Business

                          Transaction script

                           Domain model

         Data access

                             Repository

                            Data mapper
Pattern : Data Transfer Object

Objet servant uniquement à transporter des données et qui a pour but
d’optimiser les échanges lors de communications interprocessus.



    Tier 1                                   Tier 2
        Presentation


                            DTO




                                                 Service
Pattern : Remote Facade

        Presentation




                                   Communication interprocessus
          Service

                    Data Transfer Object (DTO)

                         Remote Facade

                          Service layer

         Business

                        Transaction script

                          Domain model

        Data access

                            Repository

                          Data mapper
Pattern : Remote Facade

Point d’entrée au système pour les appels distants. Son but sera
d’optimiser les échanges réseau en offrant une interface à forte
granularité.


    Tier 1                                     Tier 2




                                                                  Service Layer
                                                  Remote Facade
        Preentation



                             DTO
Démo : Exemples d’implémentation
« En théorie, il n’y a pas de différence entre la théorie et la
pratique, mais en pratique, il y en a » ( Loi de Murphy)
Résumé

         Presentation




                                    Communication interprocessus
           Service
                                                         Patterns pour
                     Data Transfer Object (DTO)
                                                         l’organisation de la
                          Remote Facade                  logique métier
                           Service layer
                                                         Patterns pour l’accès aux
          Business                                       données

                         Transaction script

                           Domain model
                                                         Patterns pour les
                                                         problèmes de
         Data access
                                                         distribution

                             Repository

                           Data mapper
Introduction à DDD et CQRS
Domain Driven Design
Domain Driven Design (DDD)

 Créé et formalisé par Eric Evans en 2004 dans son livre éponyme
Domain Driven Design (DDD)


 Constats :

      La vraie complexité réside dans le domaine lui même
     et non dans les aspects techniques.
      Le design conditionne jusqu’ou un projet peut
     devenir complexe ou non.
Domain Driven Design (DDD)


 Pourquoi DDD ?

      Nous aider à développer des logiciels qui s’attaquent
     à des domaines complexes.
Domain Driven Design (DDD)


 Mais qu’est ce que c’est ?

 Ni une architecture, ni une méthode, plutôt une philosophie

       Priorité 1 : La compréhension du domaine, du métier

       Priorité 2 : Utilisation de modèles pour représenter
      tout design complexe (Model Driven Design).
Domain Driven Design (DDD)

 Appliquer DDD
   Prérequis : Expert Métier
   Définir un ”Ubiquitous Language”
   Modélisation du Domain Model qui utilisera l’UL
   Utilisation des patterns (Aggregate Roots, Entity, Value
   Objects etc..)
   Refactoriser en permanence pour clarifier les concepts du
   domaine.
   Pour les gros projets, utilisation des Bounded Context,
   Context Mapping etc..
Command & Query Responsibility Segregation
CQRS

 Origine :
    Issu de la communauté mais popularisé par Greg Young (2009) et
 d’autres ( Udi Dahan etc..).



 Pourquoi CQRS ?
   Réduire la complexité des Domain Model qu’on utilise
   Faciliter l’extensibilité de l’application (scalability)
   Améliorer la performance
   Et tout ce qu’on n’a pas encore découvert …
CQRS
  Mais qu’est ce que c’est ?
 Application au niveau architectural de Command Query Separation (CQS)

 Command : change l’état visible du système

    void CommanderUnArticle (int idClient, int idArticle);
    void InscrireNouveauClient (string nom, int age);


 Query : ne change pas l’état visible du système

    Solde GetSoldeClient(int idClient)
    bool GetIsArticleDisponible(int idArticle)
CQRS
             Architecture “Standard”
             Presentation




       DTO Lecture                         DTO Ecriture

               Service

                                                          Lecture
              Business

                            Domain model                  Ecriture
             Data access




                              DB
CQRS

 Lecture            Presentation
                                                         Ecriture
                                                  Command
            Query
                                        Service



  Service
                                        Business

                                                   Domain model
   Data
  access
                                         Data
                                        access




                                   DB
CQRS

                    Presentation




                                              Command
            Query                  Service




  Service                          Business

                                              Domain model
   Data
  access                            Data
                                   access




            DB                                  DB
CQRS

                    Presentation




                                              Command
            Query                  Service




  Service                          Business

                                              Domain model
   Data
  access                            Data
                                   access




              DB                                DB
Conclusion
Conclusion
   Si vous n’avez pas tout retenu, pas de panique !
Conclusion
   Les technologies changent, les grands concepts restent.
Références

   Patterns of Enterprise Application Architecture (PoEAA)
                    Martin Fowler ( 2003 )
Références
 DDD
   Communauté :
       http://domaindrivendesign.org
       http://tech.groups.yahoo.com/group/domaindrivendesign/
   Livres :
Références
 CQRS
   Communauté :
       http://www.cqrsinfo.com/
       http://abdullin.com/wiki/command-query-responsibility-segregation-
       cqrs.html
       http://groups.google.com/group/dddcqrs
   Livre :
Questions ?
Pour aller plus loin

                                               Prochaines sessions des Dev Camps
  Chaque semaine, les                            10
                                                          Live     Open Data - Développer des applications riches avec le
                                               février
  DevCamps                                      2012

                                                 16
                                                         Meeting   protocole Open Data


  ALM, Azure, Windows Phone, HTML5, OpenData   février
                                                          Live
                                                         Meeting
                                                                   Azure series - Développer des applications sociales sur
                                                                   la plateforme Windows Azure
                                                2012
  http://msdn.microsoft.com/fr-fr/devcamp
                                                 17
                                                          Live     Comprendre le canvas avec Galactic et la librairie
                                               février
                                                         Meeting   three.js
                                                2012

  Téléchargement, ressources                     21
                                               février
                                                          Live     La production automatisée de code avec CodeFluent
                                                         Meeting   Entities
  et toolkits : RdV sur MSDN                    2012

                                               2 mars     Live     Comprendre et mettre en oeuvre le toolkit Azure pour
  http://msdn.microsoft.com/fr-fr/              2012     Meeting   Windows Phone 7, iOS et Android

                                               6 mars     Live
                                                                   Nuget et ALM
                                                2012     Meeting

  Les offres à connaître                       9 mars
                                                2012
                                                          Live
                                                         Meeting
                                                                   Kinect - Bien gérer la vie de son capteur


         90 jours d’essai gratuit de Windows   13 mars
                                                2012
                                                          Live
                                                         Meeting
                                                                   Sharepoint series - Automatisation des tests

         Azure                                 14 mars    Live     TFS Health Check - vérifier la bonne santé de votre
          www.windowsazure.fr                   2012     Meeting   plateforme de développement

                                               15 mars    Live     Azure series - Développer pour les téléphones, les
                                                2012     Meeting   tablettes et le cloud avec Visual Studio 2010
         Jusqu’à 35% de réduction sur Visual   16 mars    Live     Applications METRO design - Désossage en règle d'un
         Studio Pro, avec l’abonnement MSDN     2012     Meeting   template METRO javascript

                                               20 mars    Live     Retour d'expérience LightSwitch, Optimisation de
          www.visualstudio.fr                   2012     Meeting   l'accès aux données, Intégration Silverlight

                                               23 mars    Live     OAuth - la clé de l'utilisation des réseaux sociaux dans
                                                2012     Meeting   votre application

Contenu connexe

Tendances

SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)Hussain Mansoor
 
Mule memory leak issue
Mule memory leak issueMule memory leak issue
Mule memory leak issueJeeHyunLim
 
Data Archiving & Purging.pptx
Data Archiving & Purging.pptxData Archiving & Purging.pptx
Data Archiving & Purging.pptxMishika Bharadwaj
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 
Apache NiFi Meetup - Introduction to NiFi Registry
Apache NiFi Meetup - Introduction to NiFi RegistryApache NiFi Meetup - Introduction to NiFi Registry
Apache NiFi Meetup - Introduction to NiFi RegistryBryan Bende
 
Prometheus
PrometheusPrometheus
Prometheuswyukawa
 
[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdf
[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdf[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdf
[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdfChris Hoyean Song
 
Open Metadata and Governance with Apache Atlas
Open Metadata and Governance with Apache AtlasOpen Metadata and Governance with Apache Atlas
Open Metadata and Governance with Apache AtlasDataWorks Summit
 
Great Expectations Presentation
Great Expectations PresentationGreat Expectations Presentation
Great Expectations PresentationAdam Doyle
 
Data Lakehouse, Data Mesh, and Data Fabric (r1)
Data Lakehouse, Data Mesh, and Data Fabric (r1)Data Lakehouse, Data Mesh, and Data Fabric (r1)
Data Lakehouse, Data Mesh, and Data Fabric (r1)James Serra
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 
Site reliability engineering
Site reliability engineeringSite reliability engineering
Site reliability engineeringJason Loeffler
 
10 AWESOME Things We've Done With SharePoint
10 AWESOME Things We've Done With SharePoint10 AWESOME Things We've Done With SharePoint
10 AWESOME Things We've Done With SharePointRegroove
 
Observability for modern applications
Observability for modern applications  Observability for modern applications
Observability for modern applications MoovingON
 
Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies
Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies
Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies DataWorks Summit/Hadoop Summit
 
Data Management - Full Stack Deep Learning
Data Management - Full Stack Deep LearningData Management - Full Stack Deep Learning
Data Management - Full Stack Deep LearningSergey Karayev
 
A Reference Process Model for Master Data Management
A Reference Process Model for Master Data ManagementA Reference Process Model for Master Data Management
A Reference Process Model for Master Data ManagementBoris Otto
 

Tendances (20)

SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)
 
Mule memory leak issue
Mule memory leak issueMule memory leak issue
Mule memory leak issue
 
Data Archiving & Purging.pptx
Data Archiving & Purging.pptxData Archiving & Purging.pptx
Data Archiving & Purging.pptx
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event Sourcing
 
Taxonomy: Do I Need One
Taxonomy: Do I Need OneTaxonomy: Do I Need One
Taxonomy: Do I Need One
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Apache NiFi Meetup - Introduction to NiFi Registry
Apache NiFi Meetup - Introduction to NiFi RegistryApache NiFi Meetup - Introduction to NiFi Registry
Apache NiFi Meetup - Introduction to NiFi Registry
 
Prometheus
PrometheusPrometheus
Prometheus
 
[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdf
[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdf[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdf
[EN] Building modern data pipeline with Snowflake + DBT + Airflow.pdf
 
Open Metadata and Governance with Apache Atlas
Open Metadata and Governance with Apache AtlasOpen Metadata and Governance with Apache Atlas
Open Metadata and Governance with Apache Atlas
 
Great Expectations Presentation
Great Expectations PresentationGreat Expectations Presentation
Great Expectations Presentation
 
Data Lakehouse, Data Mesh, and Data Fabric (r1)
Data Lakehouse, Data Mesh, and Data Fabric (r1)Data Lakehouse, Data Mesh, and Data Fabric (r1)
Data Lakehouse, Data Mesh, and Data Fabric (r1)
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
Site reliability engineering
Site reliability engineeringSite reliability engineering
Site reliability engineering
 
10 AWESOME Things We've Done With SharePoint
10 AWESOME Things We've Done With SharePoint10 AWESOME Things We've Done With SharePoint
10 AWESOME Things We've Done With SharePoint
 
Observability for modern applications
Observability for modern applications  Observability for modern applications
Observability for modern applications
 
Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies
Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies
Apache Atlas: Why Big Data Management Requires Hierarchical Taxonomies
 
Data Management - Full Stack Deep Learning
Data Management - Full Stack Deep LearningData Management - Full Stack Deep Learning
Data Management - Full Stack Deep Learning
 
A Reference Process Model for Master Data Management
A Reference Process Model for Master Data ManagementA Reference Process Model for Master Data Management
A Reference Process Model for Master Data Management
 

Similaire à Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses applications métiers dans un monde en perpétuel changement

Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)Klee Group
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesLilia Sfaxi
 
7. information modelling
7. information modelling7. information modelling
7. information modellingsugogo
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Cours chapitre7 2012
Cours chapitre7 2012Cours chapitre7 2012
Cours chapitre7 2012Yves Caseau
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfBabacarDIOP48
 
client_serveur_introductionnnnnnnnnnn.PPT
client_serveur_introductionnnnnnnnnnn.PPTclient_serveur_introductionnnnnnnnnnn.PPT
client_serveur_introductionnnnnnnnnnn.PPTradjadjouambi
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & DéveloppementsPaulin CHOUDJA
 
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...Microsoft Décideurs IT
 
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...Microsoft Décideurs IT
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?
Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?
Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?Semaweb
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 

Similaire à Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses applications métiers dans un monde en perpétuel changement (20)

Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
 
7. information modelling
7. information modelling7. information modelling
7. information modelling
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie API
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Cours chapitre7 2012
Cours chapitre7 2012Cours chapitre7 2012
Cours chapitre7 2012
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdf
 
client_serveur_introductionnnnnnnnnnn.PPT
client_serveur_introductionnnnnnnnnnn.PPTclient_serveur_introductionnnnnnnnnnn.PPT
client_serveur_introductionnnnnnnnnnn.PPT
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & Développements
 
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
 
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
Démo des nouvelles versions Dynamics CRM, L'utilisateur au centre des innovat...
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?
Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?
Le Cloud c’est quoi, son fonctionnement. Effet de mode ou réalité ?
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 

Plus de Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Plus de Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses applications métiers dans un monde en perpétuel changement

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 2. « Les logiciels c’est comme les cathédrales, d’abord on les construit, et ensuite on prie » Développeur anonyme
  • 3. Patterns et Antipatterns d’architecture pour les applications d’entreprise 7 Février 2012 Riana Rambonimanana Développeur .NET Citégestion
  • 4. Agenda Rappels Patterns et Antipatterns Organiser les logiques métier Accéder aux données Gérer la distribution Exemples d’implémentation Introduction à DDD et CQRS Conclusion Questions / Réponses
  • 6. Rappels Application d’entreprise ( * Fowler ) Grande quantité de donnée Système de persistance Multi utilisateurs Logique métier souvent complexe
  • 7. Rappels Architecture L’ensemble des aspects techniques qui sont importants pour le logiciel Les choix architecturaux influent sur la réussite ou l’échec d’un projet
  • 8. Rappels Patterns Formalisation de solutions courantes à des problèmes récurrents Moyen efficace de partager les connaissances Pratiques éprouvées et considérées comme bonnes Différentes catégories (design, analyse, architecture etc.)
  • 9. Rappels Antipatterns Pratiques courantes mais contreproductives Résulte souvent de patterns mal utilisés Conduit à des coûts élevés de développement
  • 10. Rappels Business logic ( logique métier ) Business rules + Workflows Souvent séparé en deux catégories : Domain logic Application logic
  • 12. Les couches Presentation Communication interprocessus Service Patterns pour Data Transfer Object (DTO) l’organisation de la Remote Facade logique métier Service layer Patterns pour l’accès aux Business données Transaction script Domain model Patterns pour les problèmes de Data access distribution Repository Data mapper
  • 14. Pattern : Transaction script Presentation Communication interprocessus Service Data Transfer Object (DTO) Remote Facade Service layer Business Transaction script Domain model Data access Repository Data mapper
  • 15. Pattern : Transaction script Chaque “use case” est réalisé par une méthode qui exécute toute la logique correspondante. GestionCommande CommanderArticle() Requête Client Domain Logic Application Logic Transaction script FaireUneReclamation() Requête Client
  • 16. Pattern : Transaction script Points forts : Points faibles  Implémentation facile  Réutilisabilité & du à l’approche extensibilité limités procédurale  Ne convient pas aux  Convient bien aux logiques complexes logiques simples Antipatterns fréquents :  God class  Spaghetti code  Copy-paste
  • 17. Pattern : Domain Model Presentation Communication interprocessus Service Data Transfer Object (DTO) Remote Facade Service layer Business Transaction Script Domain model Data access Repository Data mapper
  • 18. Pattern : Domain Model Les logiques sont partagées par plusieurs objets qui collaborent pour satisfaire les demandes. Domain model Requête Command Client e Domain Logic Client Application Logic Requête Client Reclamation
  • 19. Pattern : Domain Model Points forts : Points faibles  Exploite le paradigme  Mise en place plus objet = extensibilité et longue réutilisabilité  Nécessite de vrais  Convient bien aux compétences objets logiques complexes  Mappage complexe  Testabilité améliorée avec la persistance (TDD etc.) Antipatterns fréquents :  Anemic Domain model
  • 20. Pattern : Service Layer Presentation Communication interprocessus Service Data Transfer Object (DTO) Remote Facade Service layer Business Transaction script Domain model Data access Repository Data mapper
  • 21. Pattern : Service Layer Constitue un point d’entrée unique pour l’extérieur et orchestre les demandes entrantes, mais délègue la majorité des tâches au Domain model. Service Layer Commande Requête Client Domain Logic Client Application Logic Reclamation Requête Client
  • 22. Choisir ? Transaction script Coût de mise en place et maintenance Domain model Complexité de la logique métier
  • 24. Pattern : Data mapper Presentation Communication interprocessus Service Data Transfer Object (DTO) Remote Facade Service layer Business Transaction script Domain model Data access Repository Data mapper
  • 25. Pattern : Data mapper Découple entièrement le modèle objet et le modèle de donnée et prends en charge le mapping entre les deux mondes. Data mapper Domain model Client Achat Schéma Client ClientFidele Achat NouveauClient
  • 26. Pattern : Repository Presentation Communication interprocessus Service Data Transfer Object (DTO) Remote Facade Service layer Business Transaction script Domain model Data access Repository Data mapper
  • 27. Pattern : Repository Isole le Domain model de l’accès aux données rendant ainsi le Domain Model indépendant, réutilisable et facilement testable. Domain model Data mapper Repository DB
  • 29. Pattern : Data Transfer Object Presentation Communication interprocessus Service Data Transfer Object (DTO) Remote Facade Service layer Business Transaction script Domain model Data access Repository Data mapper
  • 30. Pattern : Data Transfer Object Objet servant uniquement à transporter des données et qui a pour but d’optimiser les échanges lors de communications interprocessus. Tier 1 Tier 2 Presentation DTO Service
  • 31. Pattern : Remote Facade Presentation Communication interprocessus Service Data Transfer Object (DTO) Remote Facade Service layer Business Transaction script Domain model Data access Repository Data mapper
  • 32. Pattern : Remote Facade Point d’entrée au système pour les appels distants. Son but sera d’optimiser les échanges réseau en offrant une interface à forte granularité. Tier 1 Tier 2 Service Layer Remote Facade Preentation DTO
  • 33. Démo : Exemples d’implémentation « En théorie, il n’y a pas de différence entre la théorie et la pratique, mais en pratique, il y en a » ( Loi de Murphy)
  • 34. Résumé Presentation Communication interprocessus Service Patterns pour Data Transfer Object (DTO) l’organisation de la Remote Facade logique métier Service layer Patterns pour l’accès aux Business données Transaction script Domain model Patterns pour les problèmes de Data access distribution Repository Data mapper
  • 37. Domain Driven Design (DDD) Créé et formalisé par Eric Evans en 2004 dans son livre éponyme
  • 38. Domain Driven Design (DDD) Constats : La vraie complexité réside dans le domaine lui même et non dans les aspects techniques. Le design conditionne jusqu’ou un projet peut devenir complexe ou non.
  • 39. Domain Driven Design (DDD) Pourquoi DDD ? Nous aider à développer des logiciels qui s’attaquent à des domaines complexes.
  • 40. Domain Driven Design (DDD) Mais qu’est ce que c’est ? Ni une architecture, ni une méthode, plutôt une philosophie Priorité 1 : La compréhension du domaine, du métier Priorité 2 : Utilisation de modèles pour représenter tout design complexe (Model Driven Design).
  • 41. Domain Driven Design (DDD) Appliquer DDD Prérequis : Expert Métier Définir un ”Ubiquitous Language” Modélisation du Domain Model qui utilisera l’UL Utilisation des patterns (Aggregate Roots, Entity, Value Objects etc..) Refactoriser en permanence pour clarifier les concepts du domaine. Pour les gros projets, utilisation des Bounded Context, Context Mapping etc..
  • 42. Command & Query Responsibility Segregation
  • 43. CQRS Origine : Issu de la communauté mais popularisé par Greg Young (2009) et d’autres ( Udi Dahan etc..). Pourquoi CQRS ? Réduire la complexité des Domain Model qu’on utilise Faciliter l’extensibilité de l’application (scalability) Améliorer la performance Et tout ce qu’on n’a pas encore découvert …
  • 44. CQRS Mais qu’est ce que c’est ? Application au niveau architectural de Command Query Separation (CQS) Command : change l’état visible du système void CommanderUnArticle (int idClient, int idArticle); void InscrireNouveauClient (string nom, int age); Query : ne change pas l’état visible du système Solde GetSoldeClient(int idClient) bool GetIsArticleDisponible(int idArticle)
  • 45. CQRS Architecture “Standard” Presentation DTO Lecture DTO Ecriture Service Lecture Business Domain model Ecriture Data access DB
  • 46. CQRS Lecture Presentation Ecriture Command Query Service Service Business Domain model Data access Data access DB
  • 47. CQRS Presentation Command Query Service Service Business Domain model Data access Data access DB DB
  • 48. CQRS Presentation Command Query Service Service Business Domain model Data access Data access DB DB
  • 50. Conclusion Si vous n’avez pas tout retenu, pas de panique !
  • 51. Conclusion Les technologies changent, les grands concepts restent.
  • 52.
  • 53. Références Patterns of Enterprise Application Architecture (PoEAA) Martin Fowler ( 2003 )
  • 54. Références DDD Communauté : http://domaindrivendesign.org http://tech.groups.yahoo.com/group/domaindrivendesign/ Livres :
  • 55. Références CQRS Communauté : http://www.cqrsinfo.com/ http://abdullin.com/wiki/command-query-responsibility-segregation- cqrs.html http://groups.google.com/group/dddcqrs Livre :
  • 57. Pour aller plus loin Prochaines sessions des Dev Camps Chaque semaine, les 10 Live Open Data - Développer des applications riches avec le février DevCamps 2012 16 Meeting protocole Open Data ALM, Azure, Windows Phone, HTML5, OpenData février Live Meeting Azure series - Développer des applications sociales sur la plateforme Windows Azure 2012 http://msdn.microsoft.com/fr-fr/devcamp 17 Live Comprendre le canvas avec Galactic et la librairie février Meeting three.js 2012 Téléchargement, ressources 21 février Live La production automatisée de code avec CodeFluent Meeting Entities et toolkits : RdV sur MSDN 2012 2 mars Live Comprendre et mettre en oeuvre le toolkit Azure pour http://msdn.microsoft.com/fr-fr/ 2012 Meeting Windows Phone 7, iOS et Android 6 mars Live Nuget et ALM 2012 Meeting Les offres à connaître 9 mars 2012 Live Meeting Kinect - Bien gérer la vie de son capteur 90 jours d’essai gratuit de Windows 13 mars 2012 Live Meeting Sharepoint series - Automatisation des tests Azure 14 mars Live TFS Health Check - vérifier la bonne santé de votre www.windowsazure.fr 2012 Meeting plateforme de développement 15 mars Live Azure series - Développer pour les téléphones, les 2012 Meeting tablettes et le cloud avec Visual Studio 2010 Jusqu’à 35% de réduction sur Visual 16 mars Live Applications METRO design - Désossage en règle d'un Studio Pro, avec l’abonnement MSDN 2012 Meeting template METRO javascript 20 mars Live Retour d'expérience LightSwitch, Optimisation de www.visualstudio.fr 2012 Meeting l'accès aux données, Intégration Silverlight 23 mars Live OAuth - la clé de l'utilisation des réseaux sociaux dans 2012 Meeting votre application