Data engineer
EDF
mars 2022 - aujourd'hui
PROJET : Développement Jobs spark & d𠆚PI, autour d’un data warehouse.
Maintenance & Supervision du data Lake associé.
Migration vers un cluster Openshift
Consultant dans une équipe de 25 personnes (PO & Développer), le cœur de métier du data store est de surveiller,
traiter, intégrer les données déversées dans le data Lake. Ces données son treprésentées sous forme de fichiers
dans différents formats.Il y a toute une chaîne d’intégration, permettant la surveillance de ces fichiers, de leur
dépôt dans le data Lake, jusqu’à leur intégration dans Hbase, en passant par des traitements spécifiques via de
sjobs spark (la chaine d’intégration est assez robuste et complexe, permettant plusieurs smanières/accès de
supervisions Nifi, logs, kafka, ..).Afin de maintenir un data store robuste et toujours grossissant, un framework
« fait-maison » a été développé et continue d’être améliorer/optimiser afin dueillir une plus grosse montée
en charge et de nouveaux formats de fichiers
BIG DATA : DEVELOPPEMENT & OPTIMISATION :
◼ Développement & Optimisation de jobs Spark (shuffle, broadcast hash join, redimensionnement des
partitions par worker, etc...)
◼ Mise en place d’un cluster local MiniDFS (HDFS, Zookeeper, HBase, Phoenix) pour tester les évolutions de
schéma
◼ Intégration, parsing et traitement de fichiers NetCDF multidimensionnels (1D à 3D)
◼ Création et modification de tables HBase via scripts Phoenix SQL
◼ Amélioration de la distribution des données HBase via salting (SALT_BUCKETS)
◼ Développement de scripts Python pour l𠆚nalyse des métadonnées HBase (compactions, hotspots,
read/write requests)
◼ Optimisation de requêtes Phoenix SQL avec analyse de plan d𠆞xécution et utilisation de HINTs
`SKIP_SCAN` et proposition de `PARALLEL`
◼ Mise en place de bonnes pratiques SQL sur Phoenix pour éviter les full scans
◼ Création de Workflow Oozie pour orchestrer des traitements
◼ Création de DAGs Airflow pour orchestrer des traitements
◼ Refactoring de code Scala et mise en place de tests unitaires avec Mockito et couverture de code
MIGRATION VERS KUBERNETES (OPENSHIFT) & DEVOPS :
◼ Lead de la migration des applications Spring Boot vers un cluster Kubernetes (OpenShift)
◼ Analyse fine de la consommation réelle des applications (via `htop`, `ps`, `pidstat`) pour une allocation
optimale des ressources dans les pods
◼ Génération et déploiement de certificats auto-signés pour la sécurisation des communications intra-cluster
◼ Refonte complète du workflow d’intégration continue avec gestion centralisée des images (JAR, images
Docker)
◼ Mise en place de POC Redis en mode Sentinel sur OpenShift pour le partage du cache
◼ Déploiement d’un cache partagé via Hazelcast sur le cluster Kubernetes
◼ Création et refonte de pipelines Jenkins, y compris des pipelines "chapeau" pour orchestrer les souspipelines
◼ Réalisation de tests de montée en charge avec Gatling pour valider la performance des applications
RESILIENCE & SCALABILITE KUBERNETES :
◼ Augmentation des quotas de ressources (gabarits) des namespaces pour accompagner la montée en
charge
◼ Mise en place de réplicas, de règles de topologie (anti-affinity, podPriority) pour renforcer la tolérance aux
pannes
◼ Déploiement de HPA (Horizontal Pod Autoscaler) et de PodDisruptionBudget pour garantir la continuité de
service
◼ Implémentation de stratégies de déploiement avancées pour éviter toute interruption lors des mises à jour
DEVELOPPEMENT & MAINTENANCE D𠆚PI :
◼ Refonte de l’injection de dépendances Spring et développement d’une API Gateway Reactive
◼ Renforcement de la sécurité avec l𠆚jout de politiques CSP (Apache + Angular)
◼ Configuration du module Apache `mod-proxy` avec directives `Proxy` et `ProxyPass`
◼ Intégration d𠆚ppels HTTP via Apache Camel
◼ Création d𠆚nnotations personnalisées Spring avec AOP
◼ Développement d𠆚PI web pour l𠆞xécution de requêtes SQL
◼ Résolution d’un problème critique de `OutOfMemory` hors heap via analyse Dynatrace, tests JMeter et
tuning OpenShift
◼ Refactoring des endpoints REST pour conformité aux standards RESTful et ajout de la compression
`Content-Encoding`
MAINTENANCE & SUPERVISION DATA LAKE :
◼ Suivi des incidents de production et maintenance des processors NiFi
◼ Supervision des performances via Grafana, Glowroot et Dynatrace
◼ Analyse de logs Kibana
ENVIRONNEMENT TECHNIQUE :
◼ IntelliJ, Scala, Java, Spark, Python, Yarn, Hbase, Hadoop, Zookeeper, Kafka, Oozie, Ariflow, Apache Nifi,
Phoenix, Kerberos, Spring, Openshift, Skopeo, Maven, Git, REST, Apache, Angular, PostgreSql, mRemote,
Postman, DBeaver, Shell, Unix, Jenkins, Gatling, Jmeter, Dynatrace, Grafana, Kibana
Data engineer
PROJET PERSONNEL SUR SPARK
juin 2021 - aujourd'hui
PROJET : Auto-formation Spark : Développement de Jobs Spark, Veille technologique
Dans le cadre de l’obtention de ma certification Spark Databricks, j𠆚i effectué différents jobs sur la base de
sources data différentes parquet, fichiers de type texte (au format csv, json, ou txt), base de données postresql,
ainsi que différents tests d’optimisations sur le temps de traitement des jobs via la console Spark
DOMAINE D’INTERVENTION :
◼ Développement de Job Spark par les API Reader et Writer.
◼ Structuration de données fortement typées (Dataset) par l𠆞ncoder interne de Spark et par la définition de
StructType.
◼ Opérations SQL multiples : udf, filtres, jointures, agrégations (groupby, window, rollup, cube),
ajout/suppression/modification de colonne/ligne, explode, struct, mapping, api na...
◼ Optimisation du temps de traitement : partitionnement optimisé en fonction de la capacité de chaque
worker, utilisation de type de fichier optimisé (apache parquet), minimisation au maximum de wide
transformations, broadcast hash join sur les Dataframe les plus légers pour minimiser le nombre de shuffler
sur le cluster, mettre en cache les dataframes réutilisés
◼ Supervision des jobs à partir de la console Spark via le DAG temps d𠆞xécution d’un Job, nombre de
partitions/tasks, visualisation du pipelining
Développeur FullStack
SNCF
janvier 2020 - aujourd'hui
PROJET : Développement du portail end-user d’un catalogue de service et d’un portail de gestion des offres de
services.
Dans le but de fournir de nouvelles fonctionnalités relatives au catalogue de service, il a fallu développer des
nouvelles couches applicatives afin de répondre aux besoins des différents gestionnaires du portail de gestion des
offres de service, pour l𠆚limenter en data, tout en respectant la cohérence des données stockées. Le catalogue
de services quant à lui représente les habilitations des utilisateurs pouvant accéder aux services proposés par le
catalogue. La gestion de ces deux applications fonctionnellement distinctes passe par le développement d𠆚PI
consommées/consommatrices coté backend et par la conception d𠆚rchitectures backend et base de données, en
prenant en compte des problématiques de performances en production.
Un plus sur une migration Angular 4 -> 9 et sur la refonte de code plus concis.
DOMAINE D’INTERVENTION :
◼ Développement d𠆚PI consommées/consommatrices architecture Rest
◼ Développement de Job Spark pour traiter des données massives
◼ Implémentation/Maintenance de WebServices SOAP
◼ Développement d’une application cliente en Scala Akka-http : test de monté en charge
◼ Développement d’un Batch Spark Scripts SQL, avec temps d𠆞xécutions minimum
◼ Simulateur de requête ServiceNow
◼ Tests unitaires / Tests intégrations
◼ Réunions avec les architectes (networks issues)
◼ Livraison des composants logiciels développés en environnement de recette
ENVIRONNEMENT TECHNIQUE :
◼ IntelliJ, Eclipse, Java, Scala, Spring, Spark, Angular, PostgreSql, mRemote, GitKraken/SourceTree, Postman,
DBeaver, Shell, Unix, Maven, Apache Tomcat, SOAP, Rest
Développeur Fullstack
SOCIETE GENERALE
janvier 2019 - décembre 2019
PROJET : Développement d’une nouvelle couche d𠆚pplication DSP2 pour l𠆚grégation de comptes conformément
à la nouvelle réglementation européenne
Depuis la nouvelle réglementation européenne, les banques utilisant des FineTech permettant à leur client
d𠆚gréger leurs comptes (ouverts dans d𠆚utres banques), doivent respecter certaines normes en vigueur exposer
des API qui vont être consommés par les autres banques, et consommer les API exposées par les autres banques.
Mon rôle était de développer/maintenir les services d𠆚grégations de comptes. Confronter à des problématiques
très transverses (sécurité, load balancer, dispatcher, proxy, compatibilité Smartphone) mes développements ne
se limitaient pas aux « standard » du projet.
Equipe : 5 personnes
DOMAINE D’INTERVENTION :
◼ Développement du Front End et débogage/tests via chrome inspector
◼ Développement suivant le protocole OAuth2
◼ Développement des services consommateurs des applicatifs d𠆚utres banques
◼ Tests unitaires / Tests intégrations / Tests de non-régression
◼ Réunions avec les architectes sécurité réseaux, applicatif et les équipes smartphone
◼ Rédaction des dossiers d𠆚rchitecture fonctionnel / technique
◼ Livraison des composants logiciels développés en enviro...