3. Ch'ti Java User Group
• Sun invité par le Chti Jug et Capgemini Nord
> architecte à l'avant-vente logicielle
sur le portfolio Java EE / ESB / SOA
> ambassadeur Application Platform
• Présence Sun dans le Ch'Nord, en autre:
> avec les solutions d'ESB/SOA et
de gestion d'identité
> dans la grande distribution, le monde
industriel ...
> … une liste non exhaustive bien sûre :)
3
4. “Success story” GlassFish ESB
• Présentation de GlassFish ESB
• GlassFish ESB “Drivers”
> Contexte et cas d'usage métier
> Technique
• Choix et patterns mis en oeuvre
> BPM, BPMN, BPEL, ESB, SOA/WS
• Retours d'expérience
• Volumétrie de la plate-forme en production
• 3 questions
4
6. La plate-forme OpenESB
Un “Enterprise Service Bus” libre et conforme à JBI 1.0/JSR 208
> Bus d'intermédiation pour les applications composites
> Conçu pour étendre les capacités de GlassFish
6
7. Vue générale de l'OpenESB
Logique métier
Orchestration Transformation
Java EE
(BPEL) (XSLT)
Management
JBI
System
Normalized Message Router (NMR)
Normalized Message Router Core
Services
WS-I BP AS2 JMS
SOAP
Java EE
7
8. Open ESB dans son container
EJB
Application Java EE BPEL
EJB Service Engine
Service Engine Service Engine
Application
Java EE Container
(“App Server”) Normalized Message Router
System
Management
Web Layer
Application Web HTTP Binding HTTP Binding Binding
Application Component Component Component
Web Container
(“App Server”) JBI Container
Sun Java App Server 9.2 (Glassfish)
External External JMX Based Admin tools
Service Service (CAM / App Server Admin
Consumer Provider Console /NetBeans)
8
10. Mapper BPEL
Les données du Mapper peut
être “ouvertes/fermées”
Les “end-points” peuvent être
configurés dynamiquement
10
11. Alert and Log Framework
Possibilité de faire du Logging/Alerting fin
11
12. BPEL 2.0 Modeling Constructs
Ability to have scope-level
variables
Event-handlers
Model event-aware business
processes/services
correlate and process ad-hoc
messages for a specific business
process instance
Additional Looping constructs
For-each
Repeat-Until
12
13. Decoupling from Bindings
Enhances portability of
composite applications
across environments
Example: Change transports
from HTTP to JMS
Manage partner links from
the CASA Editor
Manage QOS qualities of
Business Processes
Re-delivery
Throttling
13
15. Processus métier long – vue générale
Services Partners
“Portail” GlassFish ESB Telco
Service
Application composite
● Assemblage de services
●
UI Telco
● Authentifie / filtre
Orchestration
● Déclenche le process
des services Service
● Exécute les processus
● Affiche les résultats
● Orchestre les appels de
service Telco
●Transforme et Route
Service
Telco
Service
15
16. Cas d'usage et contexte
Processus de commande et d'activation de ressource
• Contraintes
> Nécessité de disposer rapidement de cette offre
(Time To Market), temps de projet court
> Processus métier long (2 à 4 semaines), nombreux
interlocuteurs (partenaires, fournisseurs)
• Maîtrise des concepts à mettre en oeuvre (→ ESB)
> Processus, modes d'échange, connectivité
> Gestion du changement
• Proximité architecte métier – architecte IT
> “Modeling / Development: “round trip” rapide et agile
16
17. Approche du client
• SOA tactique
> Pas de « repository » de services au départ
> Pas de gouvernance “at design time”
> Contrats de services “imposés” par les fournisseurs
• Approche top-down pilotée par le métier
> Approche orientée BPM
> par une modélisation des processus (visio)
• Approche bottom-up pilotée par l'équipe technique
> Prototypage et tests des services unitaires puis orchestrés
> Factorisation progressive et réutilisation des services
• Convergence projet rapide avec le couple Netbeans / ESB
> Prototypage, tests et validation rapides
17
19. GlassFish ESB Drivers
• Business driver:
> Time To Market: améliorer l'offre catalogue “Enterprise”
> Construire rapidement cette offre, en quelques mois
> Le faire au juste prix
> Avoir l'accompagnement et le support de l'éditeur
• Customer Team
> Une petite équipe combinant et maîtrisant à la fois le métier
et les contraintes techniques de l'IT
> En mesure de gérer des cycles très courts
> Autonome, utilisant les forums et communautés
19
20. Choix technique de GlassFish ESB
OpenESB vs. Oracle Fusion .....
• OpenESB, “the right size product”, retenu car:
> Open Source, bien documenté, multi-OS, complet, exemples
> Outillé et intégré avec NetBeans IDE (BPMN designer)
> Architecture “élégante” JBI/ JSR 208
> “Service Engine” BPEL 2.0 pour exécuter les processus longs
> “free” like “free beer”, au moins au début ...
> “Proximité Sun” (ça compte aussi)
• Support des standards et des technologies matures
Web Services (JAX-WS 2.x, (REST))
> Convergence projet rapide avec le couple NetBeans / OpenESB
20
22. Design Patterns utilisés
• Patterns de la SOA pour gérer les processus métier longs
> Modélisation des diagrammes d'activités avec un outil
bureautique, puis en BPMN
> Quelques patterns:
process abstraction, capability composition, compensation,
service contracts, ...
• “Integration Entreprise Patterns” (les classiques)
> Filtrer, transformer, router, découper, agréger
• Patterns “composites” ESB/SOA
> Unification de la sémantique d'appel des services tiers
> Composition et orchestration de services réutilisables
> Unification des concepts ESB, via l'exposition sous forme
de WEB Services (Service encapsulation)
22
23. Patterns utilisés – vue générale
Vue Métier / UI Consommateur métier du Service sécurisé
● Messages corrélés
Vue Métier des interface process
● Facade de services request/reply
● Décomposition fonctionelle
● Services orchestrés
Vue des Services
● Message canoniques (xfo, enrich) Wire tap de contrôle / BAM
● Routage, logging
● Protocole canonique
Services techniques Service Service
● Paysage applicatif
request/reply
Ressources iconographiques: http://soapatterns.org/, http://www.eaipatterns.com/toc.html
23
25. Importance des “assets”
• Définition précise des “end points”
> Importance et qualité du contrat de service (WSDL)
> Support des standards JAX-WS, WSI-Profile
> Sémantique commune: collaboration, schémas
> Réduction de l' “impedance mismatch” aux zones
d'articulationet de discontinuité des systèmes
• Respect des standards
> Assets :Java/Java EE, XSD, BPEL, XLST, WSDL
> Pour permettre les tests (SOAPui, BPEL-Unit, ...)
> Pour permettre la gouvernance “run-time” et “design time”
> Pour la portabilité et les évolutions futures
25
26. Retours d'experience
• Définir et gérer la qualité de service aux endroits
névralgiques (temps de réponse, Trs/sec)
• Exposer les services derrière une façade ou un
mécanisme d'équilibrage évitant les phénomènes
de surcharge des étages d'entrée (over-flooding)
> Gérer les « time-out » protocolaires (HTTP) ou métier
> Découpler via un MOM JMS
• Gérer le versionning et les opérations de
maintenance
• Proposer des mécanismes de haute disponibilité
26
27. Avantages – Inconvénients
des solutions retenues
• Pros:
> Produits “agiles” par leurs tailles et fonctionalités
> IDE à l'état de l'art (BPMN, Java), intégré
> ESB “forçant” la séparation “exécution/procole” (“SE” vs. “BC)
> Round trip aisé: “design, dev., deploy,debug, deploy, run”
> Artéfacts légers (.zip pour les applications)
> Industrialisation (install/start/stop/shutdown)
• Cons:
> Pas d'atelier métier
> Versioning via des modèles de déploiement ou des
produits tiers (Layer 7, AmberPoint, ...)
> Monitoring/Managenent optionnel ou programmatique
> Gouvernances via solutions tiers 27
29. Volumétries
• Plusieurs dizaines de processus métiers déployés
• Plusieurs centaines de commandes journalières
• Plusieurs milliers de processus en “mémoire”
> Chaque processus peut durer jusqu'à 4 semaines
> Les process BPEL sont “passivés” en BdD en attente de
corrélation
> Haute disponibilité via la base de données
> Reprise en cas d'incident sur une autre instance d'ESB
> Rejeu possible de message en cas d'exception
• Execution de l'ESB sur un serveur Sun X64
• Supervision avec des outils du Net + customization
29
31. 3 questions sur Glassfish ESB
• Q1 Technologie / spécification au coeur de GF ESB
• JSR 208 : http://jcp.org/en/jsr/detail?id=208
• Aka Java Business Integration / JBI v1.0
31
32. 3 questions sur Glassfish ESB
• Q2 citez trois « Binding Components » et 3
« Service Engines »
• Service Engines
> BPEL, DataMashup, Java EE, POJO, XSLT
• Binding Components and Encoders
> Database, Email, File, FTP, HTTP, JMS (includes JMS
JCA)
> LDAP, REST, Scheduler
32
33. 3 questions sur Glassfish ESB
• Q3 quelle est la dernière version disponible et sa
date de sortie ?
• GlassFish v2.2, sorti fin 2009 (21 décembre 2009)
• “visible” début janvier 2010
33
35. Bibliographie
• Stratégie Oracle :
> http://www.oracle.com/events/productstrategy/index.html#software
• Références et blogs GlassFish et GlassFish ESB
> http://blogs.sun.com/stories/
> https://open-esb.dev.java.net/OrganizationsUsingOpenESB.html
• Pour commencer:
> https://open-esb.dev.java.net/
> Web cast: http://webcast-west.sun.com/interactive/09C01941/index.html
> Blue Prints SOA: https://blueprints.dev.java.net/bpcatalog/ee5/soa/
• Oracle Fusion Middleware
> Oracle + Sun Product Strategy Webcast Series
http://www.oracle.com/events/productstrategy/index.html#software
> http://www.oracle.com/technology/products/middleware/index.html
35
36. Bibliographie, quelques références
• Soa Design Patterns / Thomas Erl
• Enterprise Integration Patterns:
Designing, Building, and Deploying
Messaging Solutions
• Design Patterns: Elements of
Reusable Object-Oriented Software
• Et toutes les votres ...
36