Aller au contenu

Plateforme

Un million de lignes legacy, en Go ou en Rust en 30 jours.

Des modèles affinés lisent tout le dépôt en une passe et le réécrivent tranche par tranche. Chaque tranche est rejouée sur votre trafic de production puis validée par l'un de nos meilleurs ingénieurs, qui livre du code en production depuis plus de 25 ans.

codehero · pipeline

  1. Ingestion

    Tout ce que contient l'arbre

  2. Carte

    Un seul graphe de dépendances

  3. Réécriture

    Tranche par tranche

  4. Contrôle

    Parité sur trafic réel

  5. Livraison

    Bascule sans fenêtre de maintenance

Pipeline

Cinq étapes automatisées, chacune validée par un ingénieur senior.

Le même pipeline avale un monolithe PHP comme un million de lignes de COBOL. Le modèle qui lit le code change avec le dialecte. L'ingénieur qui signe a toujours plus de 25 ans de code en production derrière lui.
  1. 01

    Ingestion

    Tout ce que contient l'arbre

    Sources, scripts de build, planifications de jobs, schémas et procédures stockées entrent ensemble. Chaque langage de l'arbre est analysé en parallèle.

  2. 02

    Carte

    Un seul graphe de dépendances

    Modules, appels, flux de données et code mort atterrissent dans un seul graphe. Les frontières de services se lisent directement dans sa structure.

  3. 03

    Réécriture

    Tranche par tranche

    Des modèles affinés réécrivent une tranche délimitée à la fois en Go, Rust, TypeScript ou SQL idiomatique, tests écrits en premier.

  4. 04

    Contrôle

    Parité sur trafic réel

    Les entrées de production enregistrées sont rejouées sur l'ancien système et sur le nouveau. Nous corrigeons chaque écart, ou vous le validez par écrit.

  5. 05

    Livraison

    Bascule sans fenêtre de maintenance

    Le trafic bascule tranche par tranche. L'ancien système reste chaud en réserve jusqu'à ce que le nouveau porte toute la charge.

Modèles affinés

Entraînés sur le code que tout le monde a oublié.

Les modèles de pointe écrivent du bon code pour le GitHub d'aujourd'hui. Les systèmes legacy sont écrits dans des dialectes qui y existent à peine. Nous avons affiné nos modèles sur des paires de code legacy et moderne : ils savent ce que signifie un copybook, comment une étape JCL passe un dataset à la suivante et ce que faisait vraiment une action Struts. Envoyez-nous votre système, sous 48 heures vous savez exactement ce qu'il faut.

Dialectes sur lesquels les modèles sont entraînés

  • COBOL
  • JCL
  • CICS
  • RPG IV
  • PL/I
  • Natural
  • Fortran
  • VB6
  • Delphi
  • PowerBuilder
  • ColdFusion
  • PHP 4–5
  • Perl
  • Classic ASP
  • Java EE
  • Struts
  • PL/SQL
  • T-SQL
  • DB2 SQL
  • Oracle Forms
  • ABAP
  • AngularJS
  • Un spécialiste par famille

    Un affinage distinct pour le mainframe, le midrange, le desktop, le web et les données. Chacun connaît les idiomes de sa famille et sait où sont les pièges.

  • Un code que votre équipe voudra garder

    Du Go, du Rust ou du TypeScript idiomatique, avec les noms, les tests et la structure qu'écrirait un ingénieur senior. Votre équipe le lit dès le premier jour.

  • Votre code reste le vôtre

    Votre dépôt n'entraîne jamais nos modèles sans votre accord écrit. Sur site, les poids restent eux aussi dans vos murs.

Graphe de production réel

Voici comment la plateforme voit un système.

C'est un service Go en production. Nous avons remplacé les noms de packages par M01 à M45 et laissé la structure exactement telle quelle. Faites glisser le curseur de l'état actuel du code jusqu'à son découpage le long des frontières de domaine. La classe de chaque nœud sort du graphe lui-même : un module qui tient dans un seul domaine se réécrit mécaniquement, et un module que quatre domaines retiennent revient à un ingénieur qui coupe la frontière à la main. Votre système reçoit cette carte dans ses 3 premiers jours.

État actuel

Réécriture mécanique60%

Frontière coupée par un ingénieur29%

Candidat à la suppression11%

