Tech Lead / Lead Dev Java full stack
Gauthier P. est consultant senior avec une expertise en développement full stack Java/Kotlin et Angular/React, spécialisé dans la mise en place et l’amélioration de micro-services...
Résumé du parcours
Consultant senior avec une expertise en développement fullstack Java/Kotlin et Angular/React, spécialisé dans la mise en place et l’amélioration de micro-services, la gestion d’équipes techniques et l’intégration de solutions DevOps.
Expérience dans des projets complexes pour des secteurs variés (publicité urbaine, finance, énergie, communication, transport), avec des compétences en coordination d’équipes, formation des collaborateurs et assurance de la qualité du code.
Maîtrise des méthodologies agiles et des outils CI/CD, garantissant des livrables conformes aux exigences et dans les délais impartis.
Formation
2009 : Diplôme d’Ingénieur de l’ENSICAEN
2006 : Classes préparatoires PCS/PC au lycée Buffon à Paris
Compétences techniques et fonctionnelles
Backend : Java 8-21, Kotlin, J2EE, CDI, Apache Deltaspike, JAX-RS, SOAP, JMS, EJB3
Frontend : Angular 16, React 16, Ionic, JSF/RichFaces, JavaScript, jQuery, Prototype, CSS, XHTML, JSP
Bases de données : MongoDB, Elasticsearch, PostgreSQL, PostGIS, SQL Server, Sybase, MySQL, H2
DevOps : ELK, Docker, Kubernetes, Jenkins, Maven, npm, Git, GitLab, SVN, Archiva, Nexus, VirtualBox, Lenses, Lensa (KB)
Outils de qualité : Sonar, Jira, Icescrum, Confluence, Schemaspy, Redmine
Middleware : JBoss, Tomcat, nginx
Tests : JUnit5, DbUnit, Mockito, AssertJ, Jest, Jasmine, Mocha, TestContainers, Cypress, SoapUI, CDIRunner
Autres : Hibernate, JPA, Liquibase, MapReduce, CAS, Freemarker, Ireport, Jasper, Itext, Logback, Hazelcast, MapStruct, Archunit
Systèmes : Windows 10, WSL, Ubuntu, Debian, Solaris, Red Hat
Méthodologies : Agile (Scrum), TDD, DDD, BDD, Event-Driven
Langues pratiquées
Français
Anglais (TOEIC : non précisé)
Expérience professionnelle
JCDECAUX, Île-de-France (Juin 2022 – Mai 2025)
Rôle : Technical Leader (manager) - équipe Shield
Descriptif : Plusieurs dizaines de milliers de mobiliers urbains JCdecaux remontent en temps réel des données d’état vers les applications de notre périmètre, avec une volumétrie d’environ 600/jour, et un impératif de haute disponibilité pour ne perdre aucune donnée. La gestion de ces données est gérée aux flux Kafka, les données sont Elastic, et nous faisons de l’intrahistorisation d’affaires des vues pendant compte de l’état du parc mobilier, de faciliter l’export de données BI, et de détecter et gérer les pannes survenant sur les mobiliers. Nos IHM combinent de multiples filtres de recherche, et affichent des données mixtes issues de la BDD et d’Elastic. Équipe : jusqu’à 6 développeurs.
Tâches et activités :
Recrutement et management de l’équipe.
Support technique à l’équipe sur les sujets épineux.
Établissement de règles de bonnes pratiques (ex : eslint et Archunit).
Optimisations de performance ciblées en fonction des métriques de production, ainsi que via du profiling (JBC et CPU) et l’analyse de heap dumps.
Saisie des tickets techniques et planification des chantiers d’architecture afin d’anticiper la montée en charge.
Suivi et priorisation de la reprise d’obsolescence et des montées de version.
Gestion des versions, branches, déploiements en production.
En charge de toutes les opérations techniques affectant la production.
Support aux POs sur le cadrage et l’analyse des besoins fonctionnels dans la perspective de la prévision budgétaire.
Saisie de TS et de certaines US de l’équipe, et pré-chiffrage.
Conception et implémentation des algorithmes les plus complexes comme l’algorithme de calcul du cumul des compteurs sur les mobiliers.
Reprise du script python permettant de corriger les erreurs compteurs.
Conception technique de projets inter-équipes comme l’import excel des données, la création de tableaux de bord, la création de tableaux de flux.
Mise à jour de la documentation technique et des diagrammes d’architecture.
Mise en œuvre et suivi pour l’équipe des chantiers techniques du SI comme la bascule Kafka vers la plateforme managée MSK et la bascule du SSO vers Forgerock.
Environnement : Java, Kotlin, Spring, Python, Hibernate, JPA, Maven, npm, Git, Gitlab, IntelliJ, Elastic, PostgreSQL, PostGIS, SQL, Liquibase, Jenkins, Kube, Kafka, Lenses, Lensa (KB), Kibana, Ionic, Android, Angular, MapsStruct, Mockito, Junit 5, TestContainers, Archunit, Jest.
Société Générale, La Défense, Île-de-France (Novembre 2019 – Mai 2022)
Rôle : Développeur Senior
Descriptif : Elyxir, startup interne de la Société Générale, développe un outil permettant aux épargnants de faire des projections à long terme sur l’évolution de leur capital. Les améliorations de l’application sont réalisées en cycle court avec une surveillance constante des métriques d’abandon afin d’optimiser le taux de conversion des personnes qui vont jusqu’au bout de la simulation. Équipe : un product owner technique et une équipe de développeurs chevronnés et autonomes.
Tâches et activités :
Ajout et modernisation d’IHM du simulateur, optimisation des requêtes back, et ajout d’une mécanique de ciblage par segment de clientèle.
Tuning de l’algorithme de simulation des retraites et du calculateur INSEE.
Refonte totale du mécanisme d’import des données client afin de déporter les calculs côté back pour améliorer le diagnostic des problèmes.
Mise en place du monitoring ELK, du monitoring de disponibilité des API, d’une vue dédiée au monitoring des erreurs, et d’un parser pour les logs Nginx.
Enrichissement des logs applicatifs via un tuning avancé de Logback, l’utilisation du contexte MDC, l’ajout de tag d’états les logs de démarrage.
Ajout de colonnes d’audit en BDD, et utilisation de l’AOP pour intercepter et logger proprement les exceptions Hibernate avec le contexte de requête.
Analyse et résolution des deadlocks et autres soucis de concurrence. Côté front, optimisation des appels back-end, éviter les race conditions. Ajout également de contraintes d’unicité en BDD et écriture de scripts de débroublonnage.
Ajout de polices embarquées pour la génération de PDF sans dépendre de celles disponibles sur la machine hôte.
Mise en place du cache partagé Hazelcast et de la mécanique permettant le scaling dynamique avec Kube.
Création d’un mock du SSO SG permettant de simuler une authentification et un import de local.
En charge du cherry-pick et de l’adéquation des versions précédentes de l’application avec la BDD en cas de rollback plusieurs versions en arrière.
Environnement : Java, Spring, Hibernate, JPA, Maven, npm, Git, Gitlab, IntelliJ, Elastic, SQL Server, SQL, Liquibase, Jhipster, Jenkins, XDDeploy, MoBaXTerm, Collecte, Red Hat, Kube, Kibana, Mockito, AssertJ, Junit 5, Jest, Cypress, React.
EDELIA (EDF), Île-de-France (Janvier 2019 – Octobre 2019)
Rôle : Technical Leader/Devops
Descriptif : Edelia, filiale d’EDF, propose des vues synthétiques qui permettent aux particuliers de suivre leur consommation énergétique. I_500 est un middleware composé de multiples micro-services déployés dans Kubernetes, qui se connecte au cloud de chaque fabricant d’objet connecté pour récupérer les données des particuliers et les harmoniser sous un modèle unique. Le déploiement se fait en infra as code avec des scripts Terraform et Ansible. Équipe : non précisée.
Tâches et activités :
Mise en place d’un monitoring amélioré de la collecte de data via utilisation d’une stack type ELK, mais avec un bus Kafka managé, et lecture des scripts Ansible et Terraform à cet effet.
Utilisation de Spring Micrometer pour monitorer les métriques des applications de l’instance pour une de déploiement.
Participation à l’écriture des scripts Ansible et Terraform.
Étude de rapidité des synchronisations des buckets.
Mise au point d’une procédure de rollback.
Collecte des données de santé applicative et mise en place des indicateurs de monitoring de l’avancée de la bascule.
Gestion de la communication inter-.
Nettoyage périodique du registry docker.
Monitoring de l’infrastructure applicative (Openshift, web servers, BDD et Kafka).
Mise en place de la modification du niveau de logging à chaud via actuator.
Participation aux tâches de maintenance et d’évolution des applications, et écriture des documentations associées.
Harmonisation des configurations de sécurité entre micro-services.
Intégration des normes GDPR vis-à-vis du consentement utilisateur et dialogue avec les équipes de BI pour l’anonymisation des données suivant un format standardisé.
Élaboration conjointe d’une visualisation basée sur un web-component utilisant Stencil et réalisation de la partie back et de l’API REST.
Environnement : Java, Spring, Hibernate, JPA, SQL, MySQL, Liquibase, Elastic, Kafka, Angular, JavaScript, TypeScript, Junit, Mockito, Jest, Jenkins, Docker, Openshift, Terraform, AWS, Ansible, IntelliJ, Debian, CentOS.
CARBON, Île-de-France (Décembre 2017 – Décembre 2018)
Rôle : Technical Officer
Descriptif : Dans le cadre de la montée en compétence de nos collaborateurs, il m’a été proposé de passer une année au siège afin de fournir une assistance au recrutement, de créer et dispenser du contenu de formation, faire de la vulgarisation technique auprès du personnel commercial et RH, encadrer la montée en compétences des développeurs en inter-contrat, et d’agir en qualité de référent technique sur Java, Linux, et leur écosystème.
Tâches et activités :
Création et animation de formations portant sur SQL, Hibernate, Git, Maven, le TDD en JS, S4fLogback, REST (modèle de maturité de Richardson & Hatoeas).
Création et animation de conférences portant sur Linux, REST, ELK, JVM, la cryptographie, l’algorithmique, l’analyse des Heap Dumps.
Montée en compétence sur Redis et co-animation d’ateliers découverte.
Mentorat à destination des collaborateurs en formation au siège.
Réalisation d’entretiens techniques dans le cadre du processus de recrutement.
Environnement : Angular, Java, ES6, SQL, HQL, TypeScript, Spring, Hibernate, H2, PostgreSQL, Redis, Junit 5, DbUnit, Mockito, Jasmine, Mocha, IntelliJ, Eclipse STS, Visual Studio Code, Windows 10, WSL, Ubuntu.
MEDIAPOST, Île-de-France (Janvier 2014 – Novembre 2017)
Rôle : Développeur Senior, puis Lead Développeur
Descriptif : Commedia est un logiciel permettant aux commerciaux de Mediapost (filiale de La Poste), de contractualiser des campagnes de publicité visant à distribuer des listes d’imprimés publicitaires dans les boîtes aux lettres des gens, en s’appuyant sur une base de données géographique interne et des filtres de recherche basés sur des localisations. Équipe : non précisée.
Tâches et activités :
Implémentation de nouvelles offres métier : adaptation des IHM, évolution des éditiques PDF de devis et de facturation, mise en place des habilitations correspondantes.
Gestion du load balancing, synchronisation. Mise en place de la contractualisation en masse, de la signature électronique des devis et amélioration du templating des emails avec Freemarker.
Optimisation des performances applicatives via le recueil de métriques et analyse de Heap Dumps.
Reprise massive d’obsolescence, montée de version de Java, Hibernate, Spring, PostgreSQL, et passage de Subversion vers Git, puis optimisation des performances notamment via l’utilisation d’un cache applicatif, le nettoyage des exceptions non bloquantes et la gestion des warnings.
Réalisation d’un module RH permettant une meilleure gestion des absences des commerciaux, et restructuration des habilitations des utilisateurs, en tenant compte des spécificités régionales de chaque filiale.
Adaptation du logiciel pour permettre son intégration en iframe dans une autre application La Poste en respectant leur charte graphique de leur logo.
Étude et mise en œuvre des contraintes d’usurpation d’identité liées à l’authentification transparente, mise en place du cryptage AES souhaité par LP sur le token client et gestion des contraintes CORS.
Restructuration des bases de données de référentiel géographique pour quitter une BDD legacy, en tenant compte des triggers et procédures stockées : ce projet a été mené limité par le support de la structure, dev projet.
Accompagnement de l’équipe vers le DevOps.
Les logs étaient consultés en console SSH : Mise en place d’une stack ELK implémentant limité par the support de Ruby sous Solaris.
Négociation pour obtenir une VM Debian, configuration du serveur, migration de nos outils, installation d’un outil de scrum planner.
Maintenance de la stack ELK, et ajout de jobs Jenkins permettant de lancer des tâches de déploiement sur le serveur.
Mise en place du CI/CD (en intégration), réalisation des releases et des MEP.
Environnement : Java, Spring, CDI, Apache Deltaspike, JSF/RichFaces, JavaScript, jQuery, Hibernate, JAX-RS, SOAP, JMS, EJB3, Junit, DbUnit, Mockito, CDIRunner, SQL, HQL, Shell, PostgreSQL, PostGIS, Sybase, Debian, Solaris, Elastic, Logstash, Kibana, Icescrum, Schemaspy, Jenkins, Archiva, Maven, Git, Confluence, Ireport, Jasper, Itext, Freemarker.
SFR, Île-de-France (Octobre 2011 – Décembre 2011)
Rôle : Développeur Senior
Descriptif : Le SSO CAS et la mire de login associée sont au cœur du site internet d’SFR car ils permettent un login unique pour une multitude de services. Il est donc nécessaire d’assurer une haute disponibilité. Ces services ont besoin de connaître l’identifiant de l’utilisateur mais également la partie des données de son profil client dont ils ont besoin pour fonctionner. Équipe : non précisée.
Tâches et activités :
Développement de nouvelles fonctionnalités.
Optimisation de l’architecture MapReduce de constitution des profils clients s’appuyant sur un cache partagé MemCached dans un contexte de forte volumétrie jusqu’à 1000 authentifications par seconde en pic.
Support des équipes qui essaient de se raccorder au système.
Environnement : Java, J2EE, JSP, Spring, Spring-Security, Eclipse, SVN, Tomcat, Maven, Jenkins, SoapUI, MapReduce, CAS.
PHOENIX-ISI, Île-de-France (Août 2009 – Septembre 2011)
Rôle : Lead Développeur
Descriptif : Travail sur un logiciel permettant de prévoir le taux d’occupation des autoroutes et de faciliter la planification des travaux, à destination de sociétés concessionnaires telles que SANEF. Équipe : non précisée.
Tâches et activités :
Refonte de l’application existante vers de nouvelles technologies en maintenant la compatibilité avec Internet Explorer 6.
Mise en place et maintenance de la stack DevOps de l’équipe, et formation de l’équipe.
Environnement : Java, J2EE, XHTML, JavaScript, jQuery, Prototype, CSS, Spring, Seam, Hibernate, JSP, MySQL, PostgreSQL, PostGIS, Eclipse, JBoss, Tomcat, Ubuntu, Server, VirtualBox, SVN, Maven, Nexus, Intégration continue, Scrum, Redmine.
Autre expérience
CARBON, Île-de-France
Rôle : Formateur
Descriptif : Animation de formations et conférences pour la montée en compétence des collaborateurs.
Tâches et activités :
Analyse des problèmes de performances via les profilers d’IntelliJ et de VisualVM.
Analyse des Heap Dumps avec Eclipse MAT.
Comprendre la philosophie d’Hibernate/JPA et ses rouages internes.
Outils de build, Git, Maven, npm et condition de reproduction des builds.
Elastic, Logstash, optimisation des logs et de leur analyse.
REST, Modèle de maturité de Richardson et bonnes pratiques.
Introduction à la cryptographie moderne, base des échanges HTTPS.