Alain - Développeur JAVA
Ref : 090705T004-
73000 CHAMBÉRY FRANCE
-
Développeur, Architecte (57 ans)
-
Freelance
Expérience professionnelle
2022-12 – 2023-04 consultant – Architecte logiciel Ministère de la Justice
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)
2021-01 – 2022-11 consultant – Architecte logiciel Schneider (énergie)
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
Environnement : Azure DevOps, Kubernetes, Terraform, Docker
Méthodologie Agile
06/2020 - 12/2020 consultant – Expert Java Enedis (énergie)
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
→ Java 8, MyBatis, Spring Batch, Ansible, Weblogic 12.1.2, Oracle 12, Java Mission Control
03/2019 – 05/2020 consultant – Tech Lead Java Groupement des Mousquetaires (retail)
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, Powermock, Intellij, Spring Boot 2.0, Spring Data Jpa, Jhipster
→ Git, GitLab, Mantis, Jenkins, Sonar, Git, Bitbucket, UML docklet, javadoc, Maven
05/2018 – 02/2019 consultant – Architecte & Tech Lead Actoll (monétique)
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
→ Java 8, JPA 2.0, Hibernate 5, Junit, Mockito, Intellij, Spring Boot 1.5, Spring Data Jpa, Jhipster, Angular 6
→ CB2A, PCI-DSS
→ Ansible, Vagrant, HashiCorp Vault, Jasypt, Git, GitLab, Mantis, Jenkins, Maven
10/2017 - 05/2018 consultant – Architecte & Tech Lead EDF (énergie)
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
Tech Lead Java
◦ Equipe de 2 développeurs, formation Java, design patterns, IoC, CQRS
◦ Configuration Maven
Développement Java
◦ Services Rest, tests, générateur de code SQL
→ Java 8, JPA 2.0, Hibernate 5, Junit, Mockito, Intellij, Spring Boot 1.4, Postgres 9.5 , MyBatis 3, Axon, Angular 4
03/2013 - 09/2017 consultant CERN, Banque de France, CNP, EYC...(banque, assurance, retail)
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
→ Java 6 et 7, Java 8, JPA 2.0, Hibernate, Junit, Mockito, Eclipse, Celerio, Spring Boot 1.4
→ Postgres, DB2 10, H2 1.2, Oracle 11g, SQL Server, Hibernate 4.2, JDBCTemplate
→ Tomcat, Jboss EAP 6, Websphere Application Server 7, Weblogic 10 et 12
→ Jira, Sonar, Jenkins, Mantis, Ant, Maven, Jmon, HP Diagnostics
→ SVN, Git, Sourcetree, Jenkins, Docker, Ansible
→ Arduino Yun et Mega, C++, électronique logique, raspberry pi, python, MongoDB, protocole Modbus, MQTT
06/2008 – 02/2013 Développeur géomatique Geomap (Information Géographique)
Contribution aux projets suivants destinés à la gestion des routes (tracé, attributs, mobilier routier) :
serveur Geomap, générateur d'applications métier (C++, Oracle, IIS)
projet GRIU / GPR, commandé par le Ministère de l’Équipement, sépare deux tâches métier :
◦ la gestion du graphe routier d'une part (C++ natif / .NET, serveur Geomap, ArcGis Server, ArcGis Desktop),
◦ l'association d'informations à ce graphe d'autre part (Java EE, ArcSDE, API ArcGis, Dojo, Extjs).
Architecture
◦ définition d'un modèle d'historisation des données en base, possibilité d’annulation d’opération, de travail collaboratif sur le long terme et de validation transactionnelle de macro-opération
◦ définition d'un langage de template de génération de requêtes SQL assurant une indépendance avec la base de données utilisée (Oracle, SQL-Server, Postgres, MySQL...), la logique de génération est contenue dans le template, l'instanciation du template est gouvernée par le jeu de données fourni
Développement SQL
Analyse et reporting : contrôle de l'intégrité des données routières en base de données (150 tests)
◦ requêtes Oracles analytiques et récursives, usage de templates SQL permettant d'adapter automatiquement la même logique de requêtage aux schémas des différentes bases (import/export, production) selon différents grains de rapport (existence, dénombrement et énumération des éléments)
Tuning Oracle : analyse de plans d'exécution de requêtes par Oracle, optimisation des requêtes et des index, gestion des statistiques et du paramétrage Oracle
Développement java
◦ Segmentation de données spatiales (Java), JPA /Hibernate, gestion des transactions avec Spring, services REST
Développement javascript
◦ IHM en javascript avec Dojo / ExtJS, Ajax et en C++ avec les MFC
Méthode Agile (Scrum)
→ serveur : Geomap, ArcSDE, Arcgis Server, Oracle spatial 10g2
→ Java 6, JPA, Spring, Maven, Hibernate spatial, JaxB, Junit, GeoTools, Continuum, NetBeans
→ Javascript, ExtJs, DOJO
→ C++ natif, MFC, Visual Studio
→ UML, Enterprise Architect
→ VSS, SVN, Mantis, Trac
01/2006 – 05/2008 Développeur géomatique Mercuriale-Data (Géomarketing)
Mercuriale-Data réalise des études et produit des données de géomarketing.
Développement
◦ implémentation de progiciel géomarketing d'analyse cartographique de données métier et de reporting pour Nielsen
▪ Les données sont organisées à la manière d'un cube, selon divers niveaux de consolidation
▪ génération dynamique des requêtes SQL par sélection interactive des critères et des conditions (un panneau d'IHM par table), agrégation statistique des données, sans recherche de cas exceptionnels (jointures internes uniquement)
▪ géolocalisation et routage avec le framework Magellan Chronomap
▪ production de cartes selon divers agrégats spatiaux et thématiques avec MapXTreme
◦ intervention chez le client
Encadrement
◦ Responsable informatique : achats, administration réseau, support aux statisticiens
◦ Support projets : 2 personnes, dans des projets de développement ou d'administration réseau
→ VB.NET, SQL Server
→ MapXTreme, MapInfo, MapBasic, ChronoMap DK
→ Windows 2003 Server, 15 clients Windows
04/2005 – 10/2005 Développeur CALM (droit)
Gestion de données notariales sur serveur concentrateur
→ Java, Pascal, VBA (MSOffice), Linux
2001 – 2004 Enseignant et Formateur – ATER et consultant CNAM, CFBS, ENSIB (formation)
Enseignement en école d'ingénieur et vacations :
◦ programmation Objet et UML, Web, SGBDR, génie logiciel, UNIX, algorithmique
◦ réalisation des supports de cours
1995 – 2000 Doctorant I3S (recherche)
Développement de modèles de calcul scientifique :
◦ Simulation de comportement animal, modélisation par Système Multi-Agent réactif, optimisation par Algorithme Génétique,
◦ Calcul d'accessibilité géographique, intégration à un Système d'Information Géographique.
Conduite d’expérimentations, publications et présentations en anglais.
→ C++, Evolving Objects, Grass, Linux / X11
FORMATION
2023 Building Event-Driven Applications With Amazon EventBridge Amazon
2023 Designing Event-Driven Architecture Amazon
2023 Architecting Serverless Applications Amazon
2023 DDD, CQRS, Event-Sourcing & Axon Framework : 4 certifications AxonIQ
2020 ArangoDB Udemy
2018 Dévelopement & Sécurité Informatique Actoll
2016 Symfony
2015 Maven & OSGI Zenika
2014 Programming Cloud Services for Android 10 semaines – Université Vanderbilt & coursera.org
Spring Data, Spring MVC, Spring Boot, Spring Security, REST Services
2014 Pattern-Oriented Software Architectures for Android 10 semaines – Université Vanderbilt & coursera.org
Programmation parallèle Java dans Android, Frameworks Hamer et Async, sécurité
2014 Géomatique 14 semaines – EPFL & coursera.org
Géodésie et topométrie, qualité de localisation par GPS, modélisation du terrain
2013 Bigdata & Web Intelligence 12 semaines – Indian Institute of Technology Delhi & coursera.org
Bases NoSQL, Map-Reduce, indexation des documents Web, Page Rank, appariement de documents similaires
(Locality Sensitive Haching), Réseaux Bayésiens, Analyse des sentiments, techniques et outils de Data Mining
2013 Pattern-Oriented Software Architectures 10 semaines – Université Vanderbilt & coursera.org
POSA & Gang Of 4 patterns, ACE Framework, Android architecture
2013 Software As A Service 5 semaines – BerkeleyX & edx.org
Ruby On Rails, Cucumber, GIT, MVC, Méthode Agile, Behavior Driven Design, Test Driven Development
2013 MongoDB for Java 7 semaines – ********
2012 MongoDB for DBAs 7 semaines – ********
2012 MongoDB for Programmers 7 semaines – ********
Javascript, Python, Aggregation Framework
2010 Java EE 1 mois – Geomap
Spring, JPA, Hibernate, services REST, Maven
2003 Evolving Object (EO) & EASEA 2 jours – par les concepteurs d'EO
bibliothèque C++ de génération d'algorithmes génétiques
2000 Doctorat en Informatique – Intelligence Artificielle appliquée à la Géographie Université de Nice
1992 D.E.U.G de Géographie Université Paris VII
1992 D.E.A. Intelligence Artificielle Université Paris VI
1988 B.T.S. Informatique industrielle Lycée Technique Diderot, Paris
COMPETENCES
Langages VB.NET, SQL, PHP, Shell, UML, Ruby, Python
C/C++ MFC, Evolving Objects, make, Visual Studio, Arduino Wiring
Web Javascript, Dojo, ExtJs, API Arcgis, html, css, SPIP
Java EE JPA, JAX-RS, JAX-WS, Spring, Spring Data, Hibernate, Hibernate Envers, Axon, Velocity, Swing, Struts
Serveurs jboss, websphere, weblogic, jetty, tomcat, Spring Boot
Cloud Spring Cloud, stack Netflix, Axon, MongoDB, Map-Reduce
Intégration continue Maven, JUnit, Mockito, Jenkins, Continuum
Méthode Agile Scrum, Rally, Redmine, Behavior Driven Design, Test Driven Development, Rspec, Cucumber, JBehave
SGBDR Oracle spatial, Postgis, MySQL, SQL-Server, DB2, H2, SQLite
Ateliers Eclipse, Netbeans, Visual Studio, SQL Developer, Enterprise Architect, VPUML
Analyse Sonar, Jmon, HP Diagnotics, yasca, SoapUI, WireShark, Fiddler, Process Monitor, Reflector
Géomatique Arcgis Server, ArcSDE, Mapinfo, MapXtreme, Map Basic, ChronoMap DK, Grass
Contrôle de version VSS, SVN, GIT, clear case
Systèmes d'exploitation Linux, Windows, Android
Langues anglais courant (B2), bilingue espagnol (B2), allemand (B1)