Knight Capital Americas была одним из крупнейших маркет-мейкеров США: около десяти процентов оборота по котируемым акциям. Первого августа 2012 года Нью-Йоркская биржа запускала новую программу для розничных заявок, и компания дорабатывала под нее маршрутизатор заявок SMARS. Обновление устанавливали на восемь серверов маршрутизатора, на один из них новый код не попал.
Через 45 минут после открытия торгов компания удерживала незапланированные позиции почти на семь миллиардов долларов и зафиксировала убыток свыше 460 млн, а через четыре месяца сменила владельца. Хронологию восстановила Комиссия по ценным бумагам США в решении от 16 октября 2013 года.
Что хотели сделать
Требовалось добавить в маршрутизатор поддержку новой биржевой программы к дате ее запуска. Новый код замещал модуль Power Peg, не применявшийся с 2003 года, но оставшийся на серверах. Для нового режима использовали тот же признак включения, которым ранее активировался старый модуль.
Оба условия сбоя сложились за годы до него. Модуль сохранили на рабочих серверах, поскольку он не вызывался и опасности не представлял. В 2005 году из него вынесли функцию подсчета исполненных объемов, которая останавливала отправку дочерних заявок после исполнения родительской. Повторных проверок модуля не проводили, использовать его не планировали.
Где произошел сбой
Развертывание шло с 27 июля по частям, по нескольку узлов в день. Техник не скопировал код на один из восьми серверов. Второй специалист развертывание не проверял, письменной процедуры, требующей такой проверки, не существовало.
С 8:01 утра, за полтора часа до открытия торгов, внутренняя система разослала 97 служебных сообщений об ошибке с прямым указанием на неисправный модуль. Аварийными сигналами они не задумывались, и получатели их обычно не просматривали.
После открытия торгов семь серверов обработали заявки корректно. Восьмой при том же признаке включения запустил старый модуль, лишенный функции остановки. На 212 входящих заявок система направила на рынок миллионы дочерних: свыше четырех миллионов сделок по 154 бумагам, более 397 млн акций. Одна из попыток исправления усугубила положение: новый код удалили с семи узлов, где обновление прошло корректно, после чего они начали работать так же, как восьмой.
Сколько это стоило
Убыток по накопленным позициям превысил 460 млн долларов при собственных средствах около 365 млн. Регулятор наложил штраф 12 млн долларов, указав на отсутствие письменных процедур развертывания, контроля выхода заявок из маршрутизатора и порядка действий при инциденте. В декабре 2012 года соглашение о поглощении Knight заключила компания Getco.
Что из этого следует
Отсюда три вопроса к любому обновлению АСУ ТП, MES или складской системы. Подтверждается ли документально, что новая версия установлена на все узлы, или это принимается как данность. Остается ли снятая функциональность в рабочем контуре и кто отвечает за ее удаление. По какому признаку система прекращает работу самостоятельно при возникновении отклонений.
Место в методике АЦТ
Прямо к ситуации относится интеграция разработки и операций (B3-05, группа B, 42 часа, сложный): автоматизация сборки, настройки и развертывания, при которой состояние узлов проверяется машиной, а не по памяти специалиста. Второй уровень — анализ видов и последствий отказов (A4-03, 36 часов): разбор сценариев отказа до его наступления, включая сценарий неполного обновления.
В решении регулятора названа мера, которая предотвратила бы события 1 августа: письменная процедура, требующая проверки развертывания вторым специалистом. Ее стоимость измеряется рабочими минутами. Стоимость ее отсутствия составила 460 млн долларов и самостоятельность компании.
Post #893
86
