Решение о построении распределенной системы часто
вытекает из требований, выдвинутых заказчиком, необходимость построения
распределенной системы часто обуславливается следующим нефункциональным
требованиями, которые относятся к качеству системы и носят глобальный характер
(функциональные можно локализовать в одном компоненте);
Масштабируемость означает способность системы
адаптироваться к будущему росту нагрузки.
Нагрузка, которую должна нести программная система
может быть определена в различных единицах.
1.Например, ее можно выразить как максимальное число
одновременно работающих пользователей. (Система «видео по требованию» в
Гонконге должна одновременно обслуживать до 90000 пользователей).
2.Нагрузку можно определить и как количество транзакций,
которые система должна выполнять за данный период. (Выбранный для анализа
швейцарский банк заявлял, что ему потребуется до 2 млн. транзакция ежедневно).
3.Наконец, нагрузку можно определить, оценив объем
данных, которые должны обрабатывать система. (Так, система управления
конструированием в компании «Боинге» должны справляться с ежегодным увеличением
объема конструкторской документации приблизительно на 1,5 млрд. единиц. «Боинг»
строит ≈500 новых самолетов в год).
Таким образом, очевидно, что обслуживание должно быть
непрерывным. Но кроме этого мы ожидаем и определенного качества этого
обслуживания. ( 1)Клерк в банке рассчитывает на то, что транзакция завершается
за пару секунд. 2)Пользователь системы «видео по требованию» ожидает, что
изображение будет поступать с частотой обновления не менее 10 кадров в
секунду.).
Архитектуру ПО надо проектировать так, чтобы она
оставалась неизменной в течение всего срока службы системы. Успех сети Интернет
заключается в том, что эта сеть может расти, приспосабливаясь к увеличению
нагрузки; она имеет масштабируемую архитектуру.
Архитектура системы называется масштабируемой,
если она может адаптироваться к любому увеличению нагрузки, независимо от того,
ожидается оно или нет.
[В компании «Боинг» старый мэйнфрейм не мог справиться
с нагрузкой, поэтому для поддержки дополнительных компонентов были добавлены
новые компьютеры (20 машин Sequent)].
Открытость
означает, что систему можно легко расширять и модифицировать. Для этого
компоненты системы должны иметь четко определенные и хорошо документированные интерфейсы.
Интеграция в систему новых компонентов означает, что
они должны взаимодействовать с некоторыми уже имеющимися в этой системе
компонентами. В интерфейсах должны быть объявлены те же услуги, которые
предлагает объект. Услуга – это операция, которую компонент выполняет
для пользователя или другого компонента. Услуги часто параметризуются, и
полученные параметры должны быть указаны в интерфейсе. Нужно отметить, что
компонент, являющийся клиентом некоторого другого компонента, сам может служить
сервером для других компонентов. Формируется n-уровневая архитектура.
Неоднородность компонентов обуславливается
использованием различных технологий для реализации услуг, управления данными и
выполнения компонентов на аппаратурных платформах.
Неоднородность компонентов может порождаться языками программирования,
операционными системами, аппаратурными платформами и сетевыми протоколами.
[Причинами неоднородность может быть независимость
разработчиков компонентов, создание компонентов в разное время.]
Под ресурсами понимаются аппаратура, ПО и данные.
Разделение ресурсов требуется для более эффективного дорогостоящих ресурсов. [Машина
Sequent, предназначенная для работы с базами данных является
дорогим элементом оборудования. Для компании «Боинг» она обеспечила экономичное
решение только потому, что используется несколькими сотнями инженеров.]
При организации доступа к ресурсам необходимо
учитывать вопросы их защиты. [В системе «видео по требованию» доступ
контролируется для того, чтобы только зарегистрированные пользователем могли
загружать видеофильмы, т.е. после регистрации и оплаты]. Право на доступ к
ресурсам реализуется менеджерами ресурсов.
Отказоустойчивость означает, что система
будет продолжать работу доже при возникновении неисправностей.
Отказоустойчивость компонентов, таких как сервер «видео по требованию»,
достигается посредством их избыточности – репликации. При отказе
компонента в работу вступает его копия (реплика).