MCO/MCS d'une application serveur en fin de vie utilisée en juridiction
• Analyses de vulnérabilités et propositions de remédiations
• Étude de scénarios d'évolution, définition de roadmap, contribution à la documentation (Guide d’Intégration)
• Support technique à l'équipe (développement, analystes métier)
Evolution d’une application monolithique de gestion de microgrid vers une architecture microservice scalable dédiée à l’optimisation de l’énergie dans les microgrilles (producteurs-consommateurs d’énergie)
◦ Responsable sécurité du développement (norme IEC 62443-4)
▪ Suivi des activités de développement sécurisé attribuées à l’équipe
▪ Modélisation de menaces (Threat Modeling)
▪ Analyse de vulnérabilités dans les archives binaires, compatibilité des licences, liste des composants logiciels utilisés
▪ Analyse statique de code (Sonar)
▪ Analyse de binaires (JFrog XRay)
▪ Analyse d’exigences de sécurité
▪ Suivi de tests de pénétration et de la résolution des vulnérabilités
▪ Suivi de formation de l’équipe
▪ Réunions avec les référents sécurité et suivi de dossier
◦ Architecture
▪ Recueil de besoins métier (graphe de calculs temps réel avec stratégies dégradées), modélisation de solutions (CQRS, event-source) et réalisation de maquettes (Axon)
▪ Coopération avec d’autres architectes
▪ Documentation, diagrammes
▪ Conduite du dossier pour la certification de sécurité de la solution
◦ Codage, encadrement de développeurs Java, relecture de code, rédaction de documentation
▪ Implémentation de l’API Autogrid
▪ Programmation événementielle et fonctionnelle
▪ Tests et documentation
→ Java 11, Spring Boot 2, maven, InfluxDB, HiveMQ, Autogrid, Postgres, auth0
Maintenance en Condition Opérationnelle du projet Linky Dep Masse
◦ Diagnostic et résolution de problèmes
▪ Erreurs de réplication et d’accès concurrentiel du Cache distribué infinispan
▪ Analyse de dump mémoire du serveur de production
▪ Saturation mémoire
◦ Analyse pour substituer Spring Boot à Weblogic
▪ Prise en charge JMS par le client lourd Oracle, usage d’un broker kafka selon possibilité
◦ Paramétrage de Weblogic via des playbooks Ansible
◦ Détermination de plan de migration d’Arcgis Server 10.1
Dans le cadre de l’évolution d’applications dédiées à la Distribution (calcul de péréquation de marge)
Architecture
◦ Réalisation de maquette d’architecture Microservice avec Spring Cloud
◦ Analyse statique et dynamique
DevOps : Jenkins/Sonar
◦ Installation et usage des serveurs Jenkins/Sonar, documentation, paramétrage
Développement Java
◦ Maintenance évolutive d’une application legacy Java
◦ mise à niveau Hibernate 3 vers 5
◦ adoption de Spring IoC et Spring Boot
→ Java 8, JPA 2.1, Hibernate 5, Junit, Mockito
Dans le cadre de la réalisation d’un serveur monétique en environnement PCI-DSS
Architecture
◦ Analyse des besoins et proposition d’architectures applicatives, adoption d’une architecture N-tiers stateless
◦ Usage d’un générateur d’application, définition de règles de codage compatibles avec les mises à jour
◦ Environnement PCI-DSS : contraintes de sécurité, de traçabilité, de confidentialité, de documentation
◦ Analyse statique et dynamique
◦ Documentation : installation, exploitation
DevOps : Ansible/Vagrant
◦ Reproductibilité et automatisation des tâches de déploiement : création de playbook et de roles Ansible
◦ Instauration d’une démarche de travail en collaboration avec les équipes de qualification et de déploiement : la production est maîtresse sur le paramétrage, les autres environnements peuvent assouplir les contraintes localement
◦ Résolution de problèmes Vagrant, production automatique de l’archive de déploiement par Maven
Tech Lead Java
◦ Equipe de 5 développeurs
◦ Animation de cérémonies agiles, méthode Scrum
◦ Formation Java, design patterns, IoC
◦ Usage de design patterns, documentation dans le code (javadoc & playbook Ansible)
◦ Mise en place de l’Intégration Continue (Jenkins), automatisation de tâches par Maven
◦ Ajout de doclet UML pour générer les diagrammes de classes UML dans la Javadoc grâce à Maven
◦ Git, Gitlab, Merge Requests, Templates de revue de code
Développement Java
◦ Services Rest, tests
◦ Création pool de sockets persistantes : sockets non synchronisées en WeakReference en ThreadLocal
Pour un nouveau projet de R&D, le besoin exprimé était de :
◦ Pouvoir gérer différents flux de travail collaboratif sur une même base de données à la manière de GIT : pouvoir les isoler dans des branches et les combiner.
◦ Conserver la traçabilité des opérations effectuées pour pouvoir générer automatiquement des rapports sur l’histoire des données.
J’ai conçu le modèle de représentation et de calcul au niveau de la base de données (modèle de graphe historisé en base relationnelle) et du serveur Java (architecture CQRS).
Architecture
◦ Analyse des besoins et proposition d’architectures applicatives, adoption d’une architecture 3-tiers stateless CQRS
◦ Conception d’un modèle SQL de graphe historisé, calcul par requêtes récursives
◦ Création d’un générateur des schémas SQL historisé et dénormalisé à partir du schéma métier, automatisation par Maven
Architecture
◦ Analyse de tirs de performance : organisation et suivi des tirs, interprétation des résultats et réalisation de rapports
◦ Audit de code par analyse statique avec Sonar et interprétation : proposition de scénarios d'évolution de l'application
◦ Support projets : diagnostics techniques (Webservices, installation de serveur, diagnostics de problèmes performance, expertise SQL)
◦ Étude de migration MVS / DB2 pour applications Java EE (solutions JPA pour une base existante), étude d'impact de montée de version IMS et du connecteur JCA utilisé dans Websphere
◦ Étude de migration Java 6 vers Java 7 ou 8, évolutions au niveau du langage et des API, Lambda, apport à la programmation parallèle, participation aux réunions d'étude d'opportunité
◦ Diagnostic d’application, définition de roadmap fonctionnelle, architecturale et technologique
◦ Migration d’application desktop en client serveur par l’usage de design patterns
DevOps : Docker
◦ Contribution à la mise en place de conteneurs Dockers pour déploiement SaaS
Développement Java
◦ Diagnostic et contournement de bogue Hibernate et de limites de JPA (génération SQL syntaxiquement erronée pour DB2 et H2, absence de conditions dans les jointures en JPA 2.0) : utilisation d'un intercepteur Hibernate pour corriger la requête SQL produite par Hibernate
◦ Contribution à l'évolution des templates applicatifs (Velocity, Celerio) pour améliorer son expressivité et corriger des anomalies
◦ Implémentation de services REST
Développement Microcontrôleur
◦ Mise au point d’un terminal à base de microcontrôleurs Arduino, programmation temps réel, accès wifi par services REST, persistance du paramétrage fait au runtime, gestion du failover, qualification des conditions opérationnelles et autodiagnostic
Développement SQL
◦ Dédoublonnage optimisé d'enregistrements en fonction d’un scoring sur une sélection de colonnes et de matching approximatif sans produit cartésien sur environ un million d'enregistrements avec JDBCTemplate, SQL Server.
◦ Optimisation de requêtes SQL, préconisations de modélisation de bases de données (scénarios de migration et d'optimisation de performance)
Formation
◦ Réalisation d'un support sur JPA et Maven et dispense de formation en interne
Contribution aux projets suivants destinés à la gestion des routes (tracé, at...