Чтобы определить общую надежность ИТ-системы, необходимо определить составляющие ИТ-систем, по которым можно повышать надёжность.
Существуют три основные составляющие:
* люди;
* процессы;
* технологии.
В случае современных информационных технологий, последний пункт следует разделить на две части, и рассматривать их отдельно:
* аппаратное обеспечение;
* программное обеспечение.
К каждой части (аппаратной и программной) применимы свои методы повышения надежности.
Принципиальная разница в том, что аппаратное обеспечение – это технологии, на которые имеет воздействие физический мир. К этой части можно применять различные теории по надежности физических объектов, включая время наработки на отказ, износ материалов, влияние окружающей среды и т.п.
Программное обеспечение отделено от физического мира. Здесь не действуют законы физики. Здесь нет износа материалов. Это логический мир, созданный искусственно. Несомненно, он сложен, но на него действуют только законы логики. Таким образом, мы изолируем логическую среду от физической. Разделяем методики повышения надежности между физической и логической системами, применяя их отдельно.
Для повышения надежности необходимо, чтобы как можно большая часть инфраструктуры была логической. Этим, в частности, обуславливается современная тенденция развития облачных технологий.
С программной частью тоже все не так просто. Она тоже разделяется на две большие части, к которым применяются разные правила повышения надежности.
* Системная часть.
* Прикладная часть.
Разница состоит в следующем:
Системное ПО: разрабатывается крупными вендорами. Напрямую доступа и влияния на разработчиков мы чаще всего не имеем. Существует обучение и сертификация специалистов. Небольшое количество логических ошибок. Часто есть обширная база знаний и community в интернете, чтобы решить какую-либо проблему.
Основные методы повышения надежности: найм сертифицированных специалистов, правильное контрактование с разделением ответственности (штрафными санкциями) за сбои продукта
Прикладное ПО: часто разрабатывается внутри организации, либо небольшими компаниями непосредственно под заказчика. Прямое влияние на разработчиков часто существует, что позволяет контролировать не только выходной продукт, но и процесс его создания. По статистике, прикладная часть (бизнес-приложения) обычно имеют несоизмеримо большее количество логических ошибок, чем системное ПО. Базы знаний часто нет. Сертификации нет. Обучения нет. Решение проблем в интернете искать бесполезно.
Основные методы повышения надежности: контроль за ошибками, по возможности — регламентация работы разработчиков и тестировщиков. Требования создавать «базу известных ошибок». Полноценное тестирование: функциональное и нагрузочное.