Parcours de modernisation

Porter un parc COBOL vers Python pour le calcul et l'analytique.

Migration de traitements COBOL batch, calcul et analytique vers Python, pandas, NumPy et bibliothèques scientifiques. Méthodologie ATLAS, parité fonctionnelle prouvée, intégration à l'écosystème data moderne (Databricks, Jupyter).

Chiffres clés
~10:1
ratio extrapolé COBOL → Python (concision Python + vectorisation pandas), à valider sur POC client
5-20×
gain performance typique vs traduction naïve grâce à la vectorisation pandas/NumPy
Par lots
livraison incrémentale, durée définie au cadrage
Méthodologie ATLAS appliquée

Du cadrage au déploiement, cinq phases structurées.

Chaque phase regroupe une ou plusieurs des dix étapes ATLAS. Aucune phase ne démarre tant que la précédente n'a pas livré son artefact validé. La méthodologie ATLAS rend la migration AS/400 prévisible et auditable.

  1. 01Phase 1

    Cadrage & sélection périmètre

    Étapes ATLAS
    E1 Intake · E2 Discovery · E2b Spécification fonctionnelle

    Inventaire des programmes COBOL candidats (batch analytique, calcul actuariel, scoring, reporting), exclusion des transactionnels (orientés Java/.NET). Choix de la cible Python (pandas+PostgreSQL, Databricks/PySpark, FastAPI). Reconstitution de la spec fonctionnelle des règles de calcul.

    Livrable de phase
    Inventaire + périmètre signé + spec fonctionnelle + choix cible
  2. 02Phase 2

    Capture & jeux de référence

    Étapes ATLAS
    E2e Capture · E3 Mapping des dépendances

    Capture des jeux de données production représentatifs (entrées, sorties attendues), figeage de la référence de vérité. Cartographie des dépendances : fichiers VSAM/QSAM, copybooks, ordonnancement JCL, intégrations bases DB2.

    Livrable de phase
    Jeux de référence figés + cartographie dépendances complète
  3. 03Phase 3

    Architecture cible Python

    Étapes ATLAS
    E4 Architecture cible · E4b Tests pré-migration

    Design pipeline Python : decimal.Decimal pour calculs financiers, pandas pour transformations, modélisation relationnelle (PostgreSQL) ou colonne (Parquet/Delta Lake) selon volumes, orchestration Airflow ou Databricks Workflows, observabilité (logging, metrics). Préparation suite de tests de caractérisation.

    Livrable de phase
    Architecture cible signée + suite de tests + maquette pipeline
  4. 04Phase 4

    Migration & vectorisation

    Étapes ATLAS
    E5 Migration · E6 Validation parité

    Traduction pattern par pattern : PIC S9(n)V9(n) → decimal.Decimal, PERFORM séquentiels → opérations vectorisées pandas/NumPy (gain 5-20×), CALL → modules Python, fichiers VSAM → tables ou DataFrames. Runs parallèles COBOL/Python 4-8 semaines sur jeux production, comparaison automatique ligne à ligne.

    Livrable de phase
    Code Python + tests parité + registre discordances tracé
  5. 05Phase 5

    Déploiement & intégration data

    Étapes ATLAS
    E7 Livraison

    Mise en service progressive avec coexistence COBOL ↔ Python pendant la transition. Intégration Databricks ou Jupyter pour exploration. Packaging (poetry/uv) et conteneurisation (Docker/Kubernetes ou serverless Cloud Run). Transfert d'exploitation à l'équipe cliente avec documentation et runbooks.

    Livrable de phase
    Pipelines Python en production + intégrés écosystème data + équipe cliente autonome
Au cœur de la méthode ATLAS

L'IA pour comprendre le COBOL, pas pour le traduire.

Une conversion COBOL vers Python ligne à ligne reproduit des boucles PERFORM séquentielles là où l'intérêt de la cible est justement de vectoriser. On obtient un batch Python plus lent que le mainframe d'origine, ce qui alimente la conclusion inverse de celle attendue : que la modernisation dégrade les performances. La traduction automatique de bout en bout n'est pas une méthode de modernisation, c'est un transfert de dette.

Notre méthode est inverse. ATLAS repose sur plusieurs lectures du code d'origine, menées selon plusieurs angles. Ici, ce que nous relisons en priorité : les règles de calcul actuariel et de scoring à réexprimer en opérations pandas/NumPy, et la précision décimale à porter vers decimal.Decimal plutôt que vers float. L'IA intervient comme accélérateur de compréhension, pour déchiffrer des années de logique métier accumulée, rétro-documenter des branches non commentées, expliciter l'intention derrière le code. Elle ne décide pas et ne traduit pas. Elle éclaire le travail de l'architecte, qui conçoit ensuite l'architecture cible et pilote la migration pattern par pattern, sous audit de parité.

Cette compréhension exige encore des humains qui connaissent les technologies d'origine. C'est notre avantage : là où l'Europe et l'Amérique du Nord font face à une vague de départs en retraite sur ces compétences, la Tunisie conserve des développeurs COBOL expérimentés, couplés à des ingénieurs data Python. Ensemble, ils assurent la continuité entre l'intention métier d'origine et le système cible.

