Разработка и отказоустойчивость программных систем высокой доступности
Иосиф Иткин, Exactpro Systems23 декабря 2013
Введение
Инновационные трейдинговые системыул. Ленина 20
Создание и применение инструментов для проверки высоконагруженных трейдинговых системВ Костроме – 130 человек
http://clubqa.ru http://tmpaconf.org
Критерии высокой доступности
• Высокая доступность – High Availability• HA is the proportion of time a system is productive and is
usually expressed as a percentage. • Availability is expressed as MTTF / (MTTF+MTTR), where:
• MTTF (mean-time-to-failure) is the average time that a system runs (without failing) after it has been set up or repaired.
• MTTR (mean-time-to-repair) is the average time needed to repair (or restore) a failed system.
• In the spectrum of system availability, HA systems fall between 99.9% and 100% availability.
http://www.tpc.org/information/other/articles/ha.asp
Виды простоя систем
• Downtime can be categorized as either planned or unplanned• Planned downtime - is time that the system is unavailable due
to scheduled maintenance such as software/hardware upgrades and system backups.
• Unplanned downtime is time that the system is unavailable due to component faults or environmental faults. Human error and "natural" disasters (including power outages) are examples of "environmental faults."
Способы повышенияотказоустойчивости
• Minimize the number of faults and the effect/recovery time of faults in a system.
• Avoid a single-point-of-failure by utilizing redundant parts and rerouting (failover).
• Reduce the impact of environmental faults by using UPS and off-site data mirroring and/or replication provide for "hot" repair of failed components.
Пример архитектуры
http://www.cinnober.com/sites/cinnober.com/files/news/Latency_revisited.pdf
Пример архитектуры
http://extentconf.com
Уровни доступности
Два раза моргнуть
Типичные требования к биржевой системе
круг по МКАД
7.5 см
в 1000 раз быстрее
Суточный объем > 100 M orders
Время отклика < 300 uS
Пиковые нагрузки > 40 K orders / sec
Смерть тестирования
Принципы тестирования
Три вида воздействия
http://www.sec.gov/litigation/admin/2013/34-69655.pdf
USS Yorktown
21 сентября 1997 годаCG-47 Aegis пилотная версия «Умного Корабля»Отказ всех систем, включая двигатели на 2.5 часаНеправильные данные введены в Remote Data Base ManagerПривели к переполнению базы данных и отключению LAN, включая все терминалы
USS Yorktown
21 сентября 1997 годаCG-47 Aegis пилотная версия «Умного Корабля»Отказ всех систем, включая двигатели на 2.5 часаНеправильные данные введены в Remote Data Base ManagerПривели к переполнению базы данных и отключению LAN, включая все терминалыОшибка – деление на ноль
Mizuho Securities
12 октября 2005 годаПопытка продать 1 акцию J-Com за 610,000 йен ($5,041)Ошибочно перепутаны объем и ценаНе сработали риск системы:a)Mizuho Securitiesb)Токийской биржиПотери оцениваются в $225 млн.
Ошибка такого вида называется Fat Finger
Ariane 5 Type Conversion
4 июня 1996 годаПервый полет ракеты Ariane 5Отклонение курса и разрушение через 40 секунд после стартаАвтоматический подрыв на высоте 3700 метровПреобразование 64 битного числа в 16 битОшибка invalid operand на языке AdaПО совпадала с предыдущей версией Ariane 4Но горизонтальная скорость существенно вышеТестирование проводилось на симуляторе без
использования самой SRIОшибку воспроизвели на тестах
Patriot Software
25 февраля 1991 года, Дахран, Саудовская АравияБатарея Патриот не стала сбивать ракету ScudПопадание в казарму привело к гибели 28 человекОколо 97 человек получили раненияРасследование обнаружило ошибку в ПО
Patriot Software
Для хранения времени использовалось 24 битаЗначение 0.1 секунд в бинарном виде:
0.0001100110011001100110011001100.... (1/24+1/25+1/28+1/29+1/212+1/213+...)
Ошибка округления0.0001100110011001100110011001100....или 0.000000095
Предполагалось, что комплекс будет работать короткое время Систему не перегружали 100 часов0.000000095×100×60×60×10=0.34 секундыСкорость Scud 1,673 метра в секунду -> ошибка 568 метров
Patriot Software
Patriot Software
Patriot Software
Patriot Software
25 февраля 1991 года, Дахран, Саудовская АравияСообщение об ошибке 11 февраляОтвет – это не баг а фичаWorkaround рестартовать каждые 8 часовРестарт 60 – 90 секундИсправление готово 16 февраляДоставка обновлений в Дахран
26 февраля
Измерение времен отклика
North American Blackout
14 августа 2003 года, США и КанадаКаскадное отключение электричестваСитуация гонок привела к переполнению буфера и отключению системы уведомленийСброс 4% нагрузки мог бы предотвратить потери порядка $10b
Ситуация Гонок
http://en.wikipedia.org/wiki/Race_condition
Therac-25
Therac-25 — аппарат лучевой терапии запущенный в 1982 гЭтот аппарат был причиной как минимум шести передозировокДве со смертельнымисходом
Therac-25
Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга. Поэтому при быстром вводе Therac мог иметь дело с неправильным положением поворотного круга (так называемое состояние гонки).
Настройка положения отклоняющих магнитов занимает около 8 секунд. Если за это время параметры типа и мощности излучения были изменены, а курсор установлен на финальную позицию, то система не обнаруживала изменений.
Therac-25
Деление на величину излучения, приводящее в некоторых случаях к ошибке деления на ноль и к соответствующему увеличению величины облучения до максимально возможной.Установка булевской переменной (однобайтовой) в значение «истина» производилось командой «x=x+1». Поэтому с вероятностью 1/256 при нажатии кнопки «Set» программа могла не пропустить информацию о некорректном положении диска.Кроме этих явных ошибок было замечено множество потенциальных — например, в многозадачной операционной системе не было никакой синхронизации
Deadlock
Smart Order Router
Order Routing in US
http://www.nanex.net/FlashCrash/OngoingResearch.html
Knight Capital
1 августа 2012 года, СШАKnight Capital – одна из наиболее успешных HFT компанийИзменения в связи с Retail Liquidity Program в NYSEСистем SMARS – высокоскоростной роутер заявокВ основе изменений старая функциональность – PowerPegКоличество родительских заявок – 212Количество дочерних заявок – миллионыПотери – $460 млн. или $170 тыс. в секундуОтсутствие механизмов контроля и мониторинга рисков в самой системе SMARSРазвертывание изменений на 7 серверовВсего серверов было 8…
TMPA-2014 в Костроме
Анализ программСтатическая верификацияМутационное тестированиеНеобычные инструментыВерификация оборудованияМногое другое…
Спасибо!
http://www.cs.tau.ac.il/~nachumd/horror.html