БЕСЕДЫ О ПРОГРАММИРОВАНИИ         

Питер Коффи

Вначале сентября фирмы lsis Distributed Systems и Iona Technologies объявили о выпуске технологии Orbix+Isis для создания устойчивых к сбоям распределенных объектно-ориентированных приложений с непрерывным доступом к данным. Здесь явно поставлен своеобразный рекорд по употреблению максимального числа модных словечек в описании одного продукта.

Меня лично во всем этом заинтересовало выражение "устойчивые к сбоям". Понятие "сбой" очень широко, но, что удивительно, литература по проблемам устойчивости к сбоям не предлагает достаточно ясного определения этого понятия. Разумеется, существуют сотни статей с названиями типа "Генерация тестовых шаблонов на основе коэффициентов Рида  -  Мюллера", не говоря уж о таком "бестселлере", как "An 0(n2.5) Fault Identification Algorithm for Diagnos able Systems"(Алгоритм определения сбоев для диагностируемых систем). Но, копаясь в статьях, слишком запутанных даже для этой области, я наконец наткнулся на список, с помощью которого любой сможет припереть производителя к стенке.

Если ваш успех зависит от стабильной работы некой системы, то вы можете составить представление о том, что такое устойчивость к сбоям, пользуясь любым из семи следующих положений.

- Безопасность: как говорят врачи, не навреди. Когда есть реальная угроза повреждения, устойчивая к сбою система делает аварию "безопасной": всегда перестраховывается либо вообще не предпринимает никаких действий, если данные противоречивы или результаты подозрительно нестандартны.

- Надежность: полезно знать среднее время между сбоями (MTBF), хотя проверить его трудно, если речь идет о десятках тысяч часов. К тому же не так легко перевести MTBF подсистем в MTBF всей системы. Чтобы сделать это правильно, нужно учитывать, например, какого типа сбой мог бы повлиять и на подсистему, и на ее резервную копию.

- Конфиденциальность: устойчивость к сбоям означает, что, если обнаружена хоть малейшая попытка получить несанкционированный доступ к данным, система немедленно отключает пользователя и дает сигнал тревоги.

- Целостность: если в предыдущем пункте говорилось о сохранении тайны данных, то здесь речь идет о защите данных от повреждения. Устойчивость к сбоям может означать жесткую систему регистрации транзакций или возможность отменять любые действия, так чтобы данные всегда можно было вернуть в прежнее удовлетворительное состояние.

- Доступность: этот параметр вычисляется в процентах к времени работоспособности и имеет отношение к параметру надежности, поскольку бесконечное время между сбоями означало бы стопроцентную доступность. Однако, если неизбежное случилось и система дала сбой, сколько времени ей нужно для того, чтобы вернуться к нормальной работе? Возьмем другую крайность  -  сбой каждые одну-две секунды не страшен, если время на исправление проблемы измеряется миллисекундами. Рассмотрим, к примеру, потерю кэша. Результатом попытки доступа к виртуальной памяти будет "отсутствие страницы", помните? Однако системы с использованием виртуальной памяти устойчивы к "потерям страницы".

- Взаимное доверие: используя такую систему, пользователи с различными привилегиями могут одновременно работать с данными разной чувствительности. Устанавливая систему на основе взаимного доверия, нужно подумать о множестве вещей, кроме паролей и уровня доступа к файлам,  -  например, о том, чтобы пользователи выводили свои данные на разные принтеры.

- Корректность: странно, но этот пункт оказался банальнее всех  -  что вы скажете о "корректной" системе, которая не находит ошибок в форматах данных и дает "корректные", но бесполезные результаты? Нет ли и у вас таких систем?

Разве вы не предпочли бы вариант: "Ответ неясен: попробуйте еще раз"? К каким сбоям вы устойчивы?

К Питеру Коффи можно обратиться через MCI Mail: 357-1756 или через CompuServe: 72631,113, или Internet 3571756@MCIMAIL.COM.

ПИТЕР КОФФИ