Ir al contenido

reescritura de legacy

Modernización de aplicaciones legacy: reescrita y en producción en 30 días

Hay en su edificio un servidor que nadie se atreve a reiniciar, y todo el mundo sabe cuál es. Lo tomamos, lo reescribimos en Go, Rust y TypeScript con ingenieros de 25+ años en producción, y en 30 días está en vivo.

Envíe hoy el stack. En 48 horas un ingeniero vuelve con un precio cerrado y una fecha de inicio.

Hoy

PHP 5.6, un cliente VB6, un núcleo Java que solo compila en una máquina y el servidor que nadie reinicia.

  • app.phpPHP 5.6
  • legacy.dllVB6
  • reports.cfmColdFusion
  • crystal reportsunsupported
  • ftp-dropplaintext

30 días, con el sistema antiguo sirviendo producción cada uno de ellos

Día 30

Go en el núcleo, TypeScript delante, Postgres debajo y los servidores viejos apagados.

  • coreGo
  • reportingGo · read replica
  • webTypeScript
  • transferSFTP · signed
Primero medimos el código muerto y lo borramos. Es el trabajo más barato del proyecto y rebaja el precio antes de que escribamos una línea.

De su repositorio a producción en 30 días

Un módulo recibe tráfico real solo cuando coincide con el antiguo sobre su propio tráfico grabado. Así se cumple la fecha del contrato.
  1. 01días 1–4

    Mapear todo el sistema

    La plataforma lee cada línea: grafo de llamadas, tareas programadas, interfaces externas y el código muerto, medido. El día 4 tiene en la mano un mapa de módulos y un plan con fecha en cada fase.

  2. 02días 3–7

    Colocar la costura

    Una frontera por la que pasa el tráfico de producción, para que código viejo y nuevo corran en paralelo y podamos compararlos. Sus usuarios no notan ningún cambio.

  3. 03días 6–25

    Reescribir módulo a módulo

    Cada módulo sale detrás de la costura, reproduce su tráfico grabado y toma el relevo cuando las salidas coinciden. Su equipo sigue publicando funcionalidades todo el tiempo.

  4. 04días 24–30

    Apagar el sistema antiguo

    Borramos el código viejo, cancelamos las licencias y apagamos los servidores. Desde el día 30 mantiene un solo sistema y dejan de llegar las facturas del antiguo.

Nuestra plataforma traduce, nuestros ingenieros deciden

Nuestros modelos ajustados traducen a velocidad de máquina. Lo que el código debe significar lo deciden ingenieros con más de 25 años en producción.
  • Leer todo el código y construir el grafo de llamadas

    Plataforma

    Incluido el dialecto que ya nadie soporta y el archivo que se genera desde 2009.

  • Medir el código muerto

    Plataforma

    Alcanzabilidad estática más sus trazas de producción. Lo que nunca se ejecuta se borra, y el precio baja con ello.

  • Traducir cada módulo a Go idiomático

    Plataforma

    Primera pasada a máquina, revisada como pull request y reescrita a mano donde el revisor deja de seguirla.

  • Decidir qué comportamiento es un bug y cuál es una regla

    Ingeniero

    El sistema lleva doce años redondeando igual y alguien aguas abajo construyó encima. Encontramos a ese alguien.

  • Banco de paridad y conciliación de datos

    Ambos

    Captura, reproducción y conciliación fila a fila corren de nuestra cuenta. Su lado aprueba qué diferencias son intencionadas.

  • Corte y vuelta atrás

    Ingeniero

    Elegimos la noche, llevamos la guardia y escribimos la vuelta atrás antes de que nadie la necesite.

Cada módulo pasa por un ingeniero sénior antes de atender una sola petición, así que el día 31 su equipo tiene un código que puede leer.

Los mejores ingenieros que puede poner sobre este sistema

Nuestros ingenieros escriben código de producción desde hace más de un cuarto de siglo. Escritorios en VB6 y Delphi, ASP clásico y ColdFusion, monolitos en PHP 4, crons en Perl, paquetes PL/SQL, Oracle Forms, Java anterior a Maven: decenas de migraciones, todas aterrizadas en Go, Rust y TypeScript. Su dialecto ya lo han reescrito antes.

Precio cerrado antes de empezar, la fecha de puesta en producción en el contrato y el código es suyo. Una fase que no alcanza la paridad sobre su propio tráfico grabado no se acepta.

Lo que preguntan los CTO antes de firmar

¿Puede mi equipo seguir publicando funcionalidades durante la reescritura?

Sí. Las funcionalidades entran en el módulo antiguo hasta el día en que se porta, y el banco de paridad detecta todo lo que haya cambiado por debajo. Su calendario de releases no se toca. Envíe hoy el stack, y el plan que le devolvemos muestra qué módulo se mueve qué día.

¿Por qué reescribir si podemos refactorizar lo que tenemos?

Refactorizar conserva el runtime sin soporte, la toolchain que vive en una sola máquina y el problema de contratación que traen ambos. Una reescritura los elimina, y queda hecha en 30 días. Envíe hoy el stack y en 48 horas puede poner nuestro precio cerrado al lado de otro año de parches.

¿El código traducido a máquina será mantenible?

Sí. Cada módulo se genera como Go idiomático, se revisa como cualquier pull request y se reescribe a mano donde el revisor deja de seguirlo. Sus ingenieros revisan ellos mismos el primer módulo antes de seguir. Pida presupuesto y elija el módulo con el que nos van a juzgar.

Nuestro sistema pasa holgadamente del millón de líneas. ¿Se mantienen los 30 días?

Sí. La plataforma lee un millón de líneas en una pasada, y dividimos el trabajo en fases que aterrizan cada una en su fecha. El tamaño cambia cuántos ingenieros ponemos. Los 30 días se quedan. Envíe hoy el número de líneas y reciba en 48 horas el plan de fases con precio en cada una.

¿Cómo pueden cerrar un precio sobre un código que apenas han visto?

La plataforma mide el tamaño de los módulos, el acoplamiento y cuánto código sigue ejecutándose, y el precio sale de esas cifras. Ingenieros con 25+ años en producción las revisan antes de que la cifra le llegue. Envíe hoy el sistema y el precio y la fecha de inicio están en su bandeja en 48 horas.

Envíenos hoy el sistema

Cuéntenos el stack, el tamaño y la fecha que le obliga a moverse. En 48 horas tiene un precio cerrado y una fecha de inicio. En 30 días el sistema nuevo corre en producción y el viejo está apagado.

Pedir presupuesto

Diez minutos para rellenarlo. Lo lee y le contesta un ingeniero con más de 25 años en producción.