Sur le Datahub Covea (Cloudera : Hadoop/Spark/Kafka), mes missions consistent à identifier les problèmes et les axes d'amélioration sur :
• la configuration des composants de la stack
• les jobs d'ingestion, de traitement et de restitution des données
Je participe également à la conception et à l'implantation d'un nouveau bus de traitement des données, basé sur Spring Boot et hébergé sur Kubernetes (OpenShift)
J'ai également défini l'architecture technique de la nouvelle offre de service Kafka :
• Multi data-center
• Hautement disponible
• Basée uniquement sur des composants Open Source : Kafka / Cruise Control / Grafana / Prometheus / Spring Boot
• Sécurisé, en développant un plugin Kafka d'habilitations basé sur les rôles
Enfin, j𠆚i réalisé un POC permettant de gérer les droits dès aux données du cluster Hadoop : les droits dès devant s𠆚ppliquer sur des règles et héritages complexes et non bornés, nous avons mis en place un moteur de règles sur Apache Jena devant être capable dorder/refuser un accès à une données pour un utilisateur donné en se basant sur ses droits propres, ceux de ses groupes et rôles. J𠆚i également étudié la mise à l’échelle possible sur Apache TinkerPop / TitanDb sur Hadoop.
Portfolio :
• https://www.youtube.com/watch?v=XqB3ex34JRg
Architecture technique Big Data:
- Réalisation de divers POC principalement autour de Spark et de Solr
- Conseil et documentation autour des architectures techniques détaillées des cas d’usages de la plateforme
- Support N3
Support ELK :
- Support aux intégrateurs sur l’ingestion des logs
- Support à l𠆞xploitation sur lministration d𠆞lasticSearch
Support Authentification :
- Support aux développeurs sur l’intégration des kits d𠆚uthentification (SSO, OAuth)
Développement full-stack :
- Conception et développement d’outils de monitoring et d𠆚ide au diagnostique technique backend Java/Spring boot, frontend Angular/TypeScript
Réalisation complète de la solution :
- prototypes écrits en Python / OpenCV / TensorFlow
- implantation « industrielle » des algorithmes en GoLang / C++ / OpenCV / TensorFlow
- Applications web et mobiles, backend Java / Spring Boot, frontend Angular / TypeScript
- API REST Java / Spring Boot
- Base de données MongoDB
Portfolio :
- Algorithme d𠆞xtraction des données : https://www.youtube.com/embed/89M2GN7IErM
Solution d'analyse de logs basée sur ElasticSearch, Logstash et Kibana (ELK) :
- Réalisation d'un comparatif entre Solr et ElasticSearch pour l'indexation des données
- Réalisation d'un POC sur Logstash permettant d'analyser une semaine de logs d'une application en production (essai sur 100 millions de lignes de logs)
- Réalisation de tableaux de bords Kibana
- Documentation du socle définition des procédures d'installation et d'exploitation du cluster.
- Industrialisation du déploiement avec Chef! et Perl
- Reversement auprès des équipes de production
- Evangélisation des différentes équipes de la DSI intéressées par le sujet.
- Résultat : cluster ELK "temps réel" accueillant 12 milliards de lignes de logs
Expert J2EE affecté au support de niveau 3 sur le Big Data :
- Maintien en conditions opérationnelles des plateformes du groupe
- Conception et développement de l'outillage socle et de nouveaux composants se basant sur les technologies fournies par la distribution Cloudera (Hadoop, Spark, Solr, etc.)
- Support aux développeurs Big Data (résolution de bugs, optimisation)
- Support aux analyses de performances (tuning Java, Hadoop, Solr, etc.)
- Réalisation d'outils de surveillance et d'analyse du Big Data avec ELK
Expert J2EE affecté au support de niveau 3 sur l'industrialisation et les développements :
- CMS Jahia - Documentation du socle technique Jahia définition des procédures d'installation et de maintenance.
- Support aux développeurs
- Appuie production sur l'audit des performances Java en général.
Organisation :
Equipe de cinq personnes, en mode KANBAN.
Dans un premier temps, la mission a consisté en un audit de l𠆚pplication GWT, afin d𠆚méliorer les performances, notamment sur des guichets automatiques sur réseau GSM, disposant de peu de ressources matérielles.
Prise en charge de l𠆚pplication existante (commencée en 2008) développée sur Spring/Hibernate, avec un frontal GWT. Intervention à tous les niveaux de l𠆚pplication :
• conception technique détaillée des nouvelles fonctionnalités
• développement des nouvelles fonctionnalités
• correction de bugs et améliorations
• rédaction de documentation technique
Depuis juillet 2014, réalisation d’un comparatif GWT/AngularJS afin d’étudier l’opportunité de transférer les services clients GWT vers AngularJs. Réalisation d’un framework pour les commandes spécifiques des automates sur AngularJs (impression de tickets, distribution de billet, etc.) et intégration de certains services client sur AngularJs.
Organisation :
Equipe de dix personnes, en mode agile (SCRUM).
Mise en œuvre d'un ESB (Entreprise Service Bus) réalisant la fédération des webservices SOAP dispersés dans l'entreprise en un seul webservice REST, consolidant les données. L'ESB a été réalisé sur OSGI (Apache ServiceMix).
Application frontale en GWT (Google Web Toolkit) utilisant le service REST unifié pour présenter les données au téléconseiller.
Installation d𠆚pache ServiceMix en production et documentation de l'installation et de l'exploitation.
Organisation :
Equipe de six développeurs, en mode Agile (SCRUM), et piloté par la MOA de Bouygues Telecom.
Organisation :
Rattaché au pôle Java de la DSI, j𠆚i mis en œuvre la migration des applicatifs web services et l’industrialisation des développements dans une équipe de 8 personnes.
Web services :
Migration depuis une architecture entièrement Spring/Hibernate vers un applicatif JBoss AS 7 (JBoss-WS, EJB) et des bases de données Oracle, afin de déployer les applications sur un cluster JBoss Domain. J𠆚i également participé à la mise en place du cluster JBoss Domain avec les équipes d𠆞xploitation.
Industrialisation des développements :
Elaboration d’une solution d’industrialisation pour le pôle Java :
• définition de la cible et des moyens à mettre en œuvre
• Installation des outils :
o Jenkins
o Nexus Sonatype
o XWiki
o Environnements de recettes et de production JBoss
• Authentification par LDAP sur tous les outils du socle
• Documentation des méthodes et formation des développeurs aux pratiques industrialisées
• Documentation des installations en production
• Déploiements automatiques en production, en livraison continue
Industrialisation de la recette :
Mise en place d’un cadre technique sur les tests fonctionnels automatisés :
• Tests fonctionnels Selenium
• Mise en place de bibliothèques d𠆚ide à la rédaction de tests
• Exécution automatiques et intégration continue des tests
• Rapports d𠆞xécution automatisés
Organisation :
Projet de dix-sept personnes, dont trois développeurs offshore (Inde) en méthodologie agile (SCRUM). L’interface dministration nécessitait l’intervention de six personnes, dont trois développeurs.
Mise en place de l𠆚rchitecture technique détaillée de l’interface dministration sous GWT/J2EE. Intégration continue sous Git/Bamboo, tests unitaires Junit et tests fonctionnels Selenium.
Client :
- Développement de l’IHM en GWT, XHTML/CSS.
- Utilisation des frameworks de data-binding pour GWT (Editor, Activities and places, etc.).
- Framework GIN/Guice pour l’injection de dépendances.
Serveur :
- Application J2EE dont la persistance est assurée en XML déployé sur Apache ZooKeeper (fichiers de configuration du moteur de recherche).
- Framework Spring Core pour l’injection de dépendances.
- Serveur Tomcat 7.
- Environnement SolR / Lucene
Organisation :
Projet de quinze personnes travaillant selon la méthodologie agile (SCRUM) réparti en dix développeurs et cinq analystes fonctionnels. Mon rôle dans l'équipe de développement a été de diriger les aspects architecturaux et techniques de la solution en particulier former et transmettre mon expertise sur le framework GWT.
Mise en place d’une intégration continue sur Hudson/Jenkins - rapport de couverture des tests Cobertura et déploiement en qualification automatique.
Mise en place de la plateforme de tests fonctionnels automatisés sur Selenium Grid.
Client :
- Développement de l'IHM en GWT, XHTML/CSS
- Transport de grands objets de configuration entre le client et le serveur (création d'un système de sérialisation sur mesure pour l'application)
- Création d'un compilateur de BPMN/BPEL vers GWT pour embarquer une logique d'enchainement d'écrans compréhensible.
Serveur :
- Application J2EE incluant des liens avec le SI urbanisé du groupe : client webservices Apache CXF pour la consultation d'informations clients, création et stockage de commandes, etc.
- Framework Spring Core pour l'injection de dépendance
- Framework Hibernate sur une base de données MySQL pour la persistance
- Serveur J2EE Jonas 4
Développement et suivi des développements sur le BES (Bilan Energétique Simplifié).
Le BES est une application RIA basée sur GWT permettant aux copropriétaires de suivre leurs consommations énergétiques.
Client :
- Développement de l’IHM en GWT, XHTML/CSS
- Utilisation des bibliothèques externes Google Maps pour la géolocalisation des copropriétés, et synchronisation avec les données météorologiques (Degrés-Jour Unifiés)
- Création de composants graphiques sur mesure en GWT, notamment pour les tableaux ordonnés et les validateurs de formulaires.
- Implémentation des formules de calculs de contrôle des formulaires en GWT (régression linéaire)
- Représentation graphique des données avec la bibliothèque ofc-gwt (Open Flash Chart)
Serveur :
- JSP/Servlet sur Apache Tomcat.
- Java Messaging Service (JMS) avec ActiveMQ.
- WebServices (Déploiement et consommation) avec Apache Axis.
- Contrôle de cohérence des données, basé sur l’implémentation Java pour GWT, compilée pour le serveur (implémentation des contrôles de cohérence commune, exécutée sur le client à l𠆚ide de GWT et sur le serveur)
- Persitence MySQL par Hibernate
- Export de données CSV (bibliothèque SuperCSV)
Gestion de projet :
- Participation à l𠆚nalyse fonctionnelle du logiciel
- Qualification des exigences et des défauts répartition des tâches (équipe de 4 personnes)
- Architecture logicielle : définition des rôles (client/serveur), élaboration du diagramme des classes, application des designs patterns (MVP, Composite, Messagerie).