Comment moderniser un mainframe COBOL

Quatre stratégies, ce que chacune vous coûte réellement, et comment déterminer celle requise pour une charge de travail donnée. Rédigé pour les personnes qui doivent valider la décision.

La plupart des conseils sur la modernisation des mainframes se résument à une seule question : migrer ou non. C'est cette approche qui explique pourquoi tant de programmes s'enlisent. Une grande institution ne possède pas une seule charge de travail mainframe. Elle en compte des centaines, et toutes ne justifient pas le même traitement. La décision pertinente se prend par charge de travail, et il existe quatre réponses défendables.

Les quatre stratégies

01

Réhébergement

Déplacer la charge de travail telle quelle vers un émulateur ou une instance cloud sans modifier le code.

Good for
Les charges de travail dont la logique métier est toujours correcte et où la pression porte sur les coûts matériels, la capacité ou la fermeture d'un centre de données.
What it costs
L'approche la plus rapide et la moins risquée par charge de travail. Le code continue de s'exécuter, le comportement est donc préservé presque par construction.
The catch
Vous avez déplacé le problème, vous ne l'avez pas résolu. Le COBOL reste du COBOL, les règles métier non documentées le restent, et les personnes qui le comprennent sont toujours les seules à le comprendre. Réhéberger une charge de travail que vous ne pouvez pas expliquer permet de gagner du temps, rien de plus.
02

Replateformage

Remplacer la couche d'exécution (base de données, gestionnaire de transactions, planificateur) tout en laissant le code applicatif globalement intact.

Good for
S'affranchir d'une facturation au MIPS ou d'un sous-système en fin de vie lorsque la logique applicative est saine.
What it costs
Une voie intermédiaire. Moins de risques qu'une réécriture, plus de bénéfices qu'un lift-and-shift.
The catch
C'est dans les interfaces entre le code applicatif et l'environnement d'exécution que se cachent des décennies d'hypothèses non documentées. Une migration de DB2 vers PostgreSQL n'est pas un simple rechercher-remplacer. Les niveaux d'isolation, les règles d'interclassement et la gestion des valeurs nulles diffèrent, ce qui se manifeste par des valeurs erronées plutôt que par des plantages.
03

Refactorisation

Réécrire le code dans un langage moderne tout en préservant la logique métier.

Good for
Les charges de travail qui doivent évoluer souvent, où la rareté de COBOL est la contrainte sur la feuille de route plutôt que sur l'exploitation.
What it costs
Le coût le plus élevé et le potentiel le plus grand. Bien exécutée, elle élimine définitivement la dépendance aux compétences.
The catch
C'est la stratégie qui échoue publiquement. La cause de l'échec n'est jamais la syntaxe, car les transpilateurs s'en chargent. Le problème est que la spécification n'a jamais été rédigée, personne ne peut donc dire si le nouveau système est correct. Vous ne migrez pas du code, vous reconstituez une spécification qui n'existe que sous forme de comportement.
04

Conserver

Laisser délibérément la charge de travail sur le mainframe.

Good for
Les charges de travail stables et à haut débit qui sont peu coûteuses à exploiter et changent rarement. Le règlement par lots en est souvent l'exemple le plus évident.
What it costs
Rien, si vous faites ce choix délibérément et documentez pourquoi.
The catch
La conservation est une véritable stratégie et elle est sous-utilisée, car il est difficile de la présenter à un conseil d'administration. Mais conserver sans documenter n'est pas une stratégie, c'est un report. Vous perdez tout de même les connaissances lorsque l'équipe part à la retraite.

Comment choisir, par charge de travail

Quatre questions permettent de déterminer la stratégie requise pour chaque charge de travail. Répondez-y par application, et non par portefeuille.

À quelle fréquence ce code est-il réellement modifié ?
Basez-vous sur l'historique des modifications, pas sur des opinions. Un code qui n'a pas été modifié depuis huit ans est un candidat à la conservation ou au réhébergement, peu importe l'ancienneté du langage. Un code accumulant les modifications en attente est celui pour lequel la refactorisation s'avère rentable.
Quelqu'un peut-il actuellement expliquer ce qu'il fait ?
Si la réponse dépend d'une ou deux personnes identifiées, aucune stratégie de migration n'est encore sûre. La documentation et la capitalisation des connaissances sont des prérequis, et non des livrables à produire au fur et à mesure.
Quel est le coût d'une erreur ?
Un calcul d'intérêts mal imputé et un rapport lent ne présentent pas le même risque. Plus le coût d'un écart de comportement silencieux est élevé, plus la migration nécessite de vérifications, et plus l'équation économique penche en faveur du maintien ou du réhébergement.
Qu'est-ce qui impose réellement ce changement ?
Les coûts matériels, une échéance de conformité, une pénurie de compétences et une feuille de route produit orientent vers des stratégies différentes. Les programmes qui ne parviennent pas à identifier le facteur déclencheur ont tendance à adopter par défaut l'option la plus coûteuse.

Pourquoi les migrations de COBOL vers Java échouent

La voie du refactoring mérite d'être traitée à part, car c'est elle qui fait les gros titres. Les schémas d'échec récurrents sont constants d'une institution à l'autre.

Les spécifications n'ont jamais été rédigées

Quarante ans de modifications résident dans le code et nulle part ailleurs. Toute réécriture est donc d'abord un travail d'archéologie, puis d'ingénierie. Les équipes qui font l'impasse sur l'archéologie découvrent les règles manquantes en production.

La dérive comportementale est silencieuse

L'arithmétique décimale condensée de COBOL et la virgule flottante de Java ne produisent pas les mêmes arrondis. Des différences d'un centime par transaction ne lèvent pas d'exceptions ; elles faussent les rapprochements en fin de trimestre, bien après que la migration a été déclarée terminée.

