Architecte et avant tout développeur, j'aime le challenge, apprendre de nouvelles choses et transmettre mes connaissances. J'aborde les projets dans leur ensemble, de l'analyse du besoin à l'exploitation en production. Travailler dans une startup m'a appris à être efficace et agile, chez Worldline j'ai appris à prendre en compte les contraintes d'échelle d'un grand groupe. Je travaille en distanciel avec des équipes distribuées depuis 4 ans.

expérience

Tech lead Java & Go / Architecte hands-on
Septembre 2015-Février 2024
Ingenico / Worldline

Je rejoins chez Ingenico une équipe d'architecture dont le but est de se rapprocher des équipes de développement, mon expertise technique permettant d'avoir une approche plus appliquée (hands-on) de l'architecture: réalisation de POC, de librairies, référent technique...

Je participe dans un premier temps à la définition des architectures des nouvelles fonctionnalités de nos applications de paiement (C++/Postgresql). J'introduis un nouveau modèle orienté services pour certaines fonctionnalités afin de les isoler du coeur du traitement du paiement. J'accompagne les équipes à migrer vers Go pour ces services (présentation du language, aide à la formation, développement de libraries & services, référent technique). En parallèle, je forme aussi plusieurs équipes à Git pour préparer la migration depuis SVN. La dernière application pour laquelle je définis l'architecture utilisera Kafka comme source de vérité (Event sourcing) dans le but de réduire les dépendances à une base de données centralisée. Cette application sera écrite en Go et sera composée de multiples services indépendants.

Au bout d'un an, on me propose d'être tech lead dans l'équipe développant le service de tokenisation. C'est un service partagé écrit en Java/Spring exposant une API Rest et stockant ses données dans une base Postgresql. Son rôle est de remplacer les numéros de carte de crédit (donnée sensible) par un token (non sensible). Je participe à l'intégration de ce service dans plusieurs divisions d'Ingenico puis de Worldline. Je collabore également avec des marchands importants de la grande distribution pour organiser leur migration vers ce service en limitant l'impact sur leur activité. Quand je quitte la société, plus de 2 milliards de tokens sont stockés et le service sert plus de 10 millions de requetes quotidiennes, avec un temps de réponse moyen de 15ms.

Après l'acquisition d'Ingenico par Worldline, je me concentre sur l'utilisation des HSM (hardware security modules) au sein de notre unité commerciale. Je définis et implémente un répartiteur de charge afin d'améliorer l'utilisation des resources et la disponibilité de nos HSMs (protocol propriétaire au dessus de TCP). Cette application doit être légère et rapide, un HSM ayant en général un temps de réponse inférieur à 5 millisecondes. Je développe cette application en Go et l'amène en production dans notre cloud privé. A partir de ce moment, chaque appel à un HSM passera par cette application (100 millions d'appels par jour). Je travaille ensuite sur le développement de services à forte valeur ajoutée (chiffrement, mac, gestion de code pin) exposant des API HTTP/Json devant ces HSMs. Je travaille alors en tant qu'architecte/tech lead avec une équipe de 6 personnes en Suède. Comme cette équipe est junior en Go, j'accompagne leur formation et je suis leur référent technique tout en continuant à développer les services/librairies les plus complexes.

Je passe également architecte et tech lead du service de tokenisation des schemes, un service unifiant les API de tokenisation de Visa, Mastercard et Carte Bancaire en une seule API interne. Ce service est écrit en Java/Spring et l'équipe de développement est basée en Inde.

Tous nos logiciels sont développés en suivant la méthode Scrum et déployés dans notre cloud privé. On utilise Gitlab pour orchestrer le déploiement de ces applications (infra as code, Terraform, Puppet). L'équipe est responsable du logiciel jusqu'à son exploitation, ce qui inclue l'intégration continue, le déploiement, la centralisation et exploitation des logs, la production de métriques et tableaux de bord et alertes proactives et réactives.

Les composants sur lesquels j'interviens ont des contraintes de haute disponibilité, de sécurité et de scalabilité. Je suis également en charge des audits de sécurité PCIDSS et PCIPIN de mes applications. J'assure enfin la montée en compétence de différentes équipes de développement (documentation, présentations, formations, revues de code).

technologies et méthodes
  • Java
  • Go
  • C++
  • Spring
  • Postgresql
  • RabbitMQ
  • Kafka
  • HSM
  • Puppet
  • Docker
  • Linux
  • Scrum
  • DevSecOps
développeur sénior Java / architecte
Août 2007- Août 2015
Oodrive

Oodrive est un éditeur logiciel spécialisé dans la sauvegarde et le partage sécurisé de fichiers. Je rejoins l'entreprise en tant que développeur java sénior et chef de projet junior pour la réalisation d'un logiciel de sauvegarde pour Orange. Le logiciel est composé d'une interface Java/Swing fortement personnalisée pour la configuration des sauvegardes et d'un agent Windows (C++) pour la réalisation de la sauvegarde des fichiers. Il envoie les fichiers vers des serveurs de stockage Orange via une API HTTP.

Je passe ensuite responsable de l'équipe en charge du logiciel de sauvegarde pour nos client professionnels (migration C++ -> C#, serveur Java/Spring, client léger GWT), puis de la solution de partage de fichiers grand publique multi plateforme : serveur Java/Spring, clients pour Windows (C#), Android (Java), iOS (Objective C) et Web (Angular).

Mon rôle évolue ensuite vers de l'architecture, je travaille sur des problématiques de scabilité et disponibilité de nos applications, sur des sujets tels que la réplication et répartition de charge de la base de données Postgresql ou l'utilisation de RabbitMQ pour distribuer les tâches de traitement d'images en dehors du serveur principal.

technologies et méthodes
  • Java
  • C++
  • C#
  • Swing
  • GWT
  • Spring
  • Hibernate
  • Postgresql
  • RabbitMQ
  • Linux
  • Scrum
développeur Java
Septembre 2001-Août 2007
SII

Ma mission principale se passe chez l'équipementier MBDA. En tant que développeur junior, j'interviens sur des IHM pour de la préparation de mission pour avions de chasse et missiles au sein d'une équipe de 6 personnes. Le développement se fait en Java/Swing, avec communication avec les serveurs de calcul via CORBA.

Je travaille également sur des missions plus courtes en Java/JSF, ce qui me permet d'avoir une première expérience en développement serveur.

Fort de mon expérience acquise en Java, j'organise et je dispense des formations internes pour d'autres développeurs.

technologies et méthodes
  • Java
  • Swing
  • JSF
  • Spring
  • Hibernate
  • MySQL

compétences

langues
  • Français: langue maternelle
  • Anglais: courant
technologies et méthodes
  • Expert: Java
  • Avancé: Go Spring Postgresql RabbitMQ HSMs
  • Intermédiaire: Git Docker Puppet Kafka
  • Notions: Kubernetes Terraform Cassandra
soft skills
  • Résolution de problèmes
  • Adaptabilité
  • Collaboration
  • Leadership

formation

Ingénieur en Génie Informatique - Spécialisation en Génie Logiciel
Université de Technologie de Compiègne
2001
Baccalauréat S - Spécialité Maths & Sciences et techniques de l'ingénieur
Lycée François Bazin
1996

centres d'intérêt

  • Ebenisterie, musculation, jeux vidéos