Objectif de mission :
Prestation de « leading » technique et développement dans le cadre de l’évolution technique et fonctionnelle de la plateforme d’Europ assistance.
Contexte :
• Le Groupe “Europ-assistance" est un opérateur international de services d’assistance aux personnes dans les domaines de la santé, du domicile et de la vie familiale, de l’automobile, des voyages et de la conciergerie. Il regroupe 44 filiales présentes dans 34 pays.
Afin de mettre en œuvre des assistances, celle-ci propose aux opérateurs de ses filiales une plateforme unifié. Ainsi, elle a un meilleur contrôle, un suivit plus claire et plus simple, une performance accrue et une harmonie globale de ses prestations. Cette plateforme permet :
o La saisie de réclamations : depuis une application web (React / Java) ou des APIs (Java) publiques sécurisé,
o Le déclanchement et le suivit des missions d’assistance : depuis une application web ou des APIs publiques sécurisé,
o La mise en relation avec les fournisseurs de services d’assistance (taxi, dépannage, garages, hôtels, train, avion, …)
• La mise à disposition de données afin d’établir des KPIs via AWS Kinesis
• La section développement est composé de trois équipes autonomes et similaires appelé “Software Factory”, chacune est composé de : 2 POs, 2 Tech-Leads Back, 1 Tech-lead Front, 2 QA, 6 développeurs back et 4 développeurs front.
• Gestion du projet en mode « Agile » / « Scrum » avec les différents rituels associés : Daily-Meeting, Grooming, Sprint planning, Sprint review, …
• Le projet est constitué de trois applications : deux « back » et une « front » :
o L’application front est basée sur le Framework « React ».
o Les applications « back » sont construites avec des technologies au tour de Java :
o Un gros monolithe modulaire suivant une architecture Hexagonale. Celui-ci implémente le cœur du métier et expose des API pour le Front.
o Une application servant à faire de l’« EAI » et ainsi gérer l’interaction avec les applications tierces.
Tâches réalisées :
Leading technique
• Participation aux choix techniques et d’architecture lors de comités entre Tech-Leads/Solution Owner.
• Conception de solutions techniques répondants aux nouveaux besoins techniques et fonctionnels,
• Participation à des ateliers de “deep-dive" avec les « end-users » afin d’étudier la faisabilité des nouveaux besoins,
• Participation à des ateliers avec les POs afin de donner une “macro-estimation” et de transformer les “user stories“ en spécifications fonctionnelles/techniques détaillés et compréhensible par les équipes de développement,
• Animation de réunion de présentation avec les « end-users » : “Demos”,
• Développement de modules pilotes et de PoC. Mais aussi, développements difficile, délicat et critique,
• Retro-engineering et rédaction de document technique d’architecture à des fins de formation et/ou d’amélioration de l’existant,
• Suivit des développements et coordination avec les autres équipes de développement,
• Paquetage et mise à disposition de « releases » via Jenkins, Spinnaker, AWS,
• Coordination entre les équipes dont les développements sont dépendants :
o Analyse, mesure et prévention des impacts des développements inter-équipes,
o Garantir la bonne constitution des contrats d’interface et leur respect,
o Etablir une chaine de dépendance entre les développements et ainsi un ordre de développement.
• Encadrement des DEVs :
o Revue de code via BitBucket,
o Transmettre les bonnes pratiques et les méthodologies de développement : TDD, SOLID, DRY, KISS, GitFlow, …
o Formations, apprentissage, aide ponctuelle, conseil, …
• Support au testing et à l’exploitation des « features » développées,
• Team building.
Développement
Back-end
• Développement d’APIs (publics et privées) permettant la gestion, le suivit et l’analyse des missions d’assistance. Utilisation de « Spring Core », « Spring Security », « Spring Web » & « Spring Data JPA ».
• Développement d’API utilisant les technologie SSE, Amazon SNS et Amazon SQS afin de permettre un suivit en temps-réel de l’évolution des missions,
• Développement de Batchs avec « Spring batch », notamment pour mettre à jour automatiquement les données de certaines missions en fonction de critères précis.
• Upgrade de version des différents Framework utilisé afin d’eviter l’obsoléscence technologiques et réduire les vulnérabilités.
• Upgrade de la version BD PostgreSQL 9.X à 14.X,
• Augmentation de la couverture en TU et surtout en TI en supprimant des « mocks » inutiles et nuisible.
• Refonte d’une partie du modèle de données ainsi que l’applicatif correspondant :
o Missioning,
o Mission Event,
o Ecrite de script SQL performant dans un contexte d’une large migration de donnée (plus de 80M de lignes)
Objectif de mission :
Prestation de gestion de projet, « leading » technique et développements full stack dans le cadre de la migration de la plateforme de trading de la BNP CIB vers les nouvelles technologies / architectures IT.
Contexte :
• La « BNP CIB » propose à ses traders un progiciel, fait par ses soins. Celui-ci contenant plus de 320 écrans, il répond à tous ses besoins spécifiques. L’implémentation de celui-ci a nécessité l’utilisation de technologies et d’architecture devenant, au jour d’aujourd’hui, vieillissante et obsolète. La « BNP CIB » a entamé ainsi, un gros chantier de migration des écrans de ce progiciel vers les nouvelles technologies.
• Equipe constituée de 14 développeurs « full stack » dont 3 séniors / tech-lead et 4 BA et 1 scrum master.
• Gestion du projet en mode « Agile » / « Scrum » avec les différents rituels associés : Daily-Meeting, Grooming, Sprint planning, Sprint review, …
• Le projet est constitué de trois applications : deux « back » et une « front ». L’application front est basée sur le Framework « Eclipse SWT ». Les applications « back » sont :
o Un gros monolithe modulaire architecturé en trois couches : Données, Application, Présentation.
o Une application servant à faire de l’« EAI » et ainsi gérer l’interaction avec les applications tierces. Architecturé en trois couches.
Tâches réalisées :
Gestion de projet
• Mise en place d’une « roadmap » des écrans à migrer : fichier de suivit avec les dépendances entre écrans, la priorisation et des « ETA »,
• Découpage de chaque écran à migrer en un ensemble de tâches autonomes (testables),
• Mise en place d’un « process » de release cyclique de deux semaines,
• Suivit des développements et coordination avec les testeurs,
• Paquetage et mise à disposition de « releases » via Jenkins, Groovy et Artifactory
• Réception des besoins des « end-users » et leur transformation en besoins fonctionnel/techniques détaillés compréhensible par les équipes de développement,
• Animation de réunion de présentation avec les « end-users ».
Leading technique full stack
• Participation aux choix techniques et d’architecture.
• Conception de solutions techniques répondants aux nouveaux besoins techniques et fonctionnels,
• Coordination entre les équipes dont les développements sont dépendants :
o Garantir la bonne constitution des contrats d’interface et leur respect,
o Etablir une chaine de dépendance entre les développements et ainsi un ordre de développement.
• Encadrement des DEVs :
o Transmettre les bonnes pratiques et les méthodologies de développement : TDD, SOLID, DRY, KISS, GitFlow, …
o Formations, apprentissage, aide ponctuelle, conseil, …
• Revue de code via BitBucket,
• Team building,
• Développement de modules pilotes et de PoC. Mais aussi, développements difficile, délicat et critique,
• Déploiement, support au testing et support à l’exploitation des « features » développées,
• Support aux ITBAs, Scrum Masters, PO : charge, faisabilité, macro-conception, ...
Développement sénior full stack
Back-end
• Transformation des « EJB » en une couche d’« APIs REST » présentant l’ensemble des fonctionnalités de trading en JAX-RS,
• Ajout de nouvelles « APIs REST » avec « JAX-RS », « Spring » et « JPA / Hibernate »,
• Intégration d’applications avec « Apache Camel »,
• Ajout d’un « framework » afin de tester la couche REST (seulement) avec Jersey,
• Amélioration significative de la robustesse, la disponibilité et la maintenabilité des « batch » se basant sur des files « JMS » en les découpant en « Receiver / Processor » indépendants au niveau « code » et au niveau « runtime »,
• Extraction, dans un module indépendant, de la « feature » du « CSV Import » en vue de la contenir dans une application dédiée: Celle-ci permet d’effectuer une multitude d’opérations financières avec un simple fichier JSON. ...