Leader technique
Amadeus, Nice
mai 2021 - aujourd'hui
Projet DIH Datalake
Dans le cadre de cet ambitieux projet pilote au sein du département Big Data Solution d𠆚madeus, j𠆚i eu l’opportunité de réaliser les
tâches suivantes:
- parachever une architecture de type « medallion » (tables bronze/silver/gold) fournissant des datamarts à haute valeur ajoutée aux
compagnies aériennes
- implémenter personnellement en Scala de 90% des composants du pipeline pour la plupart sans aucun bug plusieurs mois après la
mise en production
- concevoir et implémenter des algorithmes complexes pour les champs calculés et la corrélation en mode incrémental
- optimiser et réduire drastiquement les coûts d’usage de Databricks et Snowflake en ayant la possibilité de faire encore mieux
- partager mes connaissances, mes techniques d’optimisation et les bonnes pratiques à l’intérieur et à l𠆞xtérieur de l’équipe
Environnement technique: Scala, Java, Python, Spark, Azure, Databricks, Snowflake, SQL, Git, sbt, shell script, Jenkins, Bitbucket,
EventHub, modèles de données Star Schema et Data Vault 2.0
Expert Spark/Scala
Projet ARI, BAC, Hospitality Data Core
Mes compétences appréciées dans le domaine de Spark, Scala et des bases de données ont été mises à contribution sur divers ETL
afin de trouver le meilleur compromis performance / coût / résilience en fonction des contraintes techniques et des exigences client de
chaque projet.
Sur les applications legacy, j𠆚i été capable d𠆚ppréhender du code complexe afin de l𠆚méliorer ou de le faire évoluer étape par étape,
avec pour objectif constant l𠆞xploitation en production.
Environnement technique: Scala, Kafka, Java, Spark, Databricks, Azure SQL server, Git, sbt, shell script, Jenkins, Bitbucket, Terraform
Expert Spark/Scala
Groupe BPC, Paris PHG project
août 2020 - mai 2021
Au sein du projet PHG, nous développons des applications ETL et des outils pour ingérer, transformer et exposer les données dans un
entrepôt de données dédié à un usage BI (Business Intelligence)
.
Mes responsibilités étaient de:
- migrer les applications de Hortonworks HDP 2.6 vers 3.1 requérant au passage un important refactoring Maven
- développer un outil de migration de données en Scala + bash + Hive
- analyser et auditer un ERP de Moody basé sur Spark
- implémenter diverses améliorations et évolutions des applications et librairies par la mise en oeuvre des bonnes pratiques, la
déduplication et la simplification de code
- développer pour le projet LCFT (lutte contre le financement du terrorisme) un service RESTful et un modèle de donnée HBase
permettant de requêter parmi 3 million d𠆞nregistrement sous 10 ms (6 mois de données et 30 millions de clients)
Environnement technique: Spark, Hive, Hbase, HDFS, Scala, Java, Spring, git, maven, shell script, Jenkins
Expert Scala
SRR (Altice), île de la Réunion
mai 2019 - novembre 2019
Projet NOE – équipe backend
Dans le contexte de la refonte complète de l'ERP et du CRM chez SRR, la compagnie télécom leader à la Réunion appartenant au
groupe Altice, avec l'objectif très ambitieux remplacer complètement la solution Oracle et SAP historique considérée comme trop
coûteuse et plus assez évolutive, j'ai été appelé à rejoindre l'équipe backend avec 2 rôles principaux:
- fournir une formation Scala à l'équipe, partager les bonnes pratiques de conception et de codage, prévenir les erreurs courantes
- implémenter de zéro un composant en Scala baptisé Order Manager
L'Order Manager est un composant gérant les commandes, c-à-d les processus métier, comme Siebel le fait du point de vue de l'équipe
exploitation. Elément central de l'architecture micro-services, il pourvoit à tous les besoins des opérateurs pour surveiller et agir sur les
processus métier dans le contexte de la production:
- supervision
- gestion des erreurs
- reprise automatique sur erreur
- planification de tâches
- rejeu
- workflows
- mise en pause des traitements
- rollback (saga pattern)
- etc…
La particularité de ce composant est qu'il se concentre à la fois sur les besoins des utilisateurs mais aussi sur les exigences des
développeurs en fournissant les meilleurs standards de conception et de code pour implémenter facilement de nouvelles tâches, de
nouveaux workflows ou tout autre extension permise par l'open source.
Environnement technique: programmation réactive, programmation fonctionnelle, architecture event-driven, micro-services, systèmes
distribués, Saga design pattern, transactions distribuées, concurrence, tolérance aux pannes, haute disponibilité, Scala, Akka, Kafka,
REST, Swagger, Slick, PostGres, Oracle, Docker, protobuf, JSON, ELK (Kibana)
Expert Spark
MycomOSI, Paris
août 2017 - février 2019
La suite EAA de MycomOSI fournit un suivi de la qualité de service numérique et permet aux opérateurs télécoms d'optimiser leurs
réseaux et leur QoS dans les réseaux hybrides (virtuels et physiques) et d'accroitre l'agilité et l'efficacité au travers d'opérations
automatiques.
La conception de la plateforme MycomOSI offre des avantages tels que l'indépendance d'infrastructure, le déploiement agile, le
dimensionnement élastique et la haute disponibilité, tout en fournissant les services communs tel que l'inventaire réseau unifié et la
topologie dynamique, l'intégration avec les frameworks Big Data et les APIs ouvertes. La plateforme utilise une architecture microservices, containerisée et l𠆚pproche DevOps pour permettre le déploiement agile sur clouds privés et publics.
En tant qu'expert Big Data, j'ai été impliqué dans le projet pour concevoir, développer et déployer une nouvelle application de streaming
basée sur Spark Structured Streaming. On m'a donné de très fortes contraintes pour traiter les événements à fréquence élevée en
temps réel avec des ressources limitées, tout en assurant la mise à l’échelle, la haute disponibilité et la robustesse demandée par des
clients toujours plus exigeants.
Environnement technique:
Scala, Spark( structured streaming), systèmes distribués, sémantique « exactly once », supervision, théorie des graphes, temps réel,
mise à l’échelle, haute disponibilité, continuité des données et des services, micro-services, IaaS, Kafka, ElasticSearch, Redis,
Openshift, Docker, REST, AWS, ELK (Kibana)
Ingénieur Big Data
Air France, Sophia Antipolis
août 2015 - février 2017
Projet OCP - Backend
Le but du projet OCP, pierre angulaire du CRM, est de fournir en temps réel une vue à 360° des activités du client à tous les points de
contact de l𠆞ntreprise et d𠆚méliorer l𠆞xpérience client. Dans ce but, la plateforme OCP collecte, raffine, combine et enrichit les
données client de diverses applications métier existantes en temps réel ou en mode batch.
Le second objectif de la plateforme est dueillir un moteur de recommandation de voyage.
Humainement OCP c𠆞st :
Une équipe Agile de 8-10 personnes dont 4 ingénieurs Big Data
Techniquement OCP c𠆞st :
une douzaine d𠆚pplications Spark
2 bases NoSQL
1 metastore Hive
500 millions de messages
30 millions de clients
30 GB de messages/jour
15 sources de données (en croissance constante)
un framework Java: ~400 classes, ~21000 lignes
un cluster de production Hadoop Yarn de 10 executors et 50 coeurs
un double flux temps réel alimentant une base MongoDB operationelle et une base analytique HBase
des streams Kafka partitionnés assurant la délivrance des messages
des batches programmés quotidiens
un moteur de recommandation
Tâches principales:
finalisation du POC (4 mois)
définition de l𠆚rchitecture fonctionnelle gérant les cas opérationnels (init, backup, retry, replay)
conception des fondations Java basées sur Spark Streaming
implémentation de traitements de messages/évènements temps réel provenant de sources de données diverses
gestion des sources et des releases sous Git
Définition du modèle de données, des indexes et de la clé de sharding de MongoDB
Partage des bonnes pratiques de développement (pull requests, design patterns, environments settings, Maven build process,
JUnit,..)
migration de HDP 2.3 vers HDP 2.4
Les points forts de l𠆞xpérience:
"Carte blanche" sur les choix techniques et architecturaux (Kappa architecture)
Equipe Agile (Kanban)
Apprentissage quotidien
Rôle à la fois fonctionnel et très technique
Capacité à traiter les contraintes élevées de la production :
- zéro perte de données
- gestion des données inconsistantes, manquantes, corrompues
- contraintes de synchronisation d’évènements
- traitement hautes performances
- requêtage des bases efficace (indexes)
- analyse et résolution des problèmes mémoire
- monitoring au travers de tableaux de bord Kibana
- minimisation du temps d’interruption de service lors des mises à jour
Environnement technique : Spark, Hadoop Yarn, Kafka, MongoDB, HBase, librairie Guava, ELK (Kibana)
Outils: Git, Eclipse, Bamboo, Kibana, Sonar, Mongo Chef
Langages: Java 7, format JSON, scripts shell Unix
Ingénieur de développement Hadoop
MEDIAMETRIE, Sophia Antipolis
avril 2013 - janvier 2015
Projet Nielsen
Capter le trafic Internet et étudier la navigation web d'un panel de foyers français volontaires et fournir différents indicateurs de référence
sur la fréquentation des sites web en France.
Réalisations :
participation à l'architecture en modules et à l'ordonnancement de la chaine de traitement
implémentation en Java des algorithmes map/reduce sur les données:
extraction/chargement/transformation/filtrage/agrégati...