La historia detrás de una falla en el software de una empresa de trading que, en apenas 37 minutos, le hizo perder US$457 millones. La importancia de una codificación cuidadosa y de las prácticas de implementación seguras en entornos críticos.
En el mundo del desarrollo de software, los errores pueden ser costosos, pero pocos alcanzan el nivel de catástrofe financiera que sufrió una empresa de trading de alta frecuencia en agosto de 2012. En un esfuerzo por adaptar su bot de trading a un nuevo servicio API del NYSE en un tiempo récord de 33 días, los desarrolladores trabajaron semanas de 80 horas sin descanso. El bot, originalmente escrito en C++, debía mantener la misma estructura de clases y métodos para facilitar su integración sin necesidad de "recompilar" de forma constante, según explicó el ingeniero de software Theodore Smith, de PHP Experts, en un posteo reciente.
El equipo reemplazó el código antiguo, que realizaba compras ficticias para pruebas, por el código real que ejecutaría operaciones en el mercado. Después de exhaustivas pruebas y verificaciones, el nuevo sistema se desplegó a las 8 AM, hora de Nueva York, apenas 90 minutos antes de la apertura del mercado. Los desarrolladores, satisfechos con su logro, se dirigieron a una reunión, dejando sus teléfonos en sus escritorios.
A las 9:30 AM, el mercado abrió y el bot comenzó a operar. Sin embargo, en lugar de seguir las instrucciones programadas, el bot empezó a comprar acciones al precio más alto disponible, a una velocidad de 5 millones de acciones por segundo. En cuestión de minutos, la empresa se encontraba en una situación crítica, con sus reservas de efectivo de US$2.500 millones agotándose rápidamente.
Los intentos de contactar a los desarrolladores fueron inútiles ya que estaban en una oficina remota en Nueva Jersey, con sus teléfonos silenciados. El caos se apoderó de la sede de la empresa en Manhattan, hasta que finalmente, después de 11 minutos, los desarrolladores se dieron cuenta de la situación. Desesperados, decidieron apagar los servidores a la fuerza, una medida extrema que implicó destruir físicamente las máquinas con hachas.
A pesar de detener las operaciones en 37 minutos, la empresa ya había perdido miles de millones. La intervención de Goldman Sachs, que compró las acciones a un precio con descuento, limitó la pérdida real a US$457 millones. Sin embargo, el daño a la reputación y la pérdida de clientes llevaron a la disolución de la compañía.
La causa del error fue un fallo humano durante la implementación del nuevo código. Un administrador del sistema omitió sincronizar uno de los ocho servidores, dejando el antiguo código de pruebas en funcionamiento. Este error, combinado con la decisión de mantener la misma firma de método para el nuevo código, permitió que el servidor fallido operara bajo las condiciones de prueba, comprando acciones indiscriminadamente.
Esta pequeña "tragedia" de la historia informática, en la que este agosto cumple 12 años, subraya la importancia de adoptar prácticas de desarrollo e implementación seguras, como la integración y entrega continuas (CI/CD), y de asegurar la supervisión constante en entornos de producción críticos. La historia de este "horror" más que error sirve como una advertencia sobre los riesgos de la codificación apresurada y la falta de controles adecuados en el desarrollo de software.
Comments