architecture des applications métiers

56
palais des congrès Paris 7, 8 et 9 février 2012

Upload: gasytek

Post on 26-Jun-2015

1.070 views

Category:

Technology


5 download

DESCRIPTION

Présente des patterns et antipatterns pour la conception d'application d'entreprise. Cette présentation contient aussi une introduction à DDD et CQRS

TRANSCRIPT

Page 1: Architecture des applications métiers

palais des congrès Paris

7, 8 et 9 février 2012

Page 2: Architecture des applications métiers

« Les logiciels c’est comme les cathédrales, d’abord on les construit, et ensuite on prie »

Développeur anonyme

Page 3: Architecture des applications métiers

7 Février 2012Riana RambonimananaDéveloppeur .NETCitégestion

Patterns et Antipatterns d’architecture pour les applications d’entreprise

Page 4: Architecture des applications métiers

RappelsPatterns et Antipatterns

Organiser les logiques métierAccéder aux donnéesGérer la distribution

Exemples d’implémentationIntroduction à DDD et CQRSConclusionQuestions / Réponses

Agenda

Page 5: Architecture des applications métiers

RappelsRedessinons le contexte

Page 6: Architecture des applications métiers

Rappels

Application d’entreprise ( * Fowler )

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

Page 7: Architecture des applications métiers

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

Page 8: Architecture des applications métiers

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.)

Page 9: Architecture des applications métiers

Rappels

Antipatterns

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

Page 10: Architecture des applications métiers

Rappels

Business logic ( logique métier )

Business rules + Workflows Souvent séparé en deux catégories :

Domain logic

Application logic

Page 11: Architecture des applications métiers

Patterns et AntipatternsRéutilisons ce qui marche

Page 12: Architecture des applications métiers

Les couches

Presentation

Business

Transaction script

Domain model

Service

Service layer

Remote Facade

Data Transfer Object (DTO)

Data access

Repository

Data mapper

Patterns pour les problèmes de distribution

Patterns pour l’organisation de la logique métier

Patterns pour l’accès aux données

Communication interprocessus

Page 13: Architecture des applications métiers

Organiser les logiques métier

Page 14: Architecture des applications métiers

Presentation

Business

Transaction script

Domain model

Service

Service layer

Remote Facade

Data Transfer Object (DTO)

Data access

Repository

Data mapper

Communication interprocessus

Pattern : Transaction script

Page 15: Architecture des applications métiers

Pattern : Transaction script

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

Requête Client

CommanderArticle()

FaireUneReclamation()

GestionCommande

Domain Logic

Application Logic

Transaction script

Requête Client

Page 16: Architecture des applications métiers

Points forts : Implémentation

facile du à l’approche procédurale

Convient bien aux logiques simples

Points faibles Réutilisabilité &

extensibilité limités Ne convient pas aux

logiques complexes

Antipatterns fréquents : God class Spaghetti code Copy-paste

Pattern : Transaction script

Page 17: Architecture des applications métiers

Presentation

Business

Transaction Script

Service

Service layer

Remote Facade

Data Transfer Object (DTO)

Data access

Repository

Data mapper

Communication interprocessus

Domain model

Pattern : Domain Model

Page 18: Architecture des applications métiers

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

Domain Logic

Application Logic

Requête Client

Requête Client

Commande

Client

Reclamation

Domain model

Pattern : Domain Model

Page 19: Architecture des applications métiers

Points forts : Exploite le

paradigme objet = extensibilité et réutilisabilité

Convient bien aux logiques complexes

Testabilité améliorée (TDD etc.)

Points faibles Mise en place plus

longue Nécessite de vrais

compétences objets Mappage complexe

avec la persistance

Antipatterns fréquents : Anemic Domain model

Pattern : Domain Model

Page 20: Architecture des applications métiers

Presentation

Business

Transaction script

Domain model

Service

Remote Facade

Data Transfer Object (DTO)

Data access

Repository

Data mapper

Communication interprocessus

Service layer

Pattern : Service Layer

Page 21: Architecture des applications métiers

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.

Commande

Client

Reclamation

Service Layer

Domain Logic

Application Logic

Requête Client

Requête Client

Pattern : Service Layer

Page 22: Architecture des applications métiers

Transaction script

Domain model

Complexité de la logique métier

Coût de mise en place et maintenance

Choisir ?

Page 23: Architecture des applications métiers

Accéder aux données

Page 24: Architecture des applications métiers

Presentation

Business

Transaction script

Domain model

Service

Service layer

Remote Facade

Data Transfer Object (DTO)

Data access

