В проектировании систем , неудачу быстрая система одна , которая сразу же сообщает в своем интерфейсе любое условие , которое, вероятно, указывает на неисправность. Отказоустойчивые системы обычно предназначены для остановки нормальной работы, а не для попытки продолжить возможно некорректный процесс. Такие конструкции часто проверяют состояние системы на нескольких этапах работы, поэтому любые сбои можно обнаружить на ранней стадии. Ответственность за отказоустойчивый модуль заключается в обнаружении ошибок, а затем в предоставлении возможности их обработать следующему, более высокому уровню системы.
Железо и софт
Отказоустойчивые системы или модули желательны в нескольких случаях:
- При построении отказоустойчивой системы с помощью резервных компонентов отдельные компоненты должны работать без сбоев, чтобы предоставить системе достаточно информации, чтобы успешно выдерживать сбой.
- Отказоустойчивые компоненты часто используются в ситуациях, когда отказ одного компонента может быть незаметен до тех пор, пока он не приведет к отказу другого компонента.
- В отказоустойчивой системе легче найти причину сбоя, поскольку система сообщает об отказе как можно больше информации, максимально приближенной к моменту отказа. В отказоустойчивой системе отказ может остаться незамеченным, тогда как в системе, которая не является ни отказоустойчивой, ни отказоустойчивой, отказ может быть временно скрыт, пока он не вызовет позже некоторую, казалось бы, не связанную проблему.
- Отказоустойчивая система, которая предназначена для остановки, а также для сообщения об ошибке при отказе, с меньшей вероятностью выполнит ошибочно необратимую или дорогостоящую операцию.
Разработчики также называют код отказоустойчивым, если он пытается выйти из строя как можно скорее при инициализации переменной или объекта. В объектно-ориентированном программировании спроектированный без сбоев объект инициализирует внутреннее состояние объекта в конструкторе, запускает исключение, если что-то не так (вместо разрешения неинициализированных или частично инициализированных объектов, которые позже завершатся ошибкой из-за неправильного " сеттер "). Затем объект можно сделать неизменяемым, если больше не ожидается изменений внутреннего состояния. В функциях отказоустойчивый код проверяет входные параметры в предварительном условии . В клиент-серверных архитектурах функция fail-fast будет проверять клиентский запрос сразу по прибытии, прежде чем обрабатывать или перенаправлять его другим внутренним компонентам, возвращая ошибку, если запрос завершается неудачно (неверные параметры, ...). Быстро созданный код снижает внутреннюю энтропию программного обеспечения и уменьшает усилия по отладке.
Примеры
В области программного обеспечения , A Сбой Fast итератора является итератор , что попытки вызвать ошибку , если последовательность элементов , обрабатываемых итератора изменяется во время итерации .
Бизнес
Этот термин широко использовался в качестве метафоры в бизнесе, начиная как минимум с 2001 года [1], что означает, что предприятиям следует проводить смелые эксперименты для определения долгосрочной жизнеспособности продукта или стратегии, а не действовать осторожно и инвестировать годы в обреченный подход. Это стало своего рода «мантрой» в культуре стартапов . [2]
Смотрите также
Рекомендации
- ^ Ханна, Раджат; Гулер, Исин; Неркар, Атул (01.04.2016). «Часто терпят неудачу, терпят крупную неудачу и терпят неудачу быстро? Уроки мелких неудач и результаты исследований и разработок в фармацевтической промышленности». Журнал Академии Управления . 59 (2): 436–459. DOI : 10,5465 / amj.2013.1109 . ISSN 0001-4273 .
- ^ «Эпические провалы мира стартапов» . Житель Нью-Йорка . Проверено 14 августа 2017 .
Внешние ссылки
- Грей, Джим . «Почему останавливаются компьютеры и что с этим делать?». CiteSeerX 10.1.1.110.9127 , Цитировать журнал требует
|journal=
( помощь )CS1 maint: обескураженный параметр ( ссылка ) Представляем "Fail Fast" - Статья Джима Шора "Fail Fast", объясняющая использование концепции "Fail Fast" в разработке программного обеспечения (из колонок для программного обеспечения IEEE под редакцией Мартина Фаулера )