45 modules, 167 dépendances et 45,990 lignes réparties sur 7 domaines. Graphe réel d'un service en production, noms de packages retirés, aucune autre retouche. Les trois classes sont comptées à partir de la structure du graphe elle-même.
Le même graphe en tableau
Trié par taille. Un module est mécanique quand il tient dans un seul domaine, il part chez un ingénieur quand trois domaines ou plus en dépendent ou qu'il est pris dans un cycle, et il devient candidat à la suppression quand rien ne l'importe et qu'il n'est pas un point d'entrée.
ModuleLignesImporté parImporteDomaineClasse
M01326loc010S01Réécriture mécanique
M02142loc03S02Réécriture mécanique
M0355loc03S02Réécriture mécanique
M0489loc03S02Réécriture mécanique
M055,194loc315S03Frontière coupée par un ingénieur
M06239loc51S03Frontière coupée par un ingénieur
M07884loc200S03Frontière coupée par un ingénieur
M08485loc46S03Réécriture mécanique
M099,835loc47S03Frontière coupée par un ingénieur
M10514loc20S03Réécriture mécanique
M11677loc15S03Réécriture mécanique
M12236loc411S03Frontière coupée par un ingénieur
M13187loc33S04Frontière coupée par un ingénieur
M14454loc11S05Réécriture mécanique
M1558loc31S05Réécriture mécanique
M16356loc42S05Réécriture mécanique
M17247loc42S05Réécriture mécanique
M1859loc31S04Frontière coupée par un ingénieur
M19139loc00S04Candidat à la suppression
M20330loc132S04Frontière coupée par un ingénieur
M21414loc11S06Réécriture mécanique
M221,670loc33S06Réécriture mécanique
M231,218loc180S06Frontière coupée par un ingénieur
M242,574loc153S06Frontière coupée par un ingénieur
M25163loc41S04Frontière coupée par un ingénieur
M26251loc25S04Réécriture mécanique
M27161loc12S04Réécriture mécanique
M2899loc20S04Réécriture mécanique
M2945loc00S04Candidat à la suppression
M3025loc00S04Candidat à la suppression
M311,417loc240S04Frontière coupée par un ingénieur
M3282loc10S04Réécriture mécanique
M3330loc41S04Frontière coupée par un ingénieur
M34141loc31S03Réécriture mécanique
M3579loc11S03Réécriture mécanique
M363,036loc310S03Réécriture mécanique
M37173loc11S03Réécriture mécanique
M382,501loc19S03Réécriture mécanique
M391,452loc34S03Réécriture mécanique
M4050loc11S03Réécriture mécanique
M412,148loc09S01Candidat à la suppression
M42167loc01S01Candidat à la suppression
M434,873loc215S07Réécriture mécanique
M442,241loc110S07Réécriture mécanique
M45474loc213S07Réécriture mécanique

Banc de parité

Mêmes entrées, mêmes sorties, au centime près.

Chaque tranche fait passer les mêmes entrées enregistrées dans l'ancien système et dans le nouveau. Nous comparons les sorties champ par champ, jusqu'au centime, et une tranche ne part en production que lorsque le diff est vide. C'est pour cela que la date entre au contrat.

  • Votre trafic de production enregistré sert de suite de tests
  • Comparaison champ par champ, arrondis et cas limites de dates compris
  • Chaque écart accepté validé par vous, par écrit
Système legacyNouveau systèmeDiff
  • ACCT 0048213 41.36ACCT 0048213 41.36
  • ACCT 0048214 0.00ACCT 0048214 0.00
  • ACCT 0051120 1,208.04ACCT 0051120 1,208.04
  • ACCT 0051121 17.90ACCT 0051121 17.90
  • ACCT 0060007 342.11ACCT 0060007 342.11
  • ACCT 0060008 5.02ACCT 0060008 5.02
Diff0 écart

Les alternatives

Trois façons de moderniser. Une seule tient en 30 jours.

Réécriture manuelleOutils IA génériquesCodeHero
Délai de mise en productionDes mois, voire des annéesFlou, cale à grande échelle30 jours par phase
PrixEn régieLe temps de vos ingénieursFerme par phase, chiffré sous 48 heures
Preuve du comportementRecette manuelleAucuneParité sur votre propre trafic
Contexte du dépôt entierDans la tête des gensQuelques fichiers à la foisUn graphe, tous les langages
Fonctionne en air gapOuiRarementOui, sur notre matériel ou le vôtre
Qui est responsableUne grosse équipeVousUn ingénieur senior à 25+ ans de métier