Application pour gérer toutes les phases de production de séries TV et film :
Application pour gérer toutes les phases de production de séries TV et film
C#, SqlServerEnvironnement Fonctionnel : IFRS9 : Moteur de calcul de provisions (calcul de la base de provisions, identification des
buckets, calcul des provisions, calcul des effets, historique et piste d’audit).
La mission était :
Migration l’application vers Azure, Azur Batch distributing calculation.
Optimisation de calcul/stored procedure PL/SQL
C# Oracle Azure gris computing batch azure
Refonte/Développement de deux aplications Notus et Casualty au sein du groupe Axa -> Risk Management est un outil pour modiliser les riques de Solvabilité II dans l’équipe CAT NAT (CATASTROPHE NATURELLE)
Refonte de l’application NotusInerne (ancien outil externe OASIS) lance des Runs sur des millions de données (Polices d’assurance) croisées avec des millions de sénarios de distruction (Earthquick, Flood, WindStorm, etc).
Chaque Run fait des milliards des calculs. Le résultats de chaque calcul peut aller de plusieurs GB à 200 GB.
Vu la volumetraie des données et de nombre du calculs. J’ai fait une application qui disctibue le calcul sur Azure Grid Compution en utilisant le BATCH AZURE.
L’aplication Moses au sein Axa France -> Risk Management est un outil pour modiliser les riques de Solvabilité II
Moses est un outil externe permet aux développeurs AXA de modiliser/développer en C++ le modèle d’AXA de Solvabilité II, ce modèle est composés de Classes C++.
Il y a une couche Input contient tous les données inputs (Model Point, Scénarios de calculs, Paramètrage des columns de sortie, .., etc).
Le modèle lie les Inputs et fait le calcul sur un Grid Computing pour paralléliser le calcul (Multiprocess). Les machines utilisées pour chaque Run varie entre 80 et 1000 machines selon la branche Bussiness.
Le calcul est composé de plusieurs tâches :
Projection : Calculer et générer les fichiers intermidiares d’output pour chaque machine de calcul
Merge : Merger une partie des fichier output (scv), 15 à 60 GB
Reporting : Extraction de données des fichiers Output (DBF, csv : 10 à 40 GB) pour générer les comptes de résultat finaux.
Objectif(s): Proposer et mettre en place des solutoins techniques pour optimiser le Runtime, Consomation mémoire/ IO et Disk Space.
Pendant un mois, J’ai fait un POC (Proof Of Concept) pour déterminer les solutions techniques, puis j’ai proposé deux solutions techniques :
1- Solution 1, Contient deux étapes :
a. Faire sortir toutes les parties Merge & Reporting (20k Lignes de Code) de Moses et les développer en C#
b. Modifier et optimiser une partie de code Moses en C++ (15k Lignes de Code)
Cette solution garantie un gain de 50% de Runtime, 30% de la consumation Mémoire, 50% IO et Disque Space
2- Solution 2 :
a. Faire sortir tous le Code C++ d’AXA (80k Lignes de code) Contient deux étapes :
Cette solution garantie un gain de 80% de Runtime, 75% de la consumation Mémoire, 75% IO et
J’ai proposé pour la solution 1, deux développeurs pendant un an et aussi une peronne avec des connaissances fonctionnelles à 80 jour/homme ainsi une personne pour le test utilisateur 50 jour/homme.
Pour la solution 2, trois développeurs et une peronnes avec des connaissances fonctionnelles pendant un an et demi ainsi une peronnes pour le test utilisateur 150 jour/homme.
La direction de Risk Management a choisi la solution 1.
J’ai divisé la solutoin 1 à trois lots :
1- Lot1 : Développement C#, test et mis en production la partie Reporting (Livré en mai 2015)
2- Lot2 : Optimisation de code Axa en C++ à l’inteieur de Moses, test et mis en pr(Livré en août 2015)
3- Lot3 : Developpement C#, test et mis en production la partie Merge (Livré en Nov 2015)
J’ai géré une équipe de trois personnes, ma responsabilité est de mettre en place l’architecture et la maquette des applications C# et la partie C++.
Les autre peronnes ont fait le développement et le TNR sous ma direction.
Architecture
Modélisation
Développement POO
Optimisation : Multithreading/T-SQL
Procédures Stockées / Requêtes SQL
Mise en Production
Documentation
L’application est un outil interne de descente d’actif servant à modéliser une partie des actifs détenus par Axa France afin d’alimenter les modèles de projection financière.
L’inventaire des actifs est centralisé dans une base de données à partir de données fournies par plusieurs filiales, en fonction des périmètres gérés ou comptabilisés.
L’application importe des données d’inventaire détaillées actif par actif de la base ainsi que des fichiers de paramètres au format Excel (Repos, Courbes des taux,..,etc.).
Toutes les données importées sont désormais stockées dans une base SQL Server.
L’application contient une phase de calul des données importés (Actifs, Courbes des taux,..,etc.) suivie par une étape d’exportation des résultats au format Excel en suivant un Template.
Phase d’intégration : SSIS.
Phase de calcul et d’Export : C#, Multithreading, Procédures stockées
L’équipe transverse d’Ingénierie et de Recherche Quantitative dispose d’un outil propriétaire « QuantX » utilisé comme plateforme pour des études la gestion de certains portefeuilles.
Objectif(s): Refonte l’ application QuantX (Visual Basic6/Excel2003//XP) en C#, WinForm, DevExpress, Excel2010 sous Windows7.
L’application QuantX est au sein du pôle d’expertise de Gestion «ICS Investment and Client Solution » gère près de 500 portefeuilles, essentiellement en gestion diversifiée, pour 80 Md€ d’euros.
> 60 Utilisateurs utilisent l’application QuantX
La nouvelle application QuantX a plus de 70 interfaces WinForm/DevExpress et aussi peut être utilisée à partir d’Excel via le ComObjet.
Mettre en place l’achritecture de l’application QauntX en C#, SQL Server, DevExpress, WinForms, ComObjects.
J’ai utilisé le « Architectual Pattern MVP »
La nouvelle architecture comprend plusieurs couches :
Couche d’accès à la base de données SQL Server/Sybase
Couche Business contient les classes Bussiness/Calcul
Couche Controls contient les éléments de base pour les interfaces
Couche Interface contient les 60 interfaces de l’application
Couche Com contient les classes/interfaces ComObject pour être utilisée dans Excel.
Couche Test Unitaire
Modélisation
Développement POO
MVP
SQLServer/SyBase
NUnit
Mise en Production
Documentation
Objectif(s): Refonte d’une application (VBExcel/Access) en C#, SQLServer, SSIS Multithreading
Optimisation des performances (Base de données SQL Server Procédures Stockées, Multithreading)
Architecture
Modélisation
Développement POO
Optimisation : Multithreading/T-SQL
Procédures...
Break-down pour récupèrer toutes les informations :
Actors
Accessoires
Orders
Locations
Etc
Module de comptabilité détaillé
C# Sqlserver
IL y a plusieurs Steps de Calcul : PreCalc, Calc et PostCalc
Le Calc Step est distibué sur des centaimes de VMs
Le vrai change de cette application est le Runtime et l’utilisation de RAM, j’ai optimisé le calcul et les résultats par rapport à l’ancien outil externe :
RunTime a baissé de 36 heures à 2 heures
l’utilisation de RAM a baissé de 16 GB à 300 MB
Développer l’application Casualty qui réucpère les données (Polices d’assurance) de toutes les entités d’AXA dans le monde, puis faire un calcul de risque.
L’applicaiton a plusieurs couches :
InterfaceWeb (ASP .NET, C#) : un collègue s’en occupe.
Calcul (SQL Server Stored Procedures): moi-même :
Le challenge de cette application est les données (des centaimes de millions dans chaque Table). Et le calcul optimisé dans les procédures stoquées.
J’ai partitionné la base de données afin de lancer plusieurs opérations « Import/Calcul » simultanément pour ne pas bloquer une table par un INSERT/UPDATE/DELETE et plutôt bloquer la partition d’une table (Partition Key : Axa Entity).
Modélisation
Développement POO C#
Shell
Azure DevOps
Azure Grid Computing
Azure Batch
Optimisation : Multithreading/T-SQL
Procédures Stockées / Requêtes SQL
Mise en Production
Documentation
Organisation avec le métier