Les tests codifient le comportement actuel, pas le comportement correct

Une suite de tests concluante écrite pour le système hérité prouve que le nouveau système reproduit ce que faisait l'ancien sur les chemins que quelqu'un a pensé à tester. Les portefeuilles réels contiennent des chemins que personne n'a exécutés délibérément depuis une décennie.

La recertification réglementaire n'est pas gratuite

Dans la banque, l'assurance et le secteur public, un système réécrit est souvent considéré comme un nouveau système lors des audits. Ce coût doit être intégré à l'analyse de rentabilité dès le départ, et non être découvert au bout de neuf mois.

Les experts partent en cours de programme

Les programmes pluriannuels se heurtent directement à la courbe des départs à la retraite des personnes dont ils dépendent. Ces connaissances doivent être recueillies avant le début du programme, car elles ne seront plus disponibles au moment où l'on en aura le plus besoin.

La question qui change l'équation économique

Toutes les stratégies ci-dessus sont soumises à la même contrainte : pouvez-vous prouver que le système fait toujours ce qu'il faisait ? Les tests échantillonnent l'espace des entrées. La vérification formelle raisonne sur l'ensemble de cet espace, prouvant que pour chaque entrée, le traitement modernisé produit le même résultat que le système d'origine. Lorsque cette preuve est disponible, le refactoring cesse d'être un acte de foi pour devenir un exercice d'ingénierie maîtrisé, et la question du coût d'une erreur posée plus haut trouve une nouvelle réponse. Lorsqu'elle ne l'est pas, le conservatisme est la posture adéquate.

Où s'intègre Hypercubic

Nous développons pour l'archéologie et la preuve, dans cet ordre. HyperDocs reconstruit la documentation à partir des sources COBOL, PL/I et JCL. HyperTwin capture les connaissances de vos ingénieurs seniors avant leur départ à la retraite. Hopper gère les opérations z/OS au quotidien. HyperLoop effectue la migration proprement dite avec des preuves d'exactitude ligne par ligne. Si vous en êtes à un stade où les deux premiers importent plus que les deux derniers, c'est la séquence honnête.

Questions fréquentes

Quelles sont les quatre stratégies de modernisation mainframe ?
Le réhébergement, le changement de plateforme, la refonte et le maintien. Le réhébergement déplace la charge de travail vers un émulateur ou une instance cloud sans modifier le code. Le changement de plateforme remplace la couche d'exécution (base de données, gestionnaire de transactions, ordonnanceur) tout en laissant le code de l'application intact. La refonte réécrit le code dans un langage moderne tout en préservant la logique métier. Le maintien conserve délibérément la charge de travail sur le mainframe. Les grandes institutions en appliquent généralement plusieurs sur un même portefeuille plutôt que d'en choisir une seule.
Dois-je réhéberger ou refactoriser mes applications COBOL ?
Cela dépend de la fréquence de modification du code et du coût d'une erreur. Le réhébergement est plus rapide et présente moins de risques, mais il conserve à la fois le code hérité et la dépendance aux compétences. Il convient donc aux charges de travail stables soumises à des contraintes matérielles ou liées au centre de données. La refactorisation supprime définitivement la dépendance à COBOL et convient aux charges de travail ayant un backlog de modifications actif, mais elle coûte plus cher et échoue lorsque les règles métier d'origine n'ont jamais été documentées. Prenez cette décision pour chaque charge de travail en vous basant sur l'historique des modifications, plutôt qu'à l'échelle du portefeuille.
Pourquoi les migrations de COBOL vers Java échouent-elles ?
Rarement à cause de la syntaxe. Elles échouent parce que les spécifications n'ont jamais été rédigées, il est donc impossible de prouver que le système réécrit est correct ; parce que l'arithmétique diffère entre le format décimal condensé de COBOL et la virgule flottante de Java, produisant des dérives d'arrondi silencieuses plutôt que des plantages ; parce que les suites de tests encodent le comportement actuel sur les chemins que quelqu'un a pensé à tester, plutôt que le comportement correct sur tous les chemins ; parce que les coûts de recertification réglementaire sont découverts tardivement ; et parce que les experts qui comprennent le système partent à la retraite pendant le programme.
Combien de temps prend la modernisation mainframe ?
Cela dépend bien plus du niveau de compréhension du système existant que du volume de code. Les portefeuilles dotés d'une documentation à jour et d'experts métiers disponibles avancent en quelques trimestres. Pour les portefeuilles où les règles de gestion n'existent qu'à travers le comportement du système, la majeure partie du temps est consacrée à la phase de découverte avant même de commencer la migration. C'est pourquoi la documentation et la capitalisation des connaissances sont des prérequis, et non des chantiers menés en parallèle.
Est-il parfois justifié de laisser une charge de travail sur le mainframe ?
Oui. Les charges de travail stables, à haut débit, qui évoluent rarement et dont l'exploitation est peu coûteuse (le règlement par lots en est l'exemple le plus évident) sont souvent déjà adaptées à leur finalité, et les déplacer ajoute des risques sans apporter de nouvelles capacités. Le maintien est une stratégie légitime lorsqu'il est choisi délibérément et documenté. Ce qui n'est pas une stratégie, c'est de maintenir une charge de travail que personne ne peut expliquer, car le savoir disparaît tout de même lorsque l'équipe part à la retraite.

Déterminez quelles charges de travail migrer en premier.

Échangez avec notre équipe pour cartographier votre portefeuille selon les quatre stratégies, ou commencez par le glossaire si vous constituez un vocabulaire interne.