1 Проблема: ненадежная терминология по надежности
Привычные термины становятся все более запутанными. Если раннее (до 2003 года) система ГОСТ еще была фундаментальна и системно выстроена (причем это были не переводы западных стандартов), то потом система гос‑стандартизации стала резко деградировать.
При этом «Надежность в Технике» — направление, которому уже столетие: уже в 30-е в СССР выходили статьи типа Якуба Б. М. «Показатели и методы расчета надёжности в энергетическом хозяйстве» (журнал «Электричество», № 18, 1934 г.).
Но «что‑то пошло не так» (после 2003 года, когда фактически вместо ГОСТ начали вводить тех регламенты). Согласно ГОСТ Р 27.002–2009 “Надежность в технике”: (pdf; html):
17 надежность (dependability): Свойство готовности и влияющие на него свойства безотказности и ремонтопригодности и поддержка технического обслуживания.
Открываем ГОСТ Р 27.102–2021:
5 надежность (объекта): Свойство объекта сохранять во времени в установленных пределах значения всех параметров, характеризующих способность объекта выполнять требуемые функции в заданных режимах, условиях применения, стратегиях технического обслуживания, хранения и транспортирования.
7 готовность (объекта): Способность объекта выполнять требуемые функции в заданных условиях, в заданный момент или период времени при условии, что все необходимые внешние ресурсы обеспечены.
Примечания 1 Надежность объекта и готовность объекта не зависят друг от друга.
В первом ГОСТ: надежность (свойство объекта) — это готовность (тоже свойство объекта) и …, а во втором: «надежность и готовность объекта не зависимы». В первом — зависимы, во втором уже нет. Вообще странно, что постоянно меняется определение такого «старинного» термина как надежность.
Кстати в ГОСТ 27.002–89 «Надежность» переводилась как и reliability и dependability, а в 2021 только как dependability (в обоих ГОСТ reliability = безотказность).
Тут вроде как приводят оправдание:
В стандарте ГОСТ Р 27.102–2021 надёжность трактуется как свойство сохранять параметры во времени (то есть в основном reliability — безотказность), а готовность — как способность выполнять функции в заданный момент при обеспечении внешних ресурсов. Они могут быть независимы, например, объект может быть надёжным (редко ломается), но неготовым из‑за отсутствия внешнего питания, и наоборот. Но это не означает, что в комплексном понимании (dependability) они не связаны.
Типа: есть узкое (reliability) и широкое (dependability) понимание надёжности, то есть произошла эволюция терминологии, через приведение к международному стандарту IEC 60050–191. В новых ГОСТах разделены понятия: dependability — комплексное свойство (включает готовность, безотказность, ремонтопригодность и так далее), а reliability — только безотказность, а в прежних reliability и dependability оба обозначали надёжность.
Однако это оправдание — «так себе».
Поэтому ниже будет дана простая и понятная логика «вычисления определений», концептуальная основа, пусть с упрощением, но с «железной логикой» толкования. При этом не важно какой объект (сущность) подразумевается: оборудование / техника (Надежность в технике), операция / процесс (бизнес‑процесс), изделие / система, сервис / очередь, контейнер / служба, модуль / ресурс и тому подобное
В статьях, ГОСТ, стандартах (положениях) регуляторов, например, ЦБ, вперемешку перечисляются надёжность, готовность, устойчивость и тому подобное. Часто в статьях делают оговорку о путанной терминологии, и авторы определяет термины, например:
— Немного теории. Есть много определений, но в самом близком к IT‑миру надёжность, или R(t), — это вероятность того, …
— В области защиты от сбоев на кластерах терминология в Интернете различается от сайта к сайту. Для того чтобы избежать путаницы, мы обозначим термины и определения, которые будут использоваться в этой статье.
Используются термины операционная надежность (ЦБ), инженерная надёжность и др. Подавляющее число статей (хабр и тому подобное) с «надежность», «отказоустойчивость» в названии — вообще не содержит ни цифр, ни метрик, ни расчетов, ни определений и из них не понято что они понимают под этими терминами и как измеряют.
Поэтому ниже зафиксирую понятную мне и логичную терминологию по надёжности чтобы «другую» уже проецировать на свою, то есть «приводить к одному знаменателю». Опираться прежде всего будем на исторические определения (прежде всего направления «Надежность в технике»), здравый смысл и логику словообразования в русском языке. Терминология будет упрощенная и максимально понятная.
2 Надежность и наработка
Надежность — это абстракция. Это свойство системы объекта (свойство — способность) не ломаться (быть в исправном состоянии), в общем случае как при использовании, так и при хранении (транспортировке). Иногда теорию надежности называют «Теорией отказов», то есть «неотказать» и «отказать» образуют полную группу, а сумма их вероятностей равна 1.
Полная (комплексная) надежность — это мера (способность) не ломаться (безотказность), восстанавливаться (ремонтопригодность), а также сохранности (не ломаться во время хранения и транспортировки). «Широкая» трактовка («общая надёжность», тотальная, как бы в значении TQM) надежности как бы говорит: нигде не ломаться, ни в производстве, ни на складе, ни при доставке запасных элементов. Однако, обычно все же речь идет о «узкой» надежности — когда изделие находится в промышленной эксплуатации (продуктовой среде), то есть в «боевом режиме».
Из ГОСТ 13377–67: Надежность — Свойство изделия выполнять заданные функции …
Определения термина «надежность» в советских документах см. в Нетес В.А., Тарасьев Ю.И., Шпер В.Л Как нам определить, что такое «надежность»
Интуитивно вроде бы понятно, что такое «надёжность», но «сколько вешать в граммах»?
Измеряется это Свойство «Надёжность Изделия» как правило через вероятность (случайность), рассчитанную через какую‑либо формулу одного из показателей надежности (метрики надёжности).
2.1 Событие и вероятность
Чтобы количественно сравнивать между собой события (например, событие — это при броске выпал орел) по степени их возможности — ввели определенное число (метрику, измерение), которое и называют вероятностью события или просто вероятностью. Чем больше число, тем более вероятно событие (Е.С. Вентцель).
Вероятность — это численная мера возможности наступления определённого случайного события. Подбрасываем монету и с вероятностью 12 получаем одну из ее сторон: вероятность события «выпала решка» (50%) или события «выпал орел» (но «это не точно», так как вроде как зависит от стороны, которая была сверху).
Вероятность — безразмерная величина в диапазоне 0–1 или 0–100%, поэтому показатели надёжности обычно аналогичны.
Иерархия: абстракция (надежность, «х‑устойчивость») — группа показателей (готовность) — показатель надёжности (стационарный коэффициент готовности).
Если надежность — это свойство объекта (причем абстрактное), то показатель надёжности — это свойство надежности, причем свойство метрическое (измеряемое, то есть «связанный с метрикой»).
Наработка — ключевое понятие в теории надёжности.
Из ГОСТ 27.002–89: Наработка (время, час) до отказа (до первого отказа) и наработка между отказами, она же «наработка на отказ», хотя тут говорят иначе.
Обратная величина наработке — интенсивность (1/час). Для невосстанавливаемых изделий основной показатель надежности — вероятность безотказной работы за время t, которая определяется как отношение числа безотказно работающих образцов в момент времени t, то есть. N(t), к общему числу образцов, поставленных на испытание No:
P(t) = N(t) No
P(t) — Вероятность того, что в пределах заданной наработки (t) отказ объекта (изделия) не возникнет.
Однако нас далее будут интересовать только восстанавливаемые изделия объекты системы (все это синонимы). Для них ключевые первичные параметры:
— Средняя наработка на отказ, MTBF (Mean Time Between Failures), среднее время между отказами.
— Среднее время восстановления, MTTR (Mean Time To Repair / Mean Time To Recovery) — среднее время ремонта.
Как и наработка (час), среднее время ремонта‑восстановления часто задается обратной величиной — интенсивностью восстановления (1/час).
Желательна длительная наработка MTBF (то есть малая интенсивность низкий поток отказов, λ) и малое время восстановления (то есть высокая интенсивность восстановления, µ), то есть изделие ломается редко, но если сломалось, то быстро восстанавливается. Таким образом повышать надёжность можно путем 1) использования более надёжных элементов (с минимальным λ), 2) более быстро восстанавливаемых («высоко ремонтопригодных», с максимальным µ). Третий способ повышения надежности — резервирование различных типов, то есть внесение избыточности (структурной, информационной, временной и др.).
3 Готовность vs устойчивость
Готовность — это группа показателей надёжности, но в основе этого термина лежит стационарный коэффициент готовности (основной показатель надежности восстанавливаемых изделий), и будем от этого отталкиваться. Таким образом, нас интересуют восстанавливаемые (ремонтируемые) резервированные (имеющие избыточные элементы) изделия, прежде всего кластеры.
Надёжность — это «абстракция», будем рассматривать «х‑устойчивость» — тоже как абстракцию. Для конкретной такой абстракции «х‑устойчивость» можно рассчитать стационарный коэффициент готовности (Кг).
Коэффициент готовности Кг характеризует вероятность того, что объект окажется работоспособным в произвольный момент времени, кроме планируемых периодов, в течение которых использование объекта не предусматривается.
Формула Кг:
Кг = MTBF / (MTBF + MTTR) или Кг = T / (Т + Тв)
Однако расчеты надежности показателей надёжности — это часто субъективная операция (модель): все зависит от сформулированного критерия отказа — это ключевое в расчете надёжности.
Более того, одно дело сгорел сервер приложения, который легко восстановить (быстро развернуть новый), и совсем иное дело, когда сгорела система хранения в период до планового backup, но это вообще скорее не про надежность, а уже про риски (их противопоставление заслуживает отдельной статьи).
Ниже показаны типы «х‑устойчивости» в зависимости от природы отказа.
3.1 Отказ внутренний (собственный, непреднамеренный)
Отказоустойчивость = Отказ + Устойчивость. Устойчивость к отказам вследствие структурной избыточности (структурное резервирование). Это базовая готовность, Fault Tolerance (FT). Отказоустойчивые кластеры.
3.2 Отказ внешний (преднамеренный), как следствие деструктивного воздействия
Живучесть, жизнеспособность — как «диверсоУстойчивость» — это способность системы, объекта или организации противостоять умышленным вредительским действиям (нападению, атаке). Также обеспечивается структурным резервированием. В отличие от отказоустойчивости (где «изделие само сломалось») в данном случае имеет место целенаправленное разрушение или нарушение работоспособности внешним фактором (сторонним или внутреннем диверсантом, природным фактором, техногенной катастрофой и тому подобное).
Например, живучесть сети связи в условиях уничтожения или подавления противником отдельных узлов или линий связи.
Близкие термины:
— катастрофоУстойчивость — структурное резервирование с территориальным разнесением узлов кластера; При этом «централизация и живучесть — две вещи несовместные», то есть мы говорим сразу об избыточности и распределённой структуре резерва.
— помехоУстойчивость — устойчивость к помехам через информационную избыточность (резервирование), например, помехоустойчивым кодированием.
Расчет Кг в части живучести аналогичен FT, но с учетом иного критерия отказа и соответствующих λ и µ.
Если есть модель угроз и определены все потоки (интенсивности) разрушающих и восстанавливающих воздействий на систему, то расчет живучести (внешние воздействия) системы через коэффициент готовности нечем не будет отличаться от расчета отказоустойчивости (внутренние отказы) и надженостная схема строится аналогично. Т.е. это такие же «отказ восстановление», но иной природы. Разная природа отказов часто обуславливает разными распределениями вероятности, но речь не про «этапы приработки, старения и тому подобное). »
Иногда к надёжности приписывают только внутреннее свойство системы (объекта), например, дилемма «Параметрическое определение vs Функциональное определение» показана тут.
3.3 Отказ нагрузочный
НагрузкоУстойчивость (НагрузоУстойчивость) при наличии резерва по производительности.
Доступность — ничего не ломается, а только возрастает нагрузка и система не выдерживает дополнительной нагрузки.
Вычислительный высокопроизводительный кластер vs отказоустойчивый кластер.
High availability / высокая доступность или Continuous availability / непрерывная доступность хотя часто они рассматриваются как разновидность Отказоустойчивости (Fault Tolerance, FT). Однако мы намеренно доступность выделяем как нечто «нагрузочное», то есть ставим зависимость критерия отказа не от поломок, а от величины внешней нагрузки (клиентских обращений, величины очереди запросов и тому подобное). В wiki high availability (HA) показана иначе, но не понятно тогда отличие изложенного там от FT.
В предлагаемом в статье подходе — HA это тоже использование резерва кластера (перераспределение узлов), но не в связи с поломкой, а с изменением информационной нагрузки (увеличением потребителей).
4 Пояснения
Итого, имеем три типа природы отказов: внутренний, внешний, нагрузочный, но все они имеют общую метрику. Метрика любой х‑устойчивости — готовность (от коэффициента готовности, Кг). Можно считать (измерять), как каждую х‑устойчивость, так и совокупную (общую, суммарную).
Есть другие примеры «х‑устойчивости»: вандалоУстойчивость, удароУстойчивость (и подобное см. стандарты «Мороз-6»), часто для них используют термин «робастное оборудование» (в АСУТП), однако это хоть и в тематике надежности (англ. Robustly — надежно, прочно, крепко; robustness — устойчивость), но не в разделе «метрики надёжности восстанавливаемых резервированных систем». Например, в промышленной автоматизации робастность — это устойчивость к механическим и климатическим воздействиям, электромагнитным помехам, например, «нечувствительность функций продукции к переменам в уровнях шумов», см. Робастные параметры продукции (ПНСТ 144— 2016). Т.е. как бы «рядом» (суровые условия эксплуатации изделий), но все же отдельное направление.
Таким образом: просто «устойчивость» — неопределённое понятие, которое только говорит, что система как‑то (не указана ни абстракция, ни соответствующая метрика) «устойчива» к чему‑то (не особо понятно к чему). Конкретизация типа отказоУстойчивость, сбоеУстойчивость (сбой — самовосстанавливающийся отказ, обычно путем перезагрузки) — дает понимание к каким конкретно факторам применима эта «устойчивость», а Кг — дает понимание по метрике. Например, катастрофоУстойчивость — устойчивость к катастрофам, которая применительно к вычислительному процессу решается использованием гео‑кластеров: территориально распределённых резервированных вычислителей, например, БинБанк или КЦОИ ЦБ.
Итого:
Устойчивость (tolerance) — общий термин про устойчивость «ко всему» и внешним и внутренним деструктивным (негативным) факторам. Живучесть системы (организма) — как преднамеренные деструктивные воздействия (ломают систему) тоже Устойчивость. Живучесть (ГОСТ 27.002–89) — «… свойство сохранять ограниченную работоспособность при воздействиях, не предусмотренных условиями эксплуатации …».
ОтказоУстойчивость (fault tolerance) — устойчивость к внутренним факторам, приводящим систему в неисправное неработоспособное состояние, то есть отказам элементов и сбоям.
Доступность vs Готовность — обычно их переводят одинаково (Availability vs Availability)
Кг (готовность) в части ОтказоУстойчивости — основная характеристики показатель надежности отказоустойчивого кластера (Failover Cluster, FT‑cluster) или иной резервированной и восстанавливаемой (ремонтируемой) системы (объекта, процесса и тому подобное).
Доступность (тоже Availability) — это про нагрузку (производительность): все работает (и работоспособно), но «занято» и обработать новый запрос заявку не может. Это «отказ в обслуживании» из‑за большого (предельно допустимого доступного) потока нагрузки, чем отказ из‑за поломки узла (компонента). Высоконагруженные (Highload) многоузловые комплексы, высокопроизводительные кластеры, балансировщики нагрузки и тому подобное. Иногда говорят «резервирование по нагрузке». В обоих случаях речь про избыточность, но в первом случае она «в интересах отказоустойчивости», а во втором — в интересах Highload — перераспределению вычислительных мощностей в целях оптимизации производительности (не надёжности, в смысле ремонта отказавших узлов).
Однако, если кластер сочетает в себе как отказоустойчивость, так и масштабирование нагрузки на резервные узлы, то можно измерять «комплексный» (взаимосвязанный) Кг (Кг-2А) в зависимости как отказов узлов, так и изменения нагрузки, так как деградация узлов (ресурсов) определяет предельный объем нагрузки на систему (информационный поток, который способен «переварить» кластер согласно SLA). Такой Кг — некий гибрид бесперебойной работы (FT+ Highload), но все равно в нем выделяется составляющие отказоустойчивость — как поломка, и отдельно «отказ в обслуживании» — как Highload — это потеря работоспособности, вызванная исчерпанием ресурсов, сбоем при пиковых нагрузках и тому подобное (Resource Exhaustion, Connection Pool limits, etc). Поэтому «такую доступность» мы и выделяем как Availability‑Highload.
В комбинации HA FT избыточные узлы в режиме простоя могут брать дополнительную нагрузку (HA), но при отказе узла кластер становится в режим FT. Оба режима задаются критерием отказа кластера. Более того, в модель может быть еще замешан фактор «живучесть нагрузка» — как «враждебные» перегрузки, например, DoS‑атаки.
Заключение
-
Надёжность (dependability) — комплексное свойство, зонтичный термин, абстракция — как свойство не ломаться, быстро восстанавливаться, сохраниться (не ломаться при хранении).
-
Безотказность (reliability) — свойство не ломаться (работать без отказов).
-
Ремонтопригодность (maintainability) — свойство быстро восстанавливаться.
-
Готовность (availability) — тоже свойство, но уже метрическое и задающее вероятность застать систему в рабочем состоянии («не сломанном») в произвольный момент времени (кроме регламентных работ).
-
Доступность (availability) — свойство не отказывать вследствие перегрузки (Highload).
Основное внимание сделано на восстанавливаемых избыточных (резервированных) системах, так как именно они обычно применяются на практике потому что только они могут обеспечить «высокую надежность», которую бизнес требует от ИТ.
Мы искусственно разделяем «отказоустойчивость» (поломки), «живучесть» (внешние воздействия) и «доступность» (нагрузка), — как три разных типа устойчивости, обусловленные тремя разными источниками отказов со своими интенсивностями (и интенсивности восстановления тоже разные), которые могут быть объединены в общую (сложную) модель (с учетом моделирования разной природы этих отказов).
Автор: avers_52
