Ir al contenido

decenas de migraciones

Java, Python, COBOL y VB6 reescritos en Go, Rust y TypeScript en 30 días

No solo el mainframe. Un monolito Java repartido en ocho servidores, Python que chocó con el GIL, un servicio Node que se come la memoria más rápido de lo que atiende peticiones: todo eso se convierte en Go y Rust, y la factura de infraestructura baja con ello. También COBOL en z/OS, RPG en el AS/400, VB6 y Delphi en el escritorio, ColdFusion y PHP en la web, Perl, PL/SQL, Fortran y ABAP. Nuestra plataforma lee toda la base de código y la reescribe, nuestros ingenieros se quedan con las partes donde equivocarse sale caro, y el sistema viejo sigue funcionando todo ese tiempo.

Cuatro pantallas, unos diez minutos. Un ingeniero lo lee y vuelve con alcance, fecha y precio — sin demo y sin secuencia comercial.

30
días, el techo de cualquier proyecto
20
stacks legacy que migramos
10+
años dentro de sistemas ajenos
1M+
líneas en una sola reescritura

Todos los sistemas que desconectamos del respirador

Decenas de migraciones, en todos los stacks de abajo: desde un monolito Java que quema ocho servidores hasta COBOL que nadie compila desde 2011. Cada una entra en producción en treinta días. Busque el suyo y vea qué implica el traslado.

Un grafo de dependencias real

Es un servicio en Go en producción, con los nombres de paquete sustituidos por M01 a M45 y la estructura intacta. Arrastre el control para pasar de cómo está el código hoy a cómo se separa por fronteras de dominio. La clase de cada nodo sale del propio grafo: un módulo que vive dentro de un solo dominio se reescribe de forma mecánica, y uno del que tiran cuatro dominios necesita a un ingeniero que corte la frontera a mano.

Como está hoy

Reescritura mecánica60%

Frontera cortada por un ingeniero29%

Candidato a borrar11%

45 módulos, 167 dependencias y 45,990 líneas repartidas en 7 dominios. Grafo real de un servicio en producción, sin los nombres de paquete y sin ninguna otra edición. Las tres clases se cuentan a partir de la estructura del propio grafo.
El mismo grafo en tabla
Ordenado por tamaño. Un módulo es mecánico cuando cabe dentro de un solo dominio, pasa a un ingeniero cuando dependen de él tres dominios o más o está metido en un ciclo, y se vuelve candidato a borrar cuando nada lo importa y no es un punto de entrada.
MóduloLíneasImportado porImportaDominioClase
M01326loc010S01Reescritura mecánica
M02142loc03S02Reescritura mecánica
M0355loc03S02Reescritura mecánica
M0489loc03S02Reescritura mecánica
M055,194loc315S03Frontera cortada por un ingeniero
M06239loc51S03Frontera cortada por un ingeniero
M07884loc200S03Frontera cortada por un ingeniero
M08485loc46S03Reescritura mecánica
M099,835loc47S03Frontera cortada por un ingeniero
M10514loc20S03Reescritura mecánica
M11677loc15S03Reescritura mecánica
M12236loc411S03Frontera cortada por un ingeniero
M13187loc33S04Frontera cortada por un ingeniero
M14454loc11S05Reescritura mecánica
M1558loc31S05Reescritura mecánica
M16356loc42S05Reescritura mecánica
M17247loc42S05Reescritura mecánica
M1859loc31S04Frontera cortada por un ingeniero
M19139loc00S04Candidato a borrar
M20330loc132S04Frontera cortada por un ingeniero
M21414loc11S06Reescritura mecánica
M221,670loc33S06Reescritura mecánica
M231,218loc180S06Frontera cortada por un ingeniero
M242,574loc153S06Frontera cortada por un ingeniero
M25163loc41S04Frontera cortada por un ingeniero
M26251loc25S04Reescritura mecánica
M27161loc12S04Reescritura mecánica
M2899loc20S04Reescritura mecánica
M2945loc00S04Candidato a borrar
M3025loc00S04Candidato a borrar
M311,417loc240S04Frontera cortada por un ingeniero
M3282loc10S04Reescritura mecánica
M3330loc41S04Frontera cortada por un ingeniero
M34141loc31S03Reescritura mecánica
M3579loc11S03Reescritura mecánica
M363,036loc310S03Reescritura mecánica
M37173loc11S03Reescritura mecánica
M382,501loc19S03Reescritura mecánica
M391,452loc34S03Reescritura mecánica
M4050loc11S03Reescritura mecánica
M412,148loc09S01Candidato a borrar
M42167loc01S01Candidato a borrar
M434,873loc215S07Reescritura mecánica
M442,241loc110S07Reescritura mecánica
M45474loc213S07Reescritura mecánica

