1 Java à Murex: un retour d'expérience Jean-Pierre DACHER & Craig MORRISON
Résumé Description des défis et contraintes d un grand éditeur de logiciel Le cycle de développement Murex pour atteindre les objectifs Un mélange de technique, d approche industrielle et d agilité 2
Jean-Pierre DACHER Chief Operations Officer, Murex Travaille dans l édition logicielle depuis plus de vingt ans, il a été successivement développeur, chef de projet, directeur de programmes et directeur engineering dans les domaines des télécommunications, de la gestion de systèmes et réseaux et de la Business Intelligence. Actuellement en charge de la Chaine de Production logicielle et de l excellence opérationnelle à Murex. 3
Craig MORRISON Senior Development Manager, Murex Longue expérience internationale en tant que développeur, architecte, manager. Actuellement responsable pour le suivi de développements transverses fonctionnels en Java à Murex. 4
Editeur de logiciel pour les marchés capitaux depuis 1986 Introduction à Murex 5
Murex? Éditeur de logiciel dans le domaine des marchés de capitaux 25 ans d expérience dans le domaine > 1 500 salariés dans 11 bureaux à travers le monde Paris / Dublin / Beyrouth / Luxembourg / Singapour / Tokyo / Sydney / Beijing / Seoul / NY / São Paulo > 200 sites installés à travers le monde dans les grandes institutions financières > 35 000 utilisateurs du système dans plus de 65 pays Overall #1 Technology vendor 2011 (Risk Magazine) 6
Développement à Murex? > 200 développeurs pour l évolution continue de la plateforme MX.3 ~ 13 M LoC (C/C++ 70%, Java 30% et en croissance) Défis : Demande constante de nouveauté fonctionnelle pour augmenter la compétitivité de nos clients > Expertise fonctionnelle nécessaire pour pouvoir répondre rapidement aux demandes de développements spécifiques Nouvelles règlementations financières, accélérées dans le contexte de la crise > Adaptation rapide aux contraintes du marché et une capacité de production croissante Exigences très élevées en performance > Créativité algorithmique et adoption des meilleures technologies Évolution continue : - Formation continue sur les nouvelles technologies de développement - Adoption continue des nouvelles méthodes de développement - Veille technologique 7
Challenges techniques de la MX.3 Support multi-plateforme Solaris/Linux/AIX Gestion de volume important de transactions et montée en charge Plusieurs millions de transactions existantes Millions de transactions par jour Milliers de transaction à la seconde Milliers d utilisateurs connectés Performance et latence des traitements Gestion des évènements en dizaines de millisecondes Dizaines de milliers de calculs à la seconde Tolérance aux pannes Résilience dans les environnements de production Réplication en cas de désastre 8
Facteurs clés de succès 1. Compréhension des besoins clients 2. Architecture et plateforme technique robustes et évolutives facilitant les développements fonctionnels 3. Livraisons prédictibles - Software Factory 4. Agilité Pratiques et environnement de développement 9
Facteurs clés de succès Architecture et plateforme Aperçu de l architecture Java et C++ 10
MX.3 Architecture (logique) Scalable Deployment Client Tier Application Tier Database Tier Client Layer Business Layer Sequencing Layer Communication Layer Database Layer Workflow Tasks Workflow Manager MX Clients Calculation Engines (Position keeping, VaR, Datamart Feeder) Position Service Aggregation & Compliance Service Financial Database Datamart Database Object Repository Engine Market Data Service Service Registry 11
MX.3 Architecture (technique) Tiers applicatif Couche fonctionnelle Gestion des transactions & évènements, calculs financiers Interfaçages avec des systèmes externes Couche infrastructure Couche de transport/communication développée en interne Parallélisation des traitements (multi-threading, parallel processing et grid computing) Monitoring temps réel à travers JMX (état, exceptions, perf) Tiers Base de données Persistance transactionnelle de l état applicatif Support de Sybase ASE et Oracle DB Tiers Client Client leger en Java Swing standalone Matériel Processeur multi-cœur/multi-thread GPU (Graphical Processing Unit) Stockage (RAID, SSD) Milliers d utilisateurs connectés Langages de programmation Java C++ OpenCL Python 12
Java & C++ dans une architecture adaptée Architecture facilitant les développements fonctionnels : la séparation des préoccupations (SoC) Calculs Orchestration & distribution Présentation Stockage Java Interfaçages avec des systèmes externes Monitoring (JMX), MOM (JMS, MQ), authentification (JAAS), services web (JAX- WS), Orchestration des divers composants du système Montée à la charge horizontale et verticale Agrégation et caching des résultats Orchestration fonctionnelle Interface utilisateur C++ Calculs financiers («close to the metal») Logique métier Extension des modèles financiers (langage des «quants») 13
Java : retour d expérience Bénéfices Portabilité Gain de productivité (langage plus haut niveau, écosystème de logiciels libres et d outils) Grande communauté de développement (accès aux développeurs) Risques l'explosion de librairies (richesse de l'environnement peut être un piège) OSS et propriété intellectuelle classpath hell optimisation Contexte Murex : nombreuses années d'investissement dans C++ grande sensibilité vis-à-vis des calculs (précision 10-6...) Conclusion : C++ pour les calculs, de plus en plus de Java pour le reste
Facteurs clés de succès Livraisons prédictibles Software Factory Complexité sous-jacente Organisation et structure de développement Cycle de vie logiciel «juste assez de processus» 15
Complexité Constat : la livraison de nouveaux modules fonctionnels est complexe Aspect Team Correspond au besoin fonctionnel, configurable Performance, resilience, montée en charge PES PAC Product Owner Performance & Arch. Testé et test-able Ergonomie Opérable Modulaire, ouvert (API), respect de l architecture QC UX Operate Quality Control User experience Operate Gouvernance de développement Sécurité PAC Performance & Arch. 16
Organisation adaptée PES: Product Evolution Services (Product Owner) Spécialistes du métier de la finance PAC: Production and Architecture Consulting Responsable de la satisfaction technique des clients Pre-sales technique, implémentation: déploiement, résilience et performance Évolution technique de la plateforme (besoins techniques, portabilité) Qualité technique (stabilité, performance) Equipes de développement métier Traduction des besoins fonctionnels en code Equipes de développement technique Mise en place des couches technique de la plateforme Equipes transverses : suivi technique et suivi projet (gouvernance) S assurer de l avancement des projet de développement tout en assurant l intégrité de la plateforme Test, ergonomie, infrastructure et outillage sont des vrais métiers: Equipes dédiées 17
Cycle de vie Logiciel Platform evol Feature Dev branch Bug/enhcmt PO: Arch/DEV PO: PES PO: PES QC DEV PES PAC KPIs: - #REG @Customer - Defect Escape - Code Coverage - New Feature coverage - REG coverage - Verification (PO) - Unit test (DEV) Performance PO: PAC System (live env./upgradability) PO: QC Dev-fix branch PAC QC Integration (QL1-4) QC DEV Operate Release (QL1-5) Mainstream Verification LEGEND DEV PES QC Test actors Mainstream drop (or dev branch) Compliance (third party, vulnerability,security, ) PO: PAC QL5 Validation Project PO: Product Owner Support MAD Operate QSA PO: Project Manager QC Test Lead PAC Tester @Project? Project
Facteurs clés de succès Agilité Pratiques et environnement de développement 19
Développement Agile Livraison itérative de fonctionnalité Coordination et arbitration entre besoins fonctionnels et techniques Visibilité à travers des cycles bien définis (quotidien, itération, s intégrant dans la feuille de route) Revue d architecture au début du projet Cadre de «l architecture émergeante» Définition de tests à plusieurs niveaux Approche risk-based (documentée) Unitaire, intégration, performance, manuel, UI Définition et suivi de métriques de qualité
CI environment tools - Hudson, sync avec Perforce - Nexus - Sonar (métriques) - Fitnesse - Hébergé par machine virtuelle / Linux CI 2 Environnement d Intégration Continue (CI 2 ) - Toute configuration stocké en git - Une branche par équipe - Configuration de l OS scripté en cours
Q & A