Zum Inhalt springen

Dutzende Migrationen

Java, Python, COBOL und VB6 neu geschrieben in Go, Rust und TypeScript in 30 Tagen

Nicht nur der Mainframe. Ein Java-Monolith auf acht Servern, Python, das am GIL hängt, ein Node-Dienst, der Speicher schneller frisst als er Anfragen beantwortet — daraus wird Go und Rust, und die Infrastrukturrechnung sinkt mit. Dazu COBOL auf z/OS, RPG auf der AS/400, VB6 und Delphi auf dem Desktop, ColdFusion und PHP im Web, Perl, PL/SQL, Fortran und ABAP. Unsere Plattform liest die gesamte Codebasis und schreibt sie neu, unsere Ingenieure übernehmen die Stellen, an denen ein Irrtum teuer wird, und das alte System läuft die ganze Zeit weiter.

Vier Bildschirme, etwa zehn Minuten. Ein Ingenieur liest es und meldet sich mit Umfang, Termin und Preis — ohne Demo, ohne Vertriebsstrecke.

30
Tage, die Obergrenze für jedes Projekt
20
Legacy-Stacks, die wir migrieren
10+
Jahre in fremden Systemen
1M+
Zeilen in einem Neuaufbau

Jedes System, das wir vom Tropf nehmen

Dutzende Migrationen, quer durch alle Stacks unten — vom Java-Monolithen, der acht Server verheizt, bis zu COBOL, das seit 2011 niemand kompiliert hat. Jede einzelne geht in dreißig Tagen live. Suchen Sie Ihren heraus und sehen Sie, was der Umzug umfasst.

Ein echter Abhängigkeitsgraph

Das ist ein Go-Service aus dem Produktivbetrieb, die Paketnamen durch M01 bis M45 ersetzt, die Struktur unverändert. Ziehen Sie den Regler vom heutigen Stand zur Aufteilung entlang der Domänengrenzen. Die Klasse an jedem Knoten folgt aus dem Graphen selbst: Ein Modul, das in einer einzigen Domäne liegt, wird maschinell neu geschrieben; hängen vier Domänen daran, schneidet ein Entwickler die Grenze von Hand.

Heutiger Stand

Maschinell neu geschrieben60%

Grenze von Hand geschnitten29%

Löschkandidat11%

45 Module, 167 Abhängigkeiten und 45,990 Zeilen über 7 Domänen. Echter Graph aus einem Service im Produktivbetrieb, Paketnamen entfernt, sonst nichts geändert. Die drei Klassen sind aus der Struktur des Graphen selbst gezählt.
Derselbe Graph als Tabelle
Nach Größe sortiert. Maschinell heißt: Das Modul liegt in einer Domäne. Es geht an einen Entwickler, wenn drei oder mehr Domänen davon abhängen oder es in einem Zyklus steckt. Löschkandidat wird es, wenn nichts es importiert und es kein Einstiegspunkt ist.
ModulZeilenImportiert vonImportiertDomäneKlasse
M01326loc010S01Maschinell neu geschrieben
M02142loc03S02Maschinell neu geschrieben
M0355loc03S02Maschinell neu geschrieben
M0489loc03S02Maschinell neu geschrieben
M055,194loc315S03Grenze von Hand geschnitten
M06239loc51S03Grenze von Hand geschnitten
M07884loc200S03Grenze von Hand geschnitten
M08485loc46S03Maschinell neu geschrieben
M099,835loc47S03Grenze von Hand geschnitten
M10514loc20S03Maschinell neu geschrieben
M11677loc15S03Maschinell neu geschrieben
M12236loc411S03Grenze von Hand geschnitten
M13187loc33S04Grenze von Hand geschnitten
M14454loc11S05Maschinell neu geschrieben
M1558loc31S05Maschinell neu geschrieben
M16356loc42S05Maschinell neu geschrieben
M17247loc42S05Maschinell neu geschrieben
M1859loc31S04Grenze von Hand geschnitten
M19139loc00S04Löschkandidat
M20330loc132S04Grenze von Hand geschnitten
M21414loc11S06Maschinell neu geschrieben
M221,670loc33S06Maschinell neu geschrieben
M231,218loc180S06Grenze von Hand geschnitten
M242,574loc153S06Grenze von Hand geschnitten
M25163loc41S04Grenze von Hand geschnitten
M26251loc25S04Maschinell neu geschrieben
M27161loc12S04Maschinell neu geschrieben
M2899loc20S04Maschinell neu geschrieben
M2945loc00S04Löschkandidat
M3025loc00S04Löschkandidat
M311,417loc240S04Grenze von Hand geschnitten
M3282loc10S04Maschinell neu geschrieben
M3330loc41S04Grenze von Hand geschnitten
M34141loc31S03Maschinell neu geschrieben
M3579loc11S03Maschinell neu geschrieben
M363,036loc310S03Maschinell neu geschrieben
M37173loc11S03Maschinell neu geschrieben
M382,501loc19S03Maschinell neu geschrieben
M391,452loc34S03Maschinell neu geschrieben
M4050loc11S03Maschinell neu geschrieben
M412,148loc09S01Löschkandidat
M42167loc01S01Löschkandidat
M434,873loc215S07Maschinell neu geschrieben
M442,241loc110S07Maschinell neu geschrieben
M45474loc213S07Maschinell neu geschrieben

