Participer et conseiller à la conception de l'architecture du système d'informations dans son ensemble.
Contribuer à l'amélioration du framework transversal utilisé par toutes les équipes de développements.
Supporter les équipes de développements des applications métiers.
Proposer et rédiger des bonnes pratiques.
Détails de l'expérience
Migrer des applications Weblogic vers JBoss en prenant en charge le cycle : adaptation du code existant, tests unitaires, intégration, tests fonctionnels.
Réaliser une étude afin d'identifier les problèmes de deadlocks au sein d'un serveur d'applications lors de l'utilisation d'instances Oracle RDB. Analyser les mécanismes de locking internes d'Oracle RDB afin de proposer différentes solutions selon les cas d'utilisation. Développer dans JBoss un mécanisme permettant de créer des pool de datasource en mode Read Only.
Mots-clés : Java, JDBC, JBoss AOP, Oracle RDB
Imaginer et développer une solution permettant de vérifier la cohérence d'un cache distribué sous JBoss Cache déployé sous JBoss et Weblogic. Concevoir l'algorithme à mettre en oeuvre pour valider la cohérence des membres du cluster. Développer un framework basé sur JMX. Intégrer le framework à JBoss Cache, aux applications existantes et à la solution de supervision propriétaire pour remonter des alertes à l'équipe d'exploitation.
Analyser les problèmes d'échanges de caractères entre les applications C++ et Java au travers de Corba au sein du système d'informations. Fourniture d'une configuration cible permettant à la fois de maîtriser les échanges de caractères et permettre l'internationalisation du système d'informations. Valider la configuration en couvrant l'ensemble des scenarii. Améliorer JacOrb (implémentation Corba sous JBoss) afin de fournir un comportement identique à Weblogic.
Améliorer le mécanisme interne du pool de connexions JBoss pour le rendre conforme à celui de Weblogic : les connexions sont testés uniquement si elles n'ont pas été utilisées depuis une période prédéfinie.
Mots-clés : Java, JBoss, JBoss AOP
Assister dans l'utilisation de frameworks de mocking pour améliorer la couverture des tests unitaires.
Mots-clés : JUnit, EasyMock, PowerMock
Réaliser un étude sur les performances, les limites et la fiabilité de MongoDB.
Mots-clés : NoSQL, MongoDB
Réaliser un framework de détection des modifications sur la base 2 états en mémoire.
Mots-clés : Java
Participer au développement d'une application iPad (back-end) de gestion de portefeuilles.
Dans le cadre de son offre commerciale B2C, j'ai contribué à implémenter la partie MVC (Model-View-Controller) des modules d'une application Internet riche (AJAX).
Dans le but de développer son offre commerciale B2B, j'ai mis en oeuvre une solution pour diffuser les données hippiques sur Internet en temps réel : un Web Service REST pour consommer les données + Jabber/XMPP pour diffuser les événements métiers.
Suite à la décision de décommissionner la facturation d'une application monolithique, la nouvelle application de facturation (Singl.eView) devait être intégrée au SI existant afin d'être correctement provisionnée selon les opérations métiers effectuées : ouvertures de lignes, opérations customer care, actions de recouvrement, ....
Mots-clés: Java, ESB, Singl.eView, IBM WebSphere DataPower, Web Services, Metro, Tomcat, SoapUI, Subversion, NetBeans, Maven
Détails de l'expérience
Implémenter la médiation pour provisionner Singl.eView (Intec Billing).
Migrer les environnements de dev, staging et production de Glassfish vers Tomcat.
Automatiser le processus de release avec Maven.
Implémenter des tests unitaires.
Initier l'utilisation de SoapUI pour automatiser les tests fonctionnels.
Préconiser une architecture à base de MoM pour provisionner les différents systèmes (applications & équipements).
Rédiger la documentation technique des différents environnements et du development guide.
Dans le cadre de la publication d'informations au travers de la plateforme, il m'a été demandé de concevoir et mettre en oeuvre une solution modulaire pour planifier, parcourir le Web, extraire des informations. et les publier. L'aspect modulaire devant permettre une mise à jour rapide des crawlers en production.
Mots-clés: Apache Camel, Spring DM, Quartz, OSGi, Apache Karaf, Maven
Afin de gérer les données hippiques et leurs cohérences, une application dédiée à été mise en oeuvre. Cette application se devait d'être accessible par une interface graphique utile aux opérateurs humains et par une API pour déclencher les opérations métiers via des processus externes.
Dans le cadre du développement de son activité, il m'a été demandé de développer leur site web et d'intégrer les demandes de support avant-vente et de support au CRM.
Dans le cadre de la création d'une plateforme dédiée aux courses hippiques dans l'optique de la libéralisation des marchés français, il m'a été demandé de concevoir la big picture de l'architecture cible pour répondre aux besoins définis.
J’ai rejoint à l’origine ISSOS pour le poste de Directeur Technique. La société travaillant dans le secteur Banque / Assurance, et traversant une période de turbulences, j'ai préféré écourter ma période d'essai.
Dans le cadre de l'audit que j'avais commencé à réaliser et afin que mon passage soit bénéfique pour l'ensemble des parties, j'ai rédigé et présenté à la direction des recommandations sur les pistes à suivre pour améliorer la qualité des produits développés en interne. Principal grief remonté par les responsables des pôles métiers.
Une chaine d'intégration a été mise en place et des metrics ont été définis sur des moteurs de simulations afin de valider le concept.
Recommander l'utilisation d'outils, de méthodes de développements (tests unitaires) et la création d'une équipe de QA dédiée pour gérer la validation des releases.
Dans le cadre du déploiement de l’application Transact sur le marché Turque, il m'a été demandé de faire communiquer l'application Transact (capable uniquement d'envoyer des requêtes XML over HTTP) au web service du gouvernement Turque respectant les spécifications OASIS.
Livraison d’une solution générique permettant de gérer les spécifications OASIS de façon transparente quelque soit le web service à consommer.
Proposer l’architecture permettant de consommer le web service sans modifier le base software de Transact (ne respectant pas les spécifications OASIS) en intégrant dans la solution le projet Synapse de la fondation Apache.
Implémenter de nouvelles features au projet Synapse.
Configurer Synapse pour mettre en œuvre la sécurité demandée par le web service Turque.
Déployer et tester la configuration dans l’environnement de production.
Rédiger l’ensemble de la documentation : Installation, Configuration & Development Guide.
Conception et implémentation d’une solution de Reporting suivant les recommandations d’architectures.
Livraison de la première version à la date attendue. Grâce au Framework Java EE (JAAS) la notion de sécurité a pu être intégrée dans cette version alors qu’elle était à l’origine prévue dans une version ultérieure. De plus, cette solution servira de modèle pour les autres centres de développement lors de la migration des applications existantes vers la nouvelle architecture.
Rédiger les spécifications techniques à partir des « business requirements ».
Architecturer la solution à l’aide des spécifications Java EE.
EJB – Point d’entrée du service.
JPA (Hibernate) – Persistance des données.
JMS – Mise en file d’attente des rapports à générer et notification des rapports générés.
JTA – Coordination des transactions des différentes sources de données impliquées.
JAAS – Configuration d’un mécanisme d’authentification et gestion des autorisations à l’aide d’un serveur LDAP / Active Directory.
JMX – Implémentation de composants permettant de configurer les services déployés.
NetBeans Platform – Utilisation de la plateforme pour l’implémentation du client à base de plugins (Report Navigator, Report Viewer, …) pouvant être réutilisés dans d’autres « Studio ».
Coordonner et participer au développement de la partie service de la solution dont l’équipe de Monaco avait la charge.
Participer à des réunions hebdomadaires impliquant l’équipe de Monaco et celle de Nottingham.
Rédiger l’ensemble de la documentation : Installation, Administration & Development Guide.
Suite au choix stratégique d’utiliser Java comme langage de programmation au sein de tous les centres de développements (Monaco, Nottingham, Washington, etc.), l’objectif était de proposer des recommandations d’architectures pour le développement des nouvelles versions des solutions. Chaque solution étant composée d’un environnement de développement « Studio » et d’une partie service « Engine » servant à exécuter les systèmes développés au travers du « Studio ». Chaque centre de développement a en charge une ou plusieurs solutions. Cette nouvelle architecture devait permettre de réutiliser plus facilement les composants communs entre les différents centres que ce soit au niveau des « Studio » ou des « Engine » et de pouvoir créer à la demande de nouvelles solutions en assemblant les composants déjà existants.
Présentation des recommandations à l’« architecture board » chargé de statuer sur l’architecture à retenir. Les recommandations ont été accueillies avec enthousiasme puisqu’une solution de Reporting impliquant 2 centres de développements (Monaco et Nottingham) a été initiée pour valider l’architecture.
Identifier les applications existantes, les technologies utilisées et le niveau d’interopérabilité demandé pour migrer vers la nouvelle architecture étape par étape sur un horizon de 2 ans.
Proposer des solutions pour améliorer l’implémentation et les performances de composants qui seront réutilisés dans la nouvelle architecture.
Expérimenter et évaluer des Frameworks pour implémenter des « Studio » à partir de composants : Eclipse Platform et NetBeans Platform.
Expérimenter et évaluer des Frameworks SOA pour implémenter des « Engine » : Java EE, SCA, OSGi.
Rédiger des recommandations pour la partie « Studio » et la partie « Engine ».
Implémenter des « proof of concepts » connexes aux recommandations.
Dans le cadre d’un appel d’offres lancé par Naseba et à partir d’un cahier des charges une société de Web Design basée sur Nice avait besoin d’une architecture Java EE et d’un « development plan » pour la réalisation d’une application de gestion de contenus de sites événementiels.
Spécifications complètes tirées des cas d’utilisation identifiés, sélection des technologies existantes à réutiliser et évaluation du temps de développement pour produire la solution demandée.
Mettre en place une architecture permettant de capitaliser le développement déjà effectué en réduisant les coûts et l’effort à fournir pour créer de nouveaux services à partir des services existants et d’exposer les services au travers de nos différents canaux de diffusion (serveurs vocaux, applications web, …).
Migration complète d’une application en utilisant JBoss (implémentation open source du Framework Java EE), d’un client riche et d’un client léger Java consommant la couche service développée avec les EJB 3.0. L'architecture basée sur Java EE a été sélectionnée pour ses nombreuses qualités : productivité, performances, couche service indépendante du protocole (RMI, WebServices), ses APIs, et sa communauté Open Source.
Migrer une application type client / serveur servant de « proof of concept ». L’architecture même de l’application a été améliorée en intégrant certaines API de Java EE dont JMS afin de distribuer la charge de calculs sur plusieurs serveurs.
Analyser l’impact en termes de performances, de risques et de coûts.
Créer des applications Internet e-Commerce afin de présenter à la vente les produits et les services de la société.
Applications Web permettant à notre clientèle de commander directement en ligne lors de nos opérations de marketing direct. Ces applications nous permettaient également de récupérer des adresses ciblées pour nos opérations commerciales.
Elaborer un serveur vocal interactif permettant de diffuser du service sur abonnement ou par accès surtaxé.
Serveur vocal modulaire permettant d’intégrer de nouveaux services sans interruption de services et permettant de fournir des services sous forme d’abonnement à notre clientèle non informatisée.
Mots-clés : Dialogic, ActiveX, WinDev, C, Service NT, SQL Server, Visual Studio
Détails de l'expérience
Etudier et sélectionner les outils pour réaliser l’architecture matérielle souhaitée.
Développer un serveur vocal interactif avec un système de « plugin » afin d’intégrer facilement à la plateforme de nouveaux services.
Réaliser un client riche pour administrer les services et les accès des utilisateurs.
Fournir la probabilité de gagner d’un participant (cheval, jockey, …) à partir de ses performances passées, des participants et des conditions de la course.
Librairie en C intégrant un modèle de « scoring » permettant d’être utilisée par de nouveaux services (abonnement par email, serveur vocal, …), et par conséquent de générer de nouvelles sources de revenus.
Concevoir une base de données de courses hippiques et développer les outils nécessaires pour extraire à partir de plusieurs sources d’informations les données des courses (~ 6000 / an) et les fusionner.
Système permettant de mettre à jour environ 20 courses par jour, soit 200 participants, 2000 performances, 1800 cotations sans aucune intervention manuelle. La flexibilité du système permet d’être encore en production actuellement.
Intégré au sein d’une équipe de développement internationale, j’ai eu pour mission de développer et de déployer une application Intranet permettant de renseigner et suivre le temps passé par les consultants sur les différents projets.
Le rôle « Consultant » avait la possibilité d’effectuer des saisies via l’application web et depuis l’application sous Palm OS (fonctionnement en mode offline avec synchronisation).
Le rôle de « Project Manager » avait en plus accès à une feuille Excel permettant de générer des rapports prédéfinis sur une période donnée.
Définir des spécifications techniques & fonctionnelles.
Concevoir et implémenter : l’application web dynamique, l’application Palm OS (utilisable en mode déconnecté), le conduit pour Palm OS responsable de la synchronisation des données, la feuille Excel intégrant des modèles de rapports se mettant à jour à partir de l’application web au travers du protocole HTTP.
Rédiger la documentation de l’application : Installation Guide, Maintenance Guide, Developer Guide & User Guide.