Repository

Communication interprocessus

Data mapper

Pattern : Data mapper

Page 25: Architecture des applications métiers

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

m

ap

per

Achat

Domain model

Client

NouveauClient

ClientFideleAchat

Schéma

Client

Page 26: Architecture des applications métiers

Presentation

Business

Transaction script

Domain model

Service

Service layer

Remote Facade

Data Transfer Object (DTO)

Data access

Data mapper

Communication interprocessus

Repository

Pattern : Repository

Page 27: Architecture des applications métiers

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

Rep

osi

tory

Data

m

ap

per

DB

Pattern : Repository

Page 28: Architecture des applications métiers

Gérer la distribution

Page 29: Architecture des applications métiers

Presentation

Business

Transaction script

Domain model

Service

Service layer

Remote Facade

Data access

Repository

Data mapper

Communication interprocessus

Data Transfer Object (DTO)

Pattern : Data Transfer Object

Page 30: Architecture des applications métiers

Pattern : Data Transfer Object

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

senta

tio

nTier 1

Serv

ice

Tier 2

DTO

Page 31: Architecture des applications métiers

Presentation

Business

Transaction script

Domain model

Service

Service layer

Data Transfer Object (DTO)

Data access

Repository

Data mapper

Communication interprocessus

Pattern : Remote Facade

Remote Facade

Page 32: Architecture des applications métiers

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é.Pre

enta

tion

Tier 1

Serv

ice

Layer

Tier 2

DTO

Rem

ote

Fa

cad

e

Pattern : Remote Facade

Page 33: Architecture des applications métiers

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)

Page 34: Architecture des applications métiers

Résumé

Presentation

Business

Transaction script

Domain model

Service

Service layer

Remote Facade

Data Transfer Object (DTO)

Data access

Repository

Data mapper

Patterns pour les problèmes de distribution

Patterns pour l’organisation de la logique métier

Patterns pour l’accès aux données

Communication interprocessus

Page 35: Architecture des applications métiers

Introduction à DDD et CQRS

Page 36: Architecture des applications métiers

Domain Driven Design

Page 37: Architecture des applications métiers

Domain Driven Design (DDD)

Créé et formalisé par Eric Evans en 2004 dans son livre éponyme

Page 38: Architecture des applications métiers

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.

Page 39: Architecture des applications métiers

Domain Driven Design (DDD)

Pourquoi DDD ?

Nous aider à développer des logiciels qui s’attaquent à des domaines complexes.

Page 40: Architecture des applications métiers

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).

Page 41: Architecture des applications métiers

Domain Driven Design (DDD)

Appliquer DDDPrérequis : Expert MétierDéfinir un ”Ubiquitous Language”Modélisation du Domain Model qui utilisera l’ULUtilisation 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..

Page 42: Architecture des applications métiers

Command & Query Responsibility Segregation

Page 43: Architecture des applications métiers

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 …

Page 44: Architecture des applications métiers

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)

Page 45: Architecture des applications métiers

CQRS

Presentation

Business

Domain model

Service

Data access

DTO Lecture

DB

DTO Ecriture

Lecture

Ecriture

Architecture “Standard”

Page 46: Architecture des applications métiers

CQRS

Presentation

Business

Domain model

Service

Data access

Lecture

Service

Data access

DB

Ecriture

QueryCommand

Page 47: Architecture des applications métiers

CQRS

Presentation

Business

Domain model

Service

Data access

QueryCommand

Service

Data access

DBDB

Page 48: Architecture des applications métiers

CQRS

Presentation

Business

Domain model

Service

Data access

QueryCommand

Service

Data access

DBDB

Page 49: Architecture des applications métiers

Conclusion

Page 50: Architecture des applications métiers

Conclusion

Si vous n’avez pas tout retenu, pas de panique !

Page 51: Architecture des applications métiers

Conclusion

Les technologies changent, les grands concepts restent.

Page 52: Architecture des applications métiers
Page 53: Architecture des applications métiers

Références

Patterns of Enterprise Application Architecture (PoEAA) Martin Fowler ( 2003 )

Page 54: Architecture des applications métiers

Références

DDDCommunauté :

http://domaindrivendesign.org

http://tech.groups.yahoo.com/group/domaindrivendesign/

Livres :

Page 55: Architecture des applications métiers

Références

CQRSCommunauté :

http://www.cqrsinfo.com/

http://abdullin.com/wiki/command-query-responsibility-segregation-cqrs.html

http://groups.google.com/group/dddcqrs

Livre :

Page 56: Architecture des applications métiers

Questions ?