unter der Haube

Eine Million Zeilen ist die normale Größe

Unsere Plattform liest die gesamte Codebasis auf einmal — jede Sprache im Baum, parallel — und baut daraus ein modernes System statt einer Transliteration des alten. Das Verhalten wird am Original festgehalten und gegen Ihren aufgezeichneten Verkehr geprüft. Die Architektur nicht: Sie bekommen Services, ein echtes Schema und einen Deploy, wie Software heute geschrieben wird.
  • Jede Sprache im Baum, gleichzeitig

    Systeme bestehen nie aus einer Sprache. COBOL ruft JCL, JCL startet ein C-Werkzeug, ein Perl-Skript korrigiert die Datei, bevor PL/SQL sie lädt. Die Plattform liest alles parallel und hält einen Graphen über das Ganze — deshalb fällt an den Nähten zwischen den Sprachen nichts heraus.

  • Weniger Maschinen für dieselbe Last

    Ein Java- oder Python-Dienst, in Go neu geschrieben, braucht meist einen Bruchteil des Speichers und einen Bruchteil der Instanzen, und ein Rust-Kern macht aus einem Batch-Fenster eine Kaffeepause. Genau darum verschiebt man Code, der nicht kaputt ist: gleiches Verhalten bei kleinerer Rechnung, und Luft nach oben, die Sie nicht mehr kaufen müssen.

  • Eine Million Zeilen und mehr

    Das ist die Größe, mit der wir planen, nicht die Obergrenze. Darüber teilen wir die Schätzung und bepreisen den ersten Teil einzeln. Größe ist hier eine Frage der Planung, nicht der Machbarkeit.

  • Gleiches Verhalten, neue Architektur

    Ein Vergleichsprüfstand spielt Ihren aufgezeichneten Produktivverkehr gegen alt und neu und vergleicht auf den Cent. Was sich ändert, ist die Form: Services mit Verantwortlichen, ein lesbares Schema, Tests, die mit dem Code entstanden sind, und ein Deploy ohne Wartungsfenster.

  • Air-Gap, auf Ihrer Hardware oder unserer

    Für regulierte Arbeit kommen die Modelle von uns und laufen in Ihrem Perimeter ganz ohne ausgehende Verbindung. Fehlen Ihnen Maschinen, die das tragen, vermieten wir Ihnen unsere, und sie stehen bei Ihnen. Nichts von Ihrem Code muss das Haus verlassen.

Ihre Cloud, Ihr Rechenzentrum, ein Kunden-VPN oder ein Raum ganz ohne Netz — für jede dieser Varianten gibt es einen laufenden Aufbau, und die Einzelheiten stehen im Vertrag.

Wie die Arbeit läuft

Vier Stufen, auf einer Million Zeilen COBOL dieselben wie auf einem PHP-Monolithen. Die ersten beiden sind die Analyse, und die Karte gehört Ihnen so oder so.
  1. 01

    Lesezugriff

    Eine Kopie des Repositories mit Leserecht, die Build-Skripte und die Runbooks, die überlebt haben. Ihre NDA unterschreiben wir vorher, wenn das bei Ihnen so üblich ist.

  2. 02

    Die Karte

    Die Plattform parst alles und meldet, was wirklich da ist: Module und ihre Abhängigkeiten, Code, den niemand mehr aufruft, geplante Jobs, die keiner dokumentiert hat, und die Stelle, an der der Build nur auf einer Maschine funktioniert. Das liegt vor, bevor irgendetwas neu geschrieben wird.

  3. 03

    Neuschreiben in Scheiben

    Ein abgegrenztes Modul nach dem anderen, mit Tests gegen das Verhalten des Originals. Alt und neu laufen auf denselben Eingaben, bis die Ausgaben übereinstimmen, dann wandert der Verkehr. Nichts wird an einem einzigen Stichtag umgestellt.

  4. 04

    Übergabe

    Ihre Entwickler bekommen das Repository, die unterwegs geschriebenen Tests und die Karte auf aktuellem Stand. Fragen beantworten wir auch danach, und wir behalten keine Schlüssel, die Sie nicht entziehen können.

Fragen Sie zuerst nach der Karte

Die Karte ist das Billigste, was wir verkaufen, und die einzige belastbare Grundlage, um den Rest zu bepreisen. Sagen Sie uns, was bei Ihnen läuft, und wir melden uns damit, was darin steckt, wie lange ein Neuschreiben dauert und was es kostet.

Das Formular geht an uns, nicht in eine Vertriebsstrecke. Für eine Antwort müssen Sie keine Demo über sich ergehen lassen.