Menu

Aurélien CAMPERGUE

Courbevoie

En résumé

Expert technique multi-casquettes reconnu : Programmation Java/J2EE, Administration système Linux, Intégration continue.

La majorité des développeurs Java n'ont pas conscience des problèmatiques de mise en production du code qu'ils produisent.
La plupart des opérationnels n'ont pas connaissance des contraintes de développement logiciel.
La frontière entre ces deux mondes est souvent la cause de conflits et peut dans certains cas mener à l'échec d'un projet.

Un expert technique à cheval entre ces deux mondes permet de fluidifier les rouages de l'usine logicielle et contribue grandement au succès d'un projet.

Mes compétences :
AOP
Maven
Google Web Toolkit
Opensource
Linux
Spring
Intégration

Entreprises

  • Thales Services - Ingénieur DevOps

    Courbevoie 2010 - maintenant  Référent intégration logicielle et système
    --------------------------------------------------------------------------------------

    Responsable de l'architecture Maven de l'ensemble des modules du projet
    Responsable de la qualité des versions du système (releases mensuelles)
    Support aux équipes de développement

    Packaging, intégration et industrialisation des déploiements
    --------------------------------------------------------------------------------------


    Mise en place de projets Maven de packaging applicatif au format Debian (Jdeb)
    Industrialisation des déploiements applicatifs basés sur les paquets Debian
    Industrialisation des configurations de plateforme
    Mise en place d'un processus de déploiement continu incluant un paramétrage spécifique de plateforme
    Mise en place d'une architecture de gestion de logs (Logstash)
    Mise en place d'une architecture de supervision des performances (Munin)

    Plateforme d'intégration et de tests :
    --------------------------------------------------------------------------------------

    Installation et configuration de plus de 30 hyperviseurs (VMWare ESXi pendant plus de 2 ans, KVM depuis 1 an)
    Gestion de nombreuses plateformes virtualisée (environ 10 plateformes, 40 serveurs par plateformes)
    Déploiement hebdomadaires de plateformes complètes, OS et applicatif (40 VM, 35 Jboss, 2 Postgresql, 2 Cassandra, 10 Redis, 2 ActiveMQ, 4 lemonldap-ng)

    Mise en place et maintien en condition opérationnelle d'une plateforme de développement logiciel :
    --------------------------------------------------------------------------------------

    Plateforme utilisée par un plateau de 60 personnes pendant plus de 3 ans

    Gestion documentaire collaborative (Xwiki)
    Issue and Bugs Tracker (JIRA)
    Gestion de configuration (SVN, Git)
    Build automatisé, intégration continue (Maven, Hudson/Jenkins)
    Qualimétrie : Sonar, Squale (PMD, Findbugs, Checkstyle, Metrics, ...)
    Gestion de dépôts binaire (Nexus)
    Authentification centralisée (OpenLDAP)

    Gestion du parc des postes de développement
    --------------------------------------------------------------------------------------

    Création de masters de postes de développement ; Ubuntu (10.04, 11.04, 12.04, 13.04) ; Mint (14,15) ; Debian (6.0, 7.0)
    Mise en place d'une infrastructure de clonage de masse (Clonezilla) et Déploiement des postes à la demande
    Inventaire de parc informatique automatisé (OCS Inventory NG, GLPi)
  • Thales Services - Référent technique développement Java/GWT

    Courbevoie 2010 - 2010 Objectif : Développer une application permettant de prouver la capacité de Thales à répondre pleinement aux besoins de la RATP. Le système développé doit offrir la capacité de transmettre une très grande volumétrie de messages, assurer une haute disponibilité du service et être capable de reprendre automatiquement sur panne.
    Le système doit comporter une interface utilisateur dédiée aux clients de la RATP pour la consultation. Il doit également offrir la possibilité de s'abonner à des flux de données afin d'être notifié en temps réel des nouveaux avis de passage.
    Participation au développement de « Thales Object Grid » : framework de transmission de messages basé sur Jgroups.
    Intégration de « Thales Object Grid » au sein des autres composants logiciels l'utilisant comme librairie de communication.
    Développement d'un serveur de logs centralisés. Celui-ci a pour objectif d'agréger l'intégralité des traces produites par les modules applicatifs. Ces traces portent également des méta-données permettant de distinguer les types de traces produites : traces applicatives, logs d'audit, etc.
    Revue de code de l'ensemble des composants développés au sein de l'équipe.
    Rédaction des descripteurs de projets Maven2 (POM) permettant :
    - la gestion des dépendances
    - la systématisation de l'exécution de tests unitaires
    - l'automatisation du processus de compilation
    - l'automatisation de la création des rapports de qualité de code
    - l'automatisation de la création de versions
    - l'automatisation de la création de livrables : archives contenant binaires, scripts et fichiers de configuration.
    Déploiement de l'applicatif en environnement d'intégration, composé d'une quinzaine de machines virtuelles disposées sur 2 serveurs physiques.

    Environnement technique :
    OS : Linux Ubuntu 10.04 - 64 Bits, Linux CentOS 5.5
    IDE : Eclipse 3.5 JEE
    Langages : Java/JEE 1.6
    Virtualisation : VMWare ESXi, VCenter
    Frameworks : GWT, SmartGWT, Hibernate, SLF4J, Logback
    Qualité du code : JDepend, PMD, Checkstyle, FindBugs
    Test et couverture de code : Junit, Cobertura, Emma
  • Thales Services - Mise en place de plateforme de développement et d'intégration continue

    Courbevoie 2010 - 2010 Objectif 1 : Fournir un serveur de développement offrant un panel de services nécessaires au bon déroulement du projet démonstrateur RATP
    Installation d'un serveur de développement sous Linux « Debian Squeeze » (6.0) en version 64 Bits
    - Installation du serveur de noms « Bind9 » afin de simplifier l'accès aux différents services.
    - Installation du proxy Web « Squid »
    - Installation du système de gestion de versions « Subversion ».
    - Configuration du serveur Web « Apache » 2.0 (avec support Subversion et proxying).
    - Configuration du proxy Maven « Nexus »
    - Mise en œuvre de l'outil d'intégration continue « Hudson » permettant l'exécution systématique de jeux de tests (unitaires, intégration, non-régression), la production de rapports de tests, la production de rapports d'audits de qualité de code, …
    - Installation de la plate-forme de gestion de la qualité du code « Sonar »

    Objectif 2 : Déployer rapidement et sans intervention utilisateur un OS pré-installée muni d'un ensemble d'outils pré-configurés pour le développement sur le projet RATP.
    - Installation d'une plateforme Linux Ubuntu 10.04
    - Pré-configuration dans l'environnement de développement du projet : DNS, proxy web, etc.
    - Installation et configuration des outils de développement : Eclipse, Maven2, Subversion, etc.
    - Création d'un master générique déployable sur tous les postes avec l'outil « Clonezilla ».
  • Thales Services - Référent Technique / Développeur / Administrateur Système

    Courbevoie 2009 - 2010 Objectif : Fournir une application de gestion centralisée des systèmes de transports en commun pour le Danemark. Celle-ci est constituée d'un Back-Office dédié aux opérateurs de transport et d'un Front-Office dédié aux usagers.

    - Utilisation des méthodes Agiles : Test Driven Development, Pair Programming, Iterative Planning
    - Développement d'une application Spring : Inversion de Contrôle (IoC), programmation orientée aspect (AOP).
    - Développement d'une application Web 2.0 basée sur GWT et GXT.
    - Développement de librairies de Sécurité et de Logging transverses grâce aux techniques d'AOP.
    - Installation serveur de développement Debian, déploiement de l'outil de gestion de projet Redmine connecté à un serveur d'authentification LDAP

    Environnement technique :
    Java J2EE 1.6
    Eclipse 3.5
    Qualité du code : Jdepend, PMD, Checkstyle, FindBugs
    Test et couverture de code : Junit, Cobertura, Emma
  • Thales Air Systems, Weapon Systems - Concepteur et développeur Java

    2008 - 2009 Conception et développement d'un framework abstrait de simulation (3 mois)
    Objectif : Fournir un framework de base permettant la mise en œuvre de simulations de l'espace aérien et de visualisation de données tactiques : gestion des entités, de leurs capacités et des interactions entre elles, détections radars... Celui-ci doit permettre d'intégrer rapidement du code métier (algorithme de détection radar, stratégie de déplacement d'avions ou de missiles, etc.). Il offre un cadre de développement fortement extensible, divisé en modules.
    Participation à la conception de l'architecture du framework.
    Participation au développement du framework.
    Implémentation d'un adaptateur bi-directionnel vers le protocole de simulation « DIS » : permet d'échanger les données de simulation sur le réseau DIS.
    Implémentation d'un adaptateur uni-directionnel depuis protocole d'échange de données tactiques « L16 »: permet de recevoir les pistes détectées par les radars et centres de coordination.
    Implémentation d'un adaptateur bi-directionnel vers le protocole d'échange de données tactiques « Asterix »: permet de recevoir les pistes détectées par les radars.

    Conception et développement d'un framework de persistance basé sur les évènements (3 mois)
    Objectif : Persister les évènements du framework de simulation, les évènements IHM, ou n'importe quel autre type d'évènement.
    Conception d'un framework de persistance basé sur le pattern DAO (Data Access Object).
    Développement d'un module de persistance des évènements du framework de simulation : déplacement des entités, détections émises par les radars.
    Développement d'un module de persistance des évènements IHM : mouvements de caméra, sélection.

    Participation à l'élaboration d'une API de fenêtrage OpenGL (2 mois)
    Objectif : Fournir aux développeurs une API de fenêtrage, similaire à l'API Swing de Java, entièrement développée en OpenGL.
    Participation à la conception de l'architecture de l'API. Définition des notions de fenêtres, bordures, conteneurs, icônes et éléments graphiques. Définition des interactions entre ces éléments.
    Écriture de plusieurs Layout Manager permettant notamment la disposition verticale ou horizontale des éléments graphiques.
    Création d'éléments graphiques de base : Slider, zone de texte éditable, clavier virtuel, afficheur 7 segments.
    Aucun code de rendering OpenGL.

    Évolutions de l'outil Comete, outil de génération de code multi-langage (2 mois)
    Objectif : Apporter des évolutions au méta-modèle de librairies d'interfaces de communication pour prendre en compte de nouvelles contraintes. Améliorer la qualité du code généré.
    Optimisation et amélioration des templates de génération de code Java : ajout de javadoc, respect des conventions de codage Java, ajout de mécanisme d'observateurs et de filtres sur les messages reçus.
    Optimisation du code du noyau commun à toutes les librairies générées : amélioration des performances de lecture et d'écriture des messages sur le réseau.

    Développement d'un outil de transformation de modèles d'interfaces de communication (2 mois)
    Objectif : Transformation M2M (Model To Model)
    Acquisition et production de modèles au format XML en utilisant l'API JDOM.
    Transformation de données d'entrée complexes : valeurs binaires, formules mathématiques.


    Environnement technique et méthodologique
    Langages : Java J2SE version 1.6
    IDE : Eclipse 3.4 / 3.5
    Gestion de versions : Subversion 1.6
    Gestion des anomalies, des évolutions : Redmine 0.8.4
    Gestion des dépendances : Maven 2
    UML : Bouml, eUML2
    Design Patterns : GOF (Abonnement, Stratégie, Fabrique, Composite, Singleton, etc.) ; Grasp (Affectation des responsabilités, Faible couplage, Forte cohésion, Expert, etc.)
  • Thales Air Systems, Weapon Systems - Administrateur Système Linux

    2008 - 2009 Déploiement et administration du serveur de développement (utilisé par environ 30 personnes réparties sur 3 services)
    Objectif : Installation d'un serveur en Raid 6 sous la distribution Debian Lenny (v5.0)
    Mise en œuvre d'un mécanisme de connexion distante sécurisée : OpenSSH et authentification par clef.
    Installation du système de gestion de versions Subversion.
    Configuration du serveur Web Apache 2.0 (avec support Subversion).
    Installation d'un système de gestion complète de projet en mode web (gestion des faits techniques, anomalies, évolutions, lien avec les modifications du code source) : Redmine.
    Déploiement d'un outil de build automatisé permettant la gestion des dépendances entre projets : Maven.
    Configuration d'un proxy Maven permettant d'utiliser ce dernier sans connexion à internet : Artifactory.
    Mise en œuvre d'un outil d'intégration continue permettant l'exécution périodique de jeux de tests (unitaires, intégration, non-régression), la production de rapports de tests, l'exécution d'audits de qualité de code ainsi que la production d'artefacts au sein des dépôts Maven : Cruise Control.

    Rédaction de scripts d'installation automatisée de poste client.
    Objectif : installer et configurer rapidement, sans interaction de l'utilisateur, un poste client disposant de tous les outils utilisés au sein de l'équipe de développement.
    Écriture de scripts de déploiement en utilisant les langages de script : Bash, Sed, Awk.
    Mise en place de la structure permettant la configuration et le téléchargement automatisé d'applications.
  • Thales EPM - Ingénieur études et développement Java

    Courbevoie 2006 - 2008 Analyse et conception d'un moteur d'export de données (18 mois)
    Objectif : Export de modèle de carte électronique vers des outils de simulation thermique
    Clarification des modèles d’export : simplification et généralisation du format de description (passage d'un template par famille de composants et par format cible à un template par format cible seulement).
    Acquisition du modèle d'export défini par un langage de balise proche du format XML.
    Insertion de données provenant de la base de données de composants maintenue par les ingénieurs Thales (géométrie, données thermiques, etc.).
    Processus d'optimisation du modèle de carte permettant de réduire le temps de simulation thermique.
    Conception d'un moteur générique sous forme d'automate à états. Utilisation du Design Pattern État.
    Conception d'un paquetage d'export vers le format propriétaire Flotherm, basé sur le moteur d'export générique.

    Environnement technique et méthodologique
    Langage : Java J2SE version 1.4
    IDE : Eclipse 3.2
    Gestion de versions : PVCS
    UML : Bouml
    Design Patterns : état, patron de méthode, télécommande, visiteur


    Conception d'un module de réduction de composants électroniques (2 mois)
    Objectif : Déterminer le modèle thermique équivalent à un composant électronique, conservant un comportement thermique identique mais de géométrie simple.
    Formation d’un thermicien aux techniques de recherche opérationnelle utilisant des algorithmes génétiques à base de population.
    Participation à l’implantation de ces algorithmes.

    Environnement technique et méthodologique
    Langage : Java J2SE version 1.6
    IDE : Eclipse 3.3
    UML : Bouml
    Design Patterns : Stratégie
    Intelligence Artificielle : Algorithmes génétiques à base de population


    Conception d'un moteur de calcul aux différences finies appliqué à la thermique (4 mois)
    Objectif : Être capable de calculer la température d'un composant électronique en tout point selon la puissance injectée et les conditions extérieures.
    Participation à l'écriture des équations des 3 modes de transfert thermique : conduction, convection et radiation.
    Écriture d'un algorithme de parcellisation d'un composant dont la géométrie est connue en un ensemble de mailles élémentaires de tailles homogènes.
    Implémentation et optimisation des algorithmes de calcul correspondant aux 3 équations de transfert thermique.

    Environnement technique et méthodologique
    Langage : Java J2SE version 1.6
    IDE : Eclipse 3.3/3.4
    UML : Bouml
    Design Patterns : Stratégie
  • CMS Informatic - Consultant

    Villejust 2005 - 2006 Préparation et animation de formations techniques (anglais et français)
    Administration Linux : commandes de bases, scripting (Bash, Grep, Awk et Sed).
    - Développement Web : HTML, PHP.
    - Bureautique : Word, Excel, Outlook.
    - Administration système et réseau.

    Installation d'un Serveur Linux Debian Etch (v4.0).
    - Déploiement du serveur Web Apache : support des connexions HTTP et HTTPS (SSL), support PHP4/PHP5.
    - Mise en oeuvre du serveur FTP : ProFTPD.
    - Configuration du serveur mail Postfix avec accès Web Squirrelmail.

    Développement web (1 mois)
    - Création du nouveau site de l'entreprise : http://www.cms-informatic.com
    - Utilisation de l'outil de gestion de contenu : Joomla!
    - Mise en place de menus dynamiques en DHTML (composant Lxmenu).
    - Définition de la carte du site (utilisation du plugin JooMap).
    - Création d'un formulaire d'inscription aux formations (à l'aide du module facileforms).

    Développement d'une application de gestion de configuration (VBA Access)
    - Définition d'assemblages de pièces.
    - Gestion des versions des pièces assemblées.
    - Affichage des états de la base de données d'assemblages existants.

    Développement d'une application de gestion des formations (VBA Excel)
    - Enregistrement des participants à des sessions de formation.
    - Formulaires d'aide à la saisie.

Formations

Réseau

Annuaire des membres :