Компания Knight Capital срочно переносила своего торгового бота на новый сервис NYSE, который должен был стартовать через 33 дня. Разработчики работали по 80 часов в неделю, стараясь уложиться в сроки. В процессе переноса было принято решение оставить старые методы и классы, чтобы избежать необходимости пересборки. Также они заменили тестовый код на новый рабочий. Тесты прошли успешно, и 1 августа в 8:00 утра код был развернут в продакшн. Все выглядело отлично.
Однако в 9:30, когда открылся рынок, бот начал активно покупать акции по завышенным ценам. Уже через две минуты стало понятно, что что-то пошло не так — деньги компании начали исчезать с катастрофической скоростью. Связаться с разработчиками не удавалось — они находились в удаленном офисе и оставили свои телефоны на столах.
Через 11 минут после начала торгов убытки превысили $3 млрд. В отчаянной попытке спасти ситуацию компания приняла радикальное решение — физически отключить серверы в дата-центре с помощью топоров. Торги прекратились только через 28 минут, оставив компанию с убытками в $8.65 млрд.
Причины и последствия
Расследование показало, что ошибка произошла из-за неверной команды rsync, введенной оператором. Один из серверов остался с тестовым кодом, который продолжал бездумно скупать акции по самым высоким ценам. Попытка откатиться к предыдущему релизу лишь усугубила проблему. Этот баг привел к потере всех корпоративных клиентов Knight Capital и полному закрытию компании через несколько недель.
Топ 3 других дорогих компьютерных багов
- Ariane 5: $370 млн за 37 секунд
4 июня 1996 года ракета Ariane 5, разработанная Европейским космическим агентством, взорвалась всего через 37 секунд после старта. Причиной стал баг в программном обеспечении, которое пыталось преобразовать данные с плавающей точкой в целые числа. Эта ошибка привела к разрушению ракеты и потере груза на сумму $370 млн. - Mars Climate Orbiter: Утерянные $327 млн
В 1999 году NASA потеряла космический аппарат Mars Climate Orbiter из-за ошибки в программном обеспечении, когда одна команда использовала метрическую систему измерений, а другая — имперскую. В результате аппарат вошел в атмосферу Марса на слишком низкой высоте и сгорел, что обошлось в $327 млн. - Flash Crash 2010: Падение рынка на $500 млрд
6 мая 2010 года американский фондовый рынок пережил резкий обвал, известный как Flash Crash. За 36 минут рынок потерял $500 млрд, прежде чем восстановиться. Причиной стал сбой в алгоритмической торговле, вызванный ошибками в программном обеспечении нескольких крупных финансовых компаний.
Эти истории напоминают о важности тщательного тестирования и проверки программного обеспечения перед его использованием в критически важных системах. Компьютерные баги могут нанести ущерб, исчисляемый в миллиардах долларов, и стать причиной краха компаний.