bajo el capó

Un millón de líneas es el tamaño normal

Nuestra plataforma lee toda la base de código de una vez — cada lenguaje del árbol, en paralelo — y la reconstruye como sistema moderno en lugar de transliterar el viejo. El comportamiento se mantiene igual al original y se comprueba contra su tráfico grabado. La arquitectura no: usted recibe servicios, un esquema de verdad y un despliegue a la altura de cómo se escribe software hoy.
  • Todos los lenguajes del árbol, a la vez

    Un sistema nunca está en un solo lenguaje. COBOL llama a JCL, JCL lanza una utilidad en C, un script Perl arregla el fichero antes de que PL/SQL lo cargue. La plataforma lo lee todo en paralelo y sostiene un único grafo sobre el conjunto: nada se cae en las costuras entre lenguajes.

  • Menos máquinas para la misma carga

    Un servicio Java o Python reescrito en Go suele necesitar una fracción de la memoria y una fracción de las instancias, y un núcleo en Rust convierte una ventana de batch en una pausa para el café. Esa es toda la razón para mover código que no está roto: el mismo comportamiento con una factura menor, y margen que ya no hay que comprar.

  • Un millón de líneas y más

    Ese es el tamaño con el que planificamos, no el techo. Por encima partimos la estimación y ponemos precio a la primera parte por separado. Aquí la escala es cuestión de planificación, no de viabilidad.

  • Mismo comportamiento, arquitectura nueva

    Un banco de comparación reproduce su tráfico de producción grabado contra el viejo y el nuevo y compara al céntimo. Lo que cambia es la forma: servicios con responsables, un esquema legible, pruebas nacidas junto al código y un despliegue que no necesita ventana de mantenimiento.

  • Air gap, en su hardware o en el nuestro

    Para entornos regulados los modelos los ponemos nosotros y corren dentro de su perímetro sin ninguna conexión saliente. Si no tiene máquinas capaces de sostenerlos, le alquilamos las nuestras y se quedan en su sala. Nada de su código tiene que salir del edificio.

Su nube, su centro de datos, una VPN de cliente o una sala sin red alguna: cada una de estas opciones tiene un montaje que funciona, y el detalle va al contrato.

Cómo va el trabajo

Cuatro etapas, iguales sobre un millón de líneas de COBOL que sobre un monolito PHP. Las dos primeras son la auditoría, y el mapa se queda con usted en cualquier caso.
  1. 01

    Acceso de lectura

    Una copia de solo lectura del repositorio, los scripts de compilación y los runbooks que hayan sobrevivido. Firmamos su NDA antes si así funciona su empresa.

  2. 02

    El mapa

    La plataforma lo analiza todo y cuenta lo que hay de verdad: los módulos y sus dependencias, el código que ya no llama nadie, las tareas programadas que nadie documentó, y el sitio donde la compilación solo funciona en una máquina. Esto llega antes de reescribir nada.

  3. 03

    Reescritura por partes

    Un módulo acotado cada vez, con pruebas escritas contra el comportamiento del original. El viejo y el nuevo corren sobre las mismas entradas hasta que las salidas coinciden, y entonces se mueve el tráfico. Nada cambia de manos en una única fecha.

  4. 04

    Entrega

    Sus ingenieros reciben el repositorio, las pruebas escritas por el camino y el mapa al día. Después respondemos preguntas, y no nos quedamos con ninguna llave que usted no pueda revocar.

Pida primero el mapa

El mapa es lo más barato que vendemos y la única base sólida para poner precio al resto. Cuéntenos qué tiene funcionando y volvemos con lo que hay dentro, lo que tarda una reescritura y lo que cuesta.

El formulario llega a nosotros, no a una secuencia comercial. No hace falta aguantar una demo para obtener una respuesta.