Qui est concerné

Contexte métier et enjeux de modernisation.

Quand Python s'impose face à COBOL

Le choix de Python comme cible de migration COBOL n'est pertinent que dans certains périmètres précis. Pour des traitements de calcul (actuariat, scoring de risque, simulations Monte Carlo, analyses statistiques), Python apporte un écosystème scientifique inégalé (NumPy, SciPy, pandas, scikit-learn). Pour des pipelines batch analytiques qui alimentent un data lake ou un lakehouse, Python s'intègre naturellement à Databricks, Airflow et Jupyter. Pour des transactionnels haute disponibilité ou des programmes financiers critiques, Java ou .NET Core restent préférables.

Les périmètres COBOL adaptés

Les bons candidats à une migration vers Python : batchs analytiques d'assurance vie ou IARD (provisions, réassurance), scoring crédit des banques, calculs fiscaux des administrations, reporting réglementaire (Solvency II, BCBS 239), traitement de données scientifiques dans l'industrie ou la santé. Volume typique : 20 à 100 mille lignes COBOL par périmètre. Pour des volumes plus importants ou des transactionnels, regarder les autres parcours COBOL vers Java, .NET Core ou TypeScript.

Plateforme source

COBOL batch (calcul, reporting, analytique, actuariat)

Cible technologique

Python 3, pandas, NumPy, PostgreSQL ou Databricks

Alternatives technologiques

Comparer les trajectoires cibles.

Python 3 + pandas + PostgreSQL + Airflow

Batchs analytiques classiques, intégration data lake, ordonnancement Airflow. Choix par défaut pour les pipelines analytiques.

Python 3 + Databricks (PySpark + Delta Lake)

Volumes massifs (TB), workloads distribués, intégration ML. Voir Pipelines data engineering.

Python + FastAPI pour les API

Exposition de calculs sous forme d'API REST. Léger, rapide, facile à industrialiser.

Java 21 ou .NET Core

Transactionnel haute disponibilité, performance critique, écosystème enterprise dominant. Voir COBOL vers Java ou COBOL vers .NET Core.

Repère de cadrage

Durée et équipe type pour ce parcours.

Une migration COBOL vers Python se structure par lots fonctionnels successifs, dont la cadence est définie au cadrage selon le volume et la complexité des calculs. Cellule type : un architecte legacy-Python, un tech lead Python, des développeurs Python (idéalement avec passé scientifique ou data engineering), un ingénieur QA spécialisé en tests de caractérisation, un référent métier (actuaire, data analyst, fiscal). La composition et l'effectif ne sont pas fixés à l'avance : ils sont déterminés à l'issue du POC et du cadrage, une fois le travail réel mesuré.

Défis

  • Reproduire fidèlement les calculs financiers ou actuariels en Python (decimal).
  • Migrer les rapports batch vers des pipelines Python observables.
  • Intégrer aux outils analytiques modernes (Databricks, Jupyter).
  • Vectoriser les boucles COBOL avec pandas et NumPy pour la performance.

Approche ATLAS

  • Capture des calculs existants et des jeux de données de référence.
  • Tests de caractérisation sur échantillons représentatifs.
  • Migration avec runs parallèles et audit de parité.
  • Vectorisation pandas/NumPy systématique des boucles séquentielles.

Résultats attendus

  • Pipelines Python observables, intégrés à l'écosystème data moderne.
  • Tests de non-régression automatisés, registre interne de discordances classées.
  • Performance améliorée vs COBOL grâce à la vectorisation.
Pièges identifiés et réponse ATLAS

Ce que nous avons appris sur ce chemin de migration.

Piège 01

Utiliser le type float Python pour les calculs financiers. Les erreurs d'arrondi en virgule flottante sont garanties et les écarts de centimes finissent par dépasser les seuils acceptables des contrôles métier.

Réponse ATLAS

Mapping systématique PIC S9(n)V9(n) et COMP-3 vers la classe decimal.Decimal native Python avec context précision et rounding mode explicites. Tests de parité unitaires sur overflow, underflow, division avec arrondi déterministe. Comparaison automatique des sorties avec les jeux COBOL de référence.

Piège 02

Reproduire les boucles COBOL séquentielles en Python sans utiliser pandas ou NumPy. Le résultat est un Python lent qui ne profite pas des avantages du langage.

Réponse ATLAS

Vectorisation systématique avec pandas et NumPy pour les transformations de données. Les PERFORM COBOL deviennent des opérations vectorielles ou des `apply` pandas. Pour les volumes massifs : PySpark sur Databricks. Gain de performance typique : 5 à 20× vs traduction naïve.

Piège 03

Migrer un programme à la fois sans réviser le modèle de données. Le parc COBOL utilise typiquement des fichiers VSAM ou QSAM avec accès positionnés — naïvement portés en SQL relationnel, on perd les performances.

Réponse ATLAS

Modélisation relationnelle adaptée aux requêtes cibles avec index composites pertinents. Pour les analytiques massifs : stockage colonne (Parquet, Delta Lake) au lieu de PostgreSQL classique. Voir le parcours Pipelines data engineering pour les patterns lakehouse.

Piège 04

Déclarer la migration terminée après la conversion de calculs, sans valider sur jeux production complets. Les bords de domaine (overflow, valeurs aberrantes, dates antérieures à 1900) réservent des surprises.

Réponse ATLAS

Principe E7 — validation sur jeux production réels obligatoire avant livraison. Runs parallèles COBOL/Python pendant quatre à huit semaines sur jeux production complets, comparaison automatique des sorties à la ligne, registre des écarts classifiés. Voir la méthodologie ATLAS.

Composition de la cellule

Une cellule spécialisée pour ce parcours de modernisation.

Plusieurs profils distincts, mobilisés sur la durée du programme. Reproduire cette cellule en interne est rarement réaliste — la pénurie des compétences legacy et la profondeur d'expertise ATLAS rendent l'externalisation structurellement plus rapide et moins risquée.

Durée
Définie au cadrage selon volume et complexité des calculs
Volume
Déterminé à l'issue du POC et du cadrage
Profils

Architecte legacy ↔ Python

Pont entre COBOL batch/analytique et l'écosystème Python data, cartographie patterns COMP-3/PIC, design pipelines

Tech Lead Python

Python 3, pandas, NumPy, decimal.Decimal, patterns de traduction COBOL→Python, traçabilité ligne à ligne

Développeurs Python data

Idéalement avec passé scientifique ou data engineering (NumPy, SciPy, vectorisation, pandas avancé)

Référent métier

Actuaire, data analyst, fiscal — lever les ambiguïtés sur les règles de calcul accumulées, validation des écarts de parité

DBA & migration data

Migration des fichiers VSAM/QSAM vers PostgreSQL ou stockage colonne (Parquet, Delta Lake), audit parité données

QA & parité fonctionnelle

Bench de tests de caractérisation, comparaison ligne à ligne legacy/cible sur jeux production, registre des discordances classifié

Retour d'expérience Access

Ce parcours en conditions réelles.

Capacité Access — COBOL vers stacks modernes

Capacité éprouvée sur la migration COBOL avec 10 POC internes couvrant Java et TypeScript (39 patterns COBOL couverts, 44 discordances tracées). Les patterns documentés sont applicables à une cible Python : decimal.Decimal pour COMP-3, pandas pour la vectorisation, Airflow ou Databricks pour l'orchestration. Capacité combinable avec notre expertise data engineering.

10 POC COBOL · 39 patterns · 44 discordances · capacité applicable cible Python
Questions fréquentes

Ce que les décideurs demandent sur ce parcours.

Python est-il vraiment adapté à un COBOL transactionnel ?+

Non, dans la majorité des cas. Python convient parfaitement aux batchs analytiques et aux calculs scientifiques, mais pas aux transactionnels haute disponibilité (banque temps réel, paiements, transactions critiques). Pour ces périmètres, Java ou .NET Core restent préférables. Le sweet spot Python : actuariat, scoring, reporting réglementaire, ETL analytiques.

Comment garantir la parité arithmétique entre COBOL et Python ?+

Trois leviers. decimal.Decimal systématique pour tous les calculs financiers (jamais float). Context précision et rounding mode explicites alignés avec le COBOL source (typiquement ROUND_HALF_EVEN ou ROUND_HALF_UP selon les conventions métier). Tests de caractérisation sur jeux production avec comparaison à la ligne, reconciliation des écarts classés en CRITIQUE / ADAPTATION / COSMÉTIQUE selon notre méthodologie ATLAS.

Combien coûte une migration COBOL vers Python ?+

Le coût dépend surtout de la nature des traitements. Trois variables pèsent : le volume de code de calcul réellement porté une fois le code mort écarté, la précision décimale exigée (un moteur actuariel demande un audit de parité bien plus lourd qu'un reporting), et le degré de vectorisation visé sur la cible pandas/NumPy. Nous chiffrons après l'Intake ATLAS, qui produit l'inventaire des programmes. Cadrage initial gratuit, de 30 minutes à 2 heures.

Comment intégrer le code Python migré à Databricks ou Jupyter ?+

Databricks : encapsulation des calculs migrés en notebooks PySpark, orchestration via Databricks Workflows ou Airflow. Versioning Git, CI/CD via Databricks Repos. Jupyter : pour l'exploration ad hoc et la documentation interactive des calculs métier. Production : packaging Python (poetry ou uv), exécution dans des conteneurs Docker orchestrés par Kubernetes ou serverless (Cloud Run, Lambda). Voir le parcours Pipelines data engineering.

Vous évaluez une migration COBOL vers Python ?

Trois manières de démarrer — du POC sur votre code au programme complet. Python convient parfaitement aux batchs analytiques et aux calculs scientifiques ; nous excluons explicitement les transactionnels critiques (orientés Java/.NET).