semaine 8: java 2, enterprise edition1 patron dintégration dentreprise architectures de message...

24
Semaine 8: Java 2, Enterprise Edition 1 Patron d’intégration d’entreprise Architectures de message asynchrone

Upload: nicolas-barbier

Post on 04-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 1

Patron d’intégration d’entreprise

• Architectures de message asynchrone

Page 2: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 2

Le besoin d’intégration d’entreprise

• Plus d’une application• Souvent des centaines• Une simple application trop difficile

et inflexible• Spécialisation des vendeurs• Raisons historiques, fusions• Culture politique de l’organisation

• Les clients perçoivent l’entreprise comme un tout, et veulent faire exécuter des fonctions d’entreprises qui recouvrent plusieurs applications.

Page 3: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 3

Défis de l’intégration inter-entreprise

• Les réseaux sont lents• Les réseaux ne sont pas fiables• Il n’y a pas 2 applications semblables• Le changement est inévitable• Plus

• Intrésèquement à grande échelle et complexe• Contrôle limité sur les applications et les participants• Implications profondes, impacts d’affaire critiques• Entrelacé avec la politique corporative• Peu de standards existent et ils évoluent encore…

Page 4: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 4

Couplage faible recherché

• Couplage: mesure de la dépendance entre les applications• Dépendance technologique• Dépendance sur lieu• Dépendance temporelle• Dépendance sur les données

• Waldo et al, 1994: “Objects that interact in a distributed system need to be dealt with in ways that are ntrinsically different from objects that interact in a single address space

Exemple de couplage fort

Page 5: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 5

Intergiciel basé message

• Les canaux sont séparés des applications • Enleve la dépendance physique

• Les canaux sont asynchrones et fiables • Enleve les dépendances temporelles

• Les données sont échangées dans des messages complets et autonomes• Enleve les dépendances aux formats de données

Page 6: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 6

Une approche asynchrone

Page 7: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 7

L’évolution du paradigme

Page 8: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 8

Plusieurs produits

• Intergiciels basés message (MOM)• IBM MQ• Microsoft MSMQ• Java Message Service Implémentations

• Suite d’intégration d’applications d’entreprise• TIBCO, Webmethods, SeeBeyond, Vitria, BEA

Integration• Service Web asynchrone

• WS-ReliableMessaging, ebMS (ebXML)• Sun JAXMI Microsoft Web Service Extension

Page 9: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 9

Intégration basée message

• 1. Transporter les messages

• 2. Concevoir les messages

• 3. Acheminer le message à sa destination

• 4. Transformer le message à son format

• 5. Produire et consommer le message dans l’application

• 6. Gérer et tester le système

Page 10: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 10

Les patrons d’intégration

• 1. Le canal de transport des messages

• 2. La conception des messages

• 3. La route du message à sa destination appropriée

• 4. La traduction du message au format approprié

• 5. La production et la consommation des messages

• 6. La gestion et le test du système

Page 11: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 11

“Bonjour”, façon asynchrone

• Le consommateur• Le fournisseur de service• Échanges de type Requête-Réponse• Deux canaux de communications point à point• Des messages de requête et de réponse séparés

Page 12: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 12

Plusieurs consommateurs

• Chaque composant consommateur a sa propre queue de réponse, son propre canal

• Comment le fournisseur du service sait-il où envoyer la réponse?• A tous – très innéficace• Adresse codée- viole le principe d’indépendance et de non

couplage

Page 13: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 13

Patron “adresse de retour”

• Le consommateur fournit une adresse de retour (un canal)

• Le fournisseur de service répond avec un message dans le canal de réponse.

• Si l’adresse de retour pointe sur un canal différent que celui du consommateur, alors on utilise le chaînage

Page 14: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 14

Multiple fournisseur de service

• Les messages de requête peuvent être traités par plus d’un service fournisseur

• Les canaux points à points supportent des consommateurs en compétition, dans ce cas-ci un seul service reçoit chacun des messages de requête

• Le canal enfile dans la queue les requêtes non répondues

Page 15: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 15

Problèmes

• Les messages peuvent être traités par des services différents• Soit par répartion de charge• Ou par un aiguilleur

• Les messages peuvent devenir hors séquence

• Comment pairer les requêtes et les réponses• Envoyer une seule requête à la

fois? Très inéficace• Se baser sur la séquence

naturelle? Faux en réalité

Page 16: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 16

Patron “Corrélation”

• Fournir à chaque message un identificateur unique• Message ID (Simple, limité)• GUID (Globally Uniqaue ID)• Clef d’affaire (ID de l’ordre)

• Le fournisseur copie l’identificateur dans le message de réponse

• L’émetteur peut pairer les requêtes et les réponses

Page 17: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 17

Un aiguilleur de message

• Comment pouvons-nous découpler des étapes de traitement individuel?• Les messages seront acheminés à des composants différents selon

les conditions• Les différents canaux dépendront du contenu des messages, de

l’environnement (tests ou production)• Nous ne voulons pas charger l’émetteur avec la décision

• Un aiguilleur de message acheminera les messages d’un canal à un autre

Page 18: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 18

Un diviseur

• Comment nous pouvons traiter un message s’il contient plusieurs éléments, chacun devant être traité différemment?• Nous voulons

• Traiter chaque élément indépendamment• Éviter de produire des éléments absents ou doubles• Faire une utilisation efficace des resources du réseau

• Un diviseur sépare un message agrégé en une série de messages individuels, chacun contenant les données d’un seul item

Page 19: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 19

Un aggrégateur

• Comment combiner plusieurs messages reliés en un seul message?• Les messages peuvent être hors séquence• Les messages peuvent être retardés

• Un aggrégateur gère la réconcialition de plusieurs messages en un seul• Composant avec état

Page 20: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 20

Un aggrégateur

• Corrélation• Quels messages entrants vont ensemble?

• Condition de complétude• Quand sommes-nous prêt à publier le message résultant?

• Attendre pour tous• Expiration du délai (absolu ou incrémentiel)• Après les premiers• Un événement externe

• Algorithme de l’aggrégation• Comment combiner les messages reçus en un seul

message résultant• Un seul, le meilleur• Condenser les données• Concaténer les données pour une analyse ultérieure

Page 21: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 21

L’enchère

• Envoyer un message à un ensemble dynamique de participants, et retourner un message unique qui incorpore les réponses

Page 22: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 22

Un exemple de combinaison

• Recevoir un ordre, choisir la meilleure offre de chaque item parmi les vendeurs, combiner le tout en un ordre valide

Page 23: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 23

Page 24: Semaine 8: Java 2, Enterprise Edition1 Patron dintégration dentreprise Architectures de message asynchrone

Semaine 8: Java 2, Enterprise Edition 24

Résumé

• Un langage visuel simple pour décrire des solutions intégrées

• Combiner les patrons pour décrire des solutions plus larges

• Pas un outil compliqué• Pas un langage